如何限制Google地理编码API的地理编码请求仅返回特定国家/地区的城市和拉链

时间:2014-03-11 10:05:26

标签: javascript google-maps google-geocoder

我想用搜索输入构建地图。用户应该能够使用该输入搜索zip或城市。 Google Geocoding APIGeocoder的Javascript API参考中没有详细记录这一点。

我尝试使用地理编码功能,如下所示:

geocode({ address: inputValue })

但这会在全世界产生结果。

然后我使用了区域和界限:

geocode({ address: this.value, region: 'XX', bounds: myCountryBounds })

这仍将给出整个世界的结果。 (我在其中一个文档页面上看到regionbounds仅提供信息且没有严格限制,但我找不到该页面。)

然后我只使用componentRestrictions

geocode({ address: this.value, componentRestrictions: { country: 'XX' })

现在,我只在国家XX中提供结果。但它也给了我街道和公司名称。

现在我希望搜索仅匹配拉链和城市。因为如果我搜索2000,我发现很多公司名称的名字都有2000。那么如何确保搜索仅在拉链和城市名称中执行?

2 个答案:

答案 0 :(得分:0)

作为地理编码器的替代方案,使用places API可以实现相同的最终目标(需要API密钥)。如果您需要特定于地理编码API和地理编码器库的内容,我深表歉意。 (我回答这个替代方案的原因是因为我努力达到完全相同并且真的被困住了)。

<小时/> TL-DR;替代解决方案:

0。)获取&#34;地点&#34; Api键 https://code.google.com/apis/console

1。)提出仅返回高级别地区(城市)的请求 Google Maps places API to only return cities?

2A。) 您可以通过发出请求来跟进&#34;地点详细信息api&#34;使用第一个请求中返回的引用。那将返回lat / long。 https://developers.google.com/places/documentation/details#PlaceDetailsRequests

图2b)。 或者使用形状很好的城市,乡村和#34;从第1部分到查询地理编码器api并得到你的lat / long,以节省场所API调用。我不确定为什么&#34; type =(regions)&#34;在地理编码API上不可用,但它会有所帮助(或者我可能错过了它)。


此方法允许文本或邮政编码搜索,并返回纬度/经度以及地址详细信息。我还发现使用带有地点api的组件过滤器比使用地理编码api产生了更好的结果。您可以使用经过验证的帐户免费使用此服务,每天最多100,000次请求。

ex。)需要API密钥
1.)https://maps.googleapis.com/maps/api/place/autocomplete/json?input=va&sensor=false&types=(regions)&key=YOUR_API_KEY

2b。)https://maps.googleapis.com/maps/api/place/details/json?reference=CjQtAAAA7uEa6LT_DWvJ-erYl51zOqxcDHT9DMzo6LIQLRIF-g0HekbODavL5hHDleYSioGYEhCULLbxKZBlYZXs-I-EWkGQGhRiXW7LMokjjTp7WZjXE02wNzHkzQ&sensor=false&key=YOUR_API_KEY

答案 1 :(得分:0)

我已经添加了“城市”这个词。在执行地理编码请求时搜索短语似乎正常工作