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

Gab*_*vay 5 javascript google-maps google-geocoder

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

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

geocode({ address: inputValue })
Run Code Online (Sandbox Code Playgroud)

但这将在全世界取得成果.

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

geocode({ address: this.value, region: 'XX', bounds: myCountryBounds })
Run Code Online (Sandbox Code Playgroud)

这仍然会给整个世界带来结果.(我读的文档页面的之一region,并bounds是唯一的信息,而不是严格限制的,但我不能再找到该网页.)

然后我只用了componentRestrictions:

geocode({ address: this.value, componentRestrictions: { country: 'XX' })
Run Code Online (Sandbox Code Playgroud)

这现在只给我国家的结果XX.但它也给了我街道和公司的名字.

现在我希望搜索只匹配拉链和城市.因为如果我搜索,2000我会找到许多名字中的公司2000名称.那么如何确保搜索仅在拉链和城市名称中执行?

Zac*_*sky 0

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


TL-DR;替代解决方案:

0.) 获取“places”Api 密钥 https://code.google.com/apis/console

1.) 发出仅返回高级别区域(城市)的请求。
谷歌地图API只返回城市?

2a.) 您可以使用第一个请求中返回的引用通过“地点详细信息 api”发出请求来跟进。然后将返回纬度/经度。 https://developers.google.com/places/documentation/details#PlaceDetailsRequests

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


此方法允许进行文本或邮政编码搜索,并返回纬度/经度以及地址详细信息。我还发现,将组件过滤器与地方 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-EW ​​kGQGhRiXW7LMokjjTp7WZj XE02wNzHkzQ&sensor=false&key=YOUR_API_KEY