我正在为我的公司开发一个运输系统,用户输入(连同一堆其他信息)需要运送到的目的地。我们要迁移的系统只是将此信息用作静态文本,因此人们会输入速记地址,例如“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参数。这给了我范围内的所有地址在搜索时的优惠待遇。