使用Google Maps API的最近城市

时间:2014-05-22 06:37:06

标签: google-maps google-maps-api-3

我不是编码员或程序员,但是我聘请了某人为我这样做。在计算机功能方面,我也不是完全天真......

开发人员告诉我,谷歌地图api无法反转地理编码,并准确返回正确的城市。我不相信这一点,因为我看到api返回一个带有城市的格式化地址。开发人员说他们只能从API中提取一个字段,并且因为城市名称位于地点字段或邻域字段中,所以他们无法确定哪个字段用于不同的坐标。这些是真实的陈述吗?

我也被告知,当坐标存在水面(主要是在海洋中)时,最近城市的反向地理编码是不可能的。例如,圣迭戈以西5英里的坐标是否真的不可能让圣地亚哥成为最近的城市?

我在这里搜索了解决方案并发现了一些与此相关的内容,我已将其转发给开发人员......但我希望能够采用这个确切的主题并向他们展示。使用Google Maps API,这些事情真的不可能吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:8)

在Google Maps JavaScript API中查看此文档中的reverse geocoding,了解如何在可读地址中转换坐标的详细说明。

你的第一个陈述是真的:

如有必要,您可以在Geocoder的结果中读取阵列中的所有字段。如果address_components数组在locality中包含元素types,则城市名称就是其中的一部分。但它的 NOT 保证始终存在此元素或所需元素。看看上面链接中类型的层次结构,这可能是响应的一部分。当你说你必须搜索元素neighborhoodlocality时,我觉得你想强制一个特定的名字。这几乎是不可能确定的。

第二个状态,关于最近的城市是真的。以下是文档中的声明:

  

反向地理编码不是一门精确的科学。地理编码器将尝试   找到一定容差范围内最近的可寻址位置。

没有任何关于这种宽容的维度的陈述。您在圣地亚哥以西5英里处的示例可以返回圣地亚哥,北太平洋或圣地亚哥县科罗纳多的数据。

相信你的开发者!

编辑:这取决于你想做什么。如果您总是希望在您的请求中使用城市名称,请忘记它,但您无法保证。

answer中介绍了一些zipcode API。但同样,你必须以某种方式得到Zipcode,而postal_code并不总是响应的一部分。没有其他API,如地理编码可以将坐标转换为可读地址的API。但有一些列出了here

答案 1 :(得分:0)

有可能达到你想要的效果。我想大多数人都试图让谷歌为他们做这项工作,这就是找到解决方案的原因。

你想要最近的城市。您需要做的就是查询坐标。如果存在地址类型“locality”,那就是您的城市。如果没有,请为附近的点发出新请求并重复,直到找到具有“位置”的结果。

根据您用来搜索初始点的算法,您可以调整准确性以及找到答案所需的请求数量。