使用Google Maps API查找最近的城市

6
我不是一个编码员或程序员,但我已经雇佣了人来为我做这个。当涉及到计算机能力时,我也不完全幼稚...
开发人员告诉我,在谷歌地图API中进行反向地理编码并准确返回正确城市是不可能的。我不相信这一点,因为我看到API返回一个格式化的带有城市的地址。开发人员说他们只能从API中提取一个字段,并且因为城市名称位于本地字段或街区字段中,所以他们无法确定应该使用哪个字段表示不同的坐标。这些说法是否属实?
我还被告知,当存在坐标在水上(大多数在海洋中)时,最近城市的反向地理编码是不可能的。例如,直接位于圣迭戈西部5英里处的坐标是否不可能返回最近的城市为圣迭戈?
我在这里搜索了解决方案,并找到了一些相关的内容,我已将其转发给开发人员...但我希望把这个完整的线程展示给他们。这些事情在Google Maps API中真的不可能吗?
感谢您的帮助!

3
点击水滴图标并查看地理编码结果。 - Dr.Molle
@Dr.Molle,在水上它没有返回任何结果。 - user3663613
2个回答

10
在Google Maps JavaScript API中查找反向地理编码,以获取如何将坐标转换为可读地址的详细说明。
你的第一句话有点正确:
如果需要,可以从Geocoder结果中读取数组中的所有字段。如果address_components数组在types中有一个元素locality,则城市名称是其中的一部分。但不能保证始终存在该元素或所需元素。请参阅上面链接中的类型层次结构,它可能是响应的一部分。当你说必须搜索neighborhoodlocality元素时,我觉得你想要强制指定名称。这几乎不可能确定。
关于最近的城市的第二个声明是正确的。以下是文档中的一句话:

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

关于这种公差的尺寸没有明确说明。你提到的“圣迭戈以西5英里”的例子可能返回有关圣迭戈、北太平洋或位于圣迭戈县的科罗纳多的数据。

相信你的开发者!

编辑:这取决于你想做什么。如果你总是想在请求中包含城市名称,那就算了,你无法保证这一点。

这里有一些邮政编码API,可以在answer中找到相关描述。但同样需要获得邮政编码,而postal_code并不总是响应的一部分。除了可以将坐标转换为可读地址的地理编码API之外,没有其他类似的API。但here列出了一些。


那么在Google Maps API中没有办法获取一个标记点所在的城市吗?这对我来说似乎是不可能的,但当有多个人告诉我某件事时,我很难相信,我倾向于更加开放的态度。那么是否有其他替代方案呢?例如邮政编码查找或者其他API? - user3663613

0

你想要的是可以实现的。我认为大多数人都试图让谷歌为他们完成工作,这就是为什么很难找到解决方案的原因。

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

根据你用来搜索初始点周围的算法,你可以调整准确度和需要找到答案的请求数量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接