1

我知道这看起来像是一个重复的问题,但我的问题略有不同,并且已经发布的任何内容都没有帮助我。

我需要检测用户所在的城市。我目前只是使用一些第三方 API 将用户的 IP 编码为城市名称。但这确实不准确(考虑我的国家尼泊尔,几乎所有地方都显示为首都)。

我尝试使用 HTML5 的地理位置 API,但这只是给了我用户的地理坐标。我尝试使用 Google 的地理编码 API,但没有得到一致的结果格式(可能是因为不同国家/地区的地址写入方式不同)。我的意思是在生成的 JSON 对象中,对于美国的地址,第五个对象给出了城市名称,而对于英国的地址,它是第四个对象,而印度的地址则是其他对象。

例如,

http://maps.googleapis.com/maps/api/geocode/json?latlng=51.441944,%20-0.945556&sensor=true

对比

http://maps.googleapis.com/maps/api/geocode/json?latlng=42.155101995,-71.10080&sensor=true

这种不一致使我的代码很难从结果 JSON 中解析城市名称。

如何从坐标中获取城市的评论中提出了同样的问题?但没有解决办法。

理想情况下,我希望以某种方式将用户的地理坐标映射到他/她的城市名称(如何?)并仅使用基于 IP 的检测作为后备。但是,我为坐标到名称映射(Google API)找到的唯一解决方案不适用于我的情况。

谢谢!

4

1 回答 1

1

我认为您正在以一个无效的假设进入这个问题:所有地理坐标都以城市为界。您可以做的最好的事情是更大的行政区域(例如,一个省)。

在解析 Google Maps API 的地理编码响应时:types键包含适用于相应值的地址组件数组。这些类型在Geocoding API“类型”部分中得到了很好的定义。此外,这些类型是通用的,不会因国家而异。

您需要替换适当的后备,但它看起来像是locality您要引用的类型。在坐标不受城市约束的情况下,administrative_area_level_2可能是次优参考值。

于 2014-02-04T03:55:09.983 回答