0

我有一个谷歌地图应用程序,用户可以在其中按国家、州、城市或街道地址进行搜索。用户可能在世界任何地方,他们可能在世界其他任何地方搜索,而不仅仅是在他们自己的国家内。

我需要地理编码器有一个偏差,这样如果输入一个州(没有国家),它会地理编码到该州而不是同名的城市。我们的应用程序首先优先考虑国家,然后是州,然后是城市等……但是地理编码器并没有这样做。

例如。我想搜索澳大利亚境内的一个州“维多利亚”。 http://maps.googleapis.com/maps/api/geocode/json?address=victoria显示加拿大不列颠哥伦比亚省维多利亚。 http://maps.googleapis.com/maps/api/geocode/json?address=victoria®ion=au显示了澳大利亚的维多利亚州,但是我不能包括该地区,因为我的用户可能在世界任何地方,所以我没有办法知道他们正在搜索哪个区域。

我查看了“管理级别”和“类型”,但我找不到适合我的需求的解决方案,即按国家 > 州 > 城市的顺序进行优先级排序。

我理想地想要这样的东西:maps.googleapis.com/maps/api/geocode/json?address=victoria&components=administrative_area: WILDCARD

或者

maps.googleapis.com/maps/api/geocode/json?address=victoria&types=administrative_area_level_1

当然,这些解决方案都不起作用,但我希望它们能说明我正在努力实现的目标。

有什么建议么?

谢谢,

妮可

4

1 回答 1

0

您可以在不指定地址的情况下进行查询,使用

...?components=administrative_area:victoria 

然后遍历 results.address_components 以挑选出类型包括 Administrative_area_level_1 的那些

更新:我注意到根据提供给管理区域的搜索词,谷歌正在使用某种启发式方法来确定结果的确定性。如果有明确的获胜者,则仅显示 1 个结果。如果一组位置的匹配相似,那么您将获得多个位置。因此,当有多个结果时,您可以选择更高或更低的管理区域级别以满足您的需求。

于 2014-10-25T09:25:06.363 回答