Javascript Jquery脚本中的Google区域偏差
目前我似乎无法正确理解这一点,谷歌在这里谈到了地区总部: 它使用以下参数:Javascript Jquery脚本中的Google区域偏差,javascript,jquery,google-maps-api-3,Javascript,Jquery,Google Maps Api 3,目前我似乎无法正确理解这一点,谷歌在这里谈到了地区总部: 它使用以下参数: region: 这是我正在使用的代码: 我的问题是如何将变量“ctryiso”传递给脚本中的这个参数?当我尝试时,一切都没有改变,所以当CtrySo设置为US并且我在伦敦键入时,它仍然是英格兰伦敦的地理代码。我听说它可能有点不可靠,但我仍然不认为我的实现是正确的。通常情况下,您有: geocoder.geocode({ address: query } 您应该像那样通过区域(正如您已经提到的): 它应该会起
region:
这是我正在使用的代码:
我的问题是如何将变量“ctryiso”传递给脚本中的这个参数?当我尝试时,一切都没有改变,所以当CtrySo设置为US并且我在伦敦键入时,它仍然是英格兰伦敦的地理代码。我听说它可能有点不可靠,但我仍然不认为我的实现是正确的。通常情况下,您有:
geocoder.geocode({
address: query
}
您应该像那样通过区域
(正如您已经提到的):
它应该会起作用,尽管。。。似乎不是这样,越来越多的人有同样的问题
(丑陋的)解决方案是将其添加到地址,如下所示:
geocoder.geocode({
address: query + ', ' + SOME_VARIABLE_WITH_REGION_CODE
}
我刚刚对它进行了测试,它是有效的,但正如我所说的——这不是一种“好的”也不是正确的方法——它只是一种变通方法
我们可以在这里看到:
您可以传递地址
,边界
,位置
和区域
。由于区域似乎不起作用,我会尝试使用bounds
,首先获取所需区域的坐标:
- 当您执行以下操作时,可以尝试将区域参数添加为查询字符串
加载GoogleMapAPI,尽管默认情况下它应该是UShttps://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false®ion=US
- 您还可以在传递给地理编码器的地址后附加“、USA”—— 这确实很管用,但很难看
- 您还可以返回所有结果并对其进行解析,然后仅显示 在相关国家的人。在大多数情况下,你会 无论如何,我们都必须这样做,因为有多个地点有 在大多数国家都有相同的名字。。。。这是首选方法 就像有人在美国伦敦打字一样,你会得到伦敦、肯塔基和纽约 伦敦,哦,用户/你仍然需要决定它是哪一个 他们想要
区域
,以偏向(而非限制)结果
然而,在这个特殊的案例中,英国的伦敦仍然被认为是比美国的伦敦更好的结果。因此,您可以使用GeocoderComponentRestrictions
对结果进行额外限制(vs bias),如中所述
我已经通过要求结果在美国显示了这种类型的过滤
您会注意到结果是在美国伦敦,但是如果您从fiddle代码中删除GeocoderComponentRestrictions
,第一个结果现在是在伦敦,尽管存在区域偏见
然而,需要注意的是,偏置确实有效。例如,如果您现在将区域更改为“ES”,将地址更改为“Toledo”,则结果是在西班牙。如果删除偏差,则默认为Toledo USA
tl;dr使用
区域
进行偏差,使用地理编码组件限制
进行限制。您的小提琴打开了,仅供参考:我无法访问(HTTPS)-但可以访问(HTTP)如果我只键入“伦敦”,我可以获得英国伦敦的坐标。但是所有的建议都是针对美国地区的。修复了我的JSFIDLE,谢谢。我想让它成为偏见,所以如果我在代码中使用我的偏见,它不应该返回英国伦敦。如果((ctrysio!=“”)和((ctrysio!=null)和((ctrysio!=“未定义”))希望您的代码也能使用此功能将地区代码添加到您的地址查询中通常是可行的,但是限制到某个国家(vs bias)的更好方法是使用地理代码组件限制(有关详细信息,请参阅我的回答)。
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
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