我不是编码员或程序员,但是我聘请了某人为我这样做。在计算机功能方面,我也不是完全天真......
开发人员告诉我,谷歌地图api无法反转地理编码,并准确返回正确的城市。我不相信这一点,因为我看到api返回一个带有城市的格式化地址。开发人员说他们只能从API中提取一个字段,并且因为城市名称位于地点字段或邻域字段中,所以他们无法确定哪个字段用于不同的坐标。这些是真实的陈述吗?
我也被告知,当坐标存在水面(主要是在海洋中)时,最近城市的反向地理编码是不可能的。例如,圣迭戈以西5英里的坐标是否真的不可能让圣地亚哥成为最近的城市?
我在这里搜索了解决方案并发现了一些与此相关的内容,我已将其转发给开发人员......但我希望能够采用这个确切的主题并向他们展示。使用Google Maps API,这些事情真的不可能吗?
感谢您的帮助!
答案 0 :(得分:8)
在Google Maps JavaScript API中查看此文档中的reverse geocoding,了解如何在可读地址中转换坐标的详细说明。
你的第一个陈述是真的:
如有必要,您可以在Geocoder的结果中读取阵列中的所有字段。如果address_components
数组在locality
中包含元素types
,则城市名称就是其中的一部分。但它的 NOT 保证始终存在此元素或所需元素。看看上面链接中类型的层次结构,这可能是响应的一部分。当你说你必须搜索元素neighborhood
和locality
时,我觉得你想强制一个特定的名字。这几乎是不可能确定的。
第二个状态,关于最近的城市是真的。以下是文档中的声明:
反向地理编码不是一门精确的科学。地理编码器将尝试 找到一定容差范围内最近的可寻址位置。
没有任何关于这种宽容的维度的陈述。您在圣地亚哥以西5英里处的示例可以返回圣地亚哥,北太平洋或圣地亚哥县科罗纳多的数据。
相信你的开发者!
编辑:这取决于你想做什么。如果您总是希望在您的请求中使用城市名称,请忘记它,但您无法保证。
此answer中介绍了一些zipcode API。但同样,你必须以某种方式得到Zipcode,而postal_code
并不总是响应的一部分。没有其他API,如地理编码可以将坐标转换为可读地址的API。但有一些列出了here。
答案 1 :(得分:0)
有可能达到你想要的效果。我想大多数人都试图让谷歌为他们做这项工作,这就是找到解决方案的原因。
你想要最近的城市。您需要做的就是查询坐标。如果存在地址类型“locality”,那就是您的城市。如果没有,请为附近的点发出新请求并重复,直到找到具有“位置”的结果。
根据您用来搜索初始点的算法,您可以调整准确性以及找到答案所需的请求数量。