Jquery Scripting中的Google Region偏向

时间:2013-06-22 19:15:01

标签: javascript jquery google-maps-api-3

目前我似乎无法做到这一点,谷歌在这里讨论区域:

https://developers.google.com/maps/documentation/geocoding/#RegionCodes

它使用以下参数:

region:

这是我正在使用的代码:http://jsfiddle.net/spadez/Jfdbz/19/

我的问题是如何在我的脚本中将变量“ctryiso”传递给此参数?当我尝试时,没有任何变化,所以当ctryiso设置为美国并且我在伦敦输入时它仍然对英国伦敦进行地理编码。我听说它可能有点不可靠,但我仍然不认为我的实现是正确的。

4 个答案:

答案 0 :(得分:2)

通常在哪里:

geocoder.geocode({
    address: query
}

你应该像那样传递region(如你所说):

geocoder.geocode({
    address: query,
    region: SOME_VARIABLE_WITH_REGION_CODE
}

它应该有用,虽然......似乎不是,而且有更多人遇到同样的问题。

(丑陋)解决方案是将其添加到地址,如下所示:

geocoder.geocode({
    address: query + ', ' + SOME_VARIABLE_WITH_REGION_CODE
}

我刚刚测试了它并且它有效,但正如我所说 - 这不是“好”并不是正确的方法 - 它只是解决方法。

我们在这里可以看到: https://developers.google.com/maps/documentation/javascript/reference?hl=th-TH&csw=1#GeocoderRequest

您可以传递addressboundslocationregion。由于区域似乎不起作用,我首先尝试使用bounds获取所需区域的坐标:

https://developers.google.com/maps/documentation/javascript/reference?hl=th-TH&csw=1#LatLngBounds

答案 1 :(得分:0)

  • 您可以尝试将region参数添加为查询字符串 加载谷歌地图API,虽然默认情况下它应该是美国

      https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&region=US
    
  • 您还可以追加",USA"到您传递给地理编码器的地址 - 这很有效,但很难看。

  • 您还可以返回所有结果并解析它们并仅显示 那些在感兴趣的国家。在大多数情况下,你会 无论如何必须这样做,因为有多个位置 在大多数国家/地区同名....这是首选方法 好像有人在美国伦敦打字,你会得到伦敦,肯塔基州和肯塔基州 伦敦,OH和用户/您仍然需要决定它是哪一个 他们想要......

答案 2 :(得分:0)

如另一个答案中所述,您可以在地理编码请求中加入region来偏倚(不限制)结果。

然而,在这个特殊情况下,英国的伦敦仍被视为比美国伦敦更好的结果。因此,您可以使用Geocoding Service docs

中所述GeocoderComponentRestrictions来限制(与偏见)结果

我已经通过要求结果在美国,显示了这种类型的过滤fiddle

你会注意到结果是在美国伦敦,但是如果从小提琴代码中删除GeocoderComponentRestrictions,那么第一个结果现在在伦敦,尽管区域存在偏差。

然而,注意偏差确实有效仍然很重要。例如,如果您现在将区域更改为“ES”并将地址更改为“Toledo”,则结果将在西班牙。如果删除偏差,则默认为Toledo USA。

tl; dr使用region来偏见,GeocoderComponentRestrictions来限制。

答案 3 :(得分:0)

function getLatLong(address){
      var geo = new google.maps.Geocoder;

      geo.geocode({'address':address},function(results, status){
              if (status == google.maps.GeocoderStatus.OK) {
                return results[0].geometry.location;
              } else {
                alert("Geocode was not successful for the following reason: " + status);
              }

       });

  }
     I am unable to understand your exact need but, I hope it will help you and if not then please tell me your exact need in short way