2017-05-05 32 views
0

我在使用componentRestrictions时遇到了Google Maps JavaScript API的地理编码器类及其返回结果的问题。Google地图JS API地理编码器类的结果不正确

简而言之,我试图让用户输入一个地址并在特定的地点找到该地址。

我将一个字符串作为地址传递给地理编码对象文字。

然后,我使用componentRestrictions中的locality属性将搜索限制为仅“纽约”城市。

所以我的代码如下所示:

geocoder.geocode(
    {address: address, 
    componentRestrictions: { 
     locality: 'New York' 
    } 
    }, function(results, status) { 
    console.log(results); 
    } 
); 

当通过一个特定的地址,如'E 64th St & 5th Ave',它返回中央公园动物园的位置的正确的结果。

但是,如果我使用更隐晦的地址,如'East Village',则返回纽约市政厅所在位置的结果。

如果我删除componentRestrictions属性,并传递与'East Village'相同的地址,它将返回East Village的正确位置。

是什么让这个陌生人是我使用谷歌开发人员教导的course through Udacity中提供的代码。他们的代码可以在here on GitHub找到。

当我完全按照他们提供的代码运行他们的代码时,我遇到了与我自己的代码相同的问题。

但在他们的课程视频中,它正常工作。

看来有些API自创建本课程以来可能已经发生变化,所以有可能我错误地使用了componentRestrictions。

有没有人遇到过这样的问题,并找到了解决方案?

还是我错误地使用了代码?

感谢您的帮助!

回答

1

谷歌已于2016年11月发布了新版本的地理编码器。新版本并未完全支持地址组件。

在此文件,说明该组件过滤在新版本中是如何工作的请看:

https://developers.google.com/maps/documentation/geocoding/faq#trbl_component_filtering

在新的地理编码器,分量滤波只完全支持地址级的效果。部分支持国家代码(例如,组件=国家/地区)和对地区和更高级别结果的邮政编码限制。

+0

谢谢@ xomena,这绝对是问题。谢谢! –

相关问题