Google Maps JS API地理编码器类的结果不正确

时间:2017-05-05 20:18:54

标签: google-maps google-maps-api-3 google-geocoder

我遇到了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。

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

或者我使用的代码不正确?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

请查看此文档,该文档说明了组件过滤在新版本中的工作原理:

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

  

在新的地理编码器中,仅对地址级结果完全支持组件过滤。部分支持国家/地区代码(例如,组件=国家/地区:GB)以及地方和更高级别结果的邮政编码限制。