针对IN(印度)和CA(加拿大)的国家/地区alpha2代码的Google Map API地理编码错误

时间:2014-11-24 14:29:17

标签: api map

我有一个使用谷歌地图API的应用程序通过他们的alpha2代码在地图上显示国家,但我遇到了In(印度)和CA(加拿大)的问题。代码如下:

function codeAddress() {
  var address = document.getElementById('address').value;
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
      map.setCenter(results[0].geometry.location);
      var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location
      });
    } else {
      alert('Geocode was not successful for the following reason: ' + status);
    }
  });
}

上述函数中的地址变量可以采用国家/地区的全名(印度,加拿大),但我的应用程序会提供alpha2代码。我的临时解决方案是硬编码' IN'和' CA'在上述功能中,但我想知道是否有更好的策略。

1 个答案:

答案 0 :(得分:0)

通过阅读Google Map API,我发现API存在区域偏差。默认情况下,它对发送请求的位置有偏差。例如,如果您来自美国并且查询“IN”,因为区域偏见是美国,Google Map将首先尝试找到“IN”,恰好是印第安纳州。

我也开始知道有两种方法可以通过以下方式来覆盖区域偏差:

  1. 将'region'参数设置为:{'address' : address, 'region': 'cn'}; //将区域偏差设置为中国

  2. 使用componentRestrictions选项。