我不是编码员或程序员,但我已经雇了一个人来帮我做这件事。当谈到计算机功能时,我也不是完全天真......
开发人员告诉我,不可能在谷歌地图 API 中反转地理编码并使其准确返回正确的城市。我不相信这一点,因为我看到 api 返回一个格式化的地址,其中包含城市。开发人员表示,他们只能从 API 中提取一个字段,并且由于城市名称位于位置字段或邻里字段中,因此他们无法确定不同坐标使用哪个字段。这些是真实的陈述吗?
我还被告知,当坐标存在于水面上(主要是在海洋中)时,对最近的城市进行反向地理编码是不可能的。例如,圣地亚哥正西 5 英里的坐标是否不可能将圣地亚哥返回为最近的城市?
我在这里搜索了解决方案,发现了一些与此相关的解决方案,我已将其转发给开发人员......但我希望将这个确切的线程也展示给他们。这些事情对于 Google Maps API 真的不可能吗?
感谢您的帮助!
最佳答案
在本文档中查找 reverse geocoding在 Google Maps JavaScript API 中,了解如何将坐标转换为可读地址的详细说明。
你的第一个陈述是正确的:
如有必要,您可以从地理编码器结果中的数组中读取所有字段。如果 address_components
数组在 types
中有一个元素 locality
,则城市名称是其中的一部分。但不保证总是包含此元素或所需的元素。查看上面链接中类型的层次结构,这可能是响应的一部分。当你说你必须搜索元素 neighborhood
和 locality
时,在我看来你想强制使用一个特定的名称。这几乎是不可能确定的。
第二个陈述,关于最近的城市是正确的。以下是文档中的声明:
Reverse geocoding is not an exact science. The geocoder will attempt to find the closest addressable location within a certain tolerance.
没有说明这种容忍的程度。您的圣地亚哥以西 5 英里的示例可以返回有关圣地亚哥、北太平洋或位于圣地亚哥县的科罗纳多的数据。
相信您的开发人员!
编辑:这取决于你想做什么。如果您总是想在请求中包含城市名称,请忘记它,您无法保证这一点。
此 answer 中描述了一些邮政编码 API 。但同样,您必须以某种方式获取邮政编码,并且 postal_code
并不总是响应的一部分。没有其他 API(例如地理编码 API)可以将坐标转换为可读地址。但有一些列出了 here .
关于google-maps - 使用 Google map API 的最近城市,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23799464/