2011-10-28 92 views
0

我正在为我公司的送货系统工作,用户输入(以及其他一些信息)目的地需要运送某物。我们正在迁移的系统仅将这些信息用作静态文本,因此用户可以输入速记地址,例如“Alsip 60801”。Google Maps API:正在搜索

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

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

例如,当我在maps.google.com上搜索“Alsip 60801”时,我得到Alsip, IL 60801.这是正确的。但是当我使用Google Maps API进行搜索时,我获得了some Alsip up in Canada.

我应该使用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参数,而不是在地址末尾添加国家代码。这样可以在我的范围内为所有地址提供优惠待遇,因为它正在搜索。

+0

也许你的国旗离开了吗? – Bytemain

+0

@Jitamaro试过了。更新了问题以包含该位信息。 – jwegner

回答