如何限制谷歌地理编码API的地理编码请求,仅返回特定国家/地区的城市和邮政编码?

6
我希望建立一个带有搜索输入框的地图,用户可以使用该输入框搜索邮编或城市。但是在Google Geocoding APIGeocoder 的JavaScript API参考文献中,似乎没有很好的相关文档记录。
我尝试使用如下的geocode函数:
geocode({ address: inputValue })

但这将返回全球的结果。

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

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

这仍将给出来自整个世界的结果。(我在其中一篇文档页面上读到regionbounds只是信息性限制而不是严格限制,但我无法再找到该页面。)
然后我只使用了componentRestrictions:
geocode({ address: this.value, componentRestrictions: { country: 'XX' })

现在这个搜索只会在国家 XX 中返回结果,但它也会给出街道和公司名称。

现在我想让搜索只匹配邮编和城市。因为如果我搜索 2000,我会找到很多公司名称中带有2000的结果。那么如何确保搜索仅在邮编和城市名称中执行?


我在下面添加了一个解决方案,它应该能够满足您的需求,但它并不严格使用地理编码器。关键是第一步中的stackoverflow链接。 - Zachary Moshansky
2个回答

0

除了使用地理编码器,使用地点 API 也可以达到相同的目标(需要 API 密钥)。如果您需要与地理编码 API 和地理编码器库相关的特定内容,我深感抱歉。之所以提供此替代方案,是因为我正在努力实现完全一致的效果并且受阻于此。


简洁版:备选解决方案:

0.) 获取“地点”API 密钥 https://code.google.com/apis/console

1.) 发出一个只返回高级区域(城市)的请求。
Google Maps places API to only return cities?

2a.) 接着,您可以使用第一个请求返回的参考发出一个“地点详情 API”的请求。这将会返回纬度/经度。 https://developers.google.com/places/documentation/details#PlaceDetailsRequests

2b.) 或者使用第一部分中美好格式的“城市,国家”来查询地理编码器API并获得您的纬度/经度,从而节省地点API调用。我不确定为什么地理编码API上没有“type =(regions)”,但它会有所帮助(也许我错过了)。


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

例如需要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


0

在进行地理编码请求时,我已将单词“城市”添加到搜索短语中,看起来它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接