我遇到了Google Maps Javascript API的Geocoder类的问题以及使用componentRestrictions
时返回的结果。
简而言之,我试图允许用户输入地址并在特定地区找到该地址。
我将一个String作为地址传递给地理编码对象文字。
然后,我使用locality
中的componentRestrictions
属性将搜索限制为仅限“纽约”城市。
所以我的代码看起来像这样:
geocoder.geocode(
{address: address,
componentRestrictions: {
locality: 'New York'
}
}, function(results, status) {
console.log(results);
}
);
传递特定地址(例如'E 64th St & 5th Ave'
)时,会返回中央公园动物园位置的正确结果。
但是,如果我对地址使用更加模糊的内容,例如'East Village'
,则会返回纽约市政厅位置的结果。
如果我删除componentRestrictions
媒体资源并传递与'East Village'
相同的地址,则会返回东村的正确位置。
这个陌生人的原因是我使用的是course through Udacity中提供的代码,由Google开发人员讲授。他们的代码可以找到here on GitHub。
当我完全按照提供的方式运行代码时,我会遇到与我自己的代码相同的问题。
但是在他们的课程视频中,它可以正常工作。
似乎有些API自创建此课程后可能已更改,因此我可能错误地使用了componentRestrictions。
有没有人遇到这样的问题并找到了解决方案?
或者我使用的代码不正确?
感谢您的帮助!
答案 0 :(得分:1)
Google于2016年11月发布了新版地理编码器。新版本并未完全支持地址组件。
请查看此文档,该文档说明了组件过滤在新版本中的工作原理:
https://developers.google.com/maps/documentation/geocoding/faq#trbl_component_filtering
在新的地理编码器中,仅对地址级结果完全支持组件过滤。部分支持国家/地区代码(例如,组件=国家/地区:GB)以及地方和更高级别结果的邮政编码限制。