0

我正在为我的公司开发一个运输系统,用户输入(连同一堆其他信息)需要运送到的目的地。我们要迁移的系统只是将此信息用作静态文本,因此人们会输入速记地址,例如“Alsip 60801”。

我最初的想法是这种速记文本可以完美地与 Google Maps API 配合使用,因为我可以在 maps.google.com 中输入速记内容,而且它通常可以工作。

因此,我编写了一些代码来在他们的速记输入上运行地理编码。令我意外的是,从地理编码搜索返回的结果与从 maps.google.com 返回的结果大不相同。

例如,当我在 maps.google.com 上搜索“Alsip 60801”时,我得到Alsip, IL 60801。 这是正确的。但是当我使用 Google Maps API 进行搜索时,我在加拿大找到了一些 Alsip。

我应该为 Google Maps API 使用其他搜索功能吗?还是我缺少的某种标志?

作为参考,这是我的代码的简短版本:

 var geocode = new google.maps.Geocoder();

 geocode.geocode( {'address': 'Alsip 60801' }, function(results, status) {
      console.log(results[0].geometry.location);
      //Outputs the LatLng of a Canada address
 });  

编辑1:我忘了提,我确实尝试在地理编码请求上设置区域。我把它设置给我们,得到了同样的结果。

更新 - 已回答:我将@Jitimaro 的答案标记为正确,因为将国家代码添加到结果末尾似乎确实有效。我不确定这是否适用于所有类型的输入(很难预测速记地址格式),但目前似乎可以正常工作。

但是,我实际上正在以不同的方式处理这个问题。实际上,我不是在地址末尾添加国家代码,而是在地理编码请求的末尾提供了一个LatLngBounds参数。这给了我范围内的所有地址在搜索时的优惠待遇。

4

1 回答 1

0

当您使用该网站进行搜索时,您应该会看到如下预览: http://maps.google.com/maps?q= Alsip+60801。当您搜索反向地理编码时,您必须解析结果以匹配您所在的国家/地区http://maps.googleapis.com/maps/geo?q=Alsip+60801。您可以使用网络嗅探器检查不同的 url。或者,您可以将国家/地区添加到您的网址http://maps.googleapis.com/maps/geo?q=Alsip+60801+USA

于 2011-10-28T20:22:03.463 回答