假设我有一个LatLng对象,有没有办法检查它是否代表城市中的可能位置?我怎样才能获得城市的极限? 我正在使用Google Map V3。
答案 0 :(得分:8)
您是否尝试过反向地理编码?
http://code.google.com/apis/maps/documentation/javascript/services.html#ReverseGeocoding
您可以检查格式化的地址,看看这个城市是否符合您的要求。我不确定这对你的应用程序有多准确,但它是一个选项。
function codeLatLng() {
var geocoder = new google.maps.Geocoder(),
latlng = new google.maps.LatLng(40.730885, -73.997383);
geocoder.geocode({ 'latLng': latlng }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
console.log(results[1]);
console.log(results[1].formatted_address);
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
答案 1 :(得分:4)
城市范围和其他城市不断重新绘制。有一些服务可以帮助您找到它们,但我不肯定Google会在Google地图的数据中记录城市限制。 Here是Google群组中有关它的讨论。该网站的摘录:
取决于您在世界上的位置,城市限制等 行政边界经常被改变,甚至是平等的 有时地方政府难以保持其数据的最新状态 因为兼并和其他变化。此外,'城市'可能是 相对较小或相当大的上海。另外,不同 国家有时也可能有相互矛盾的定义 行政单位是实际的定义 - 一个很好的例子 中国。您最好的方法可能是从本地获取数据 政府或数据供应商并建立自己的。
答案 2 :(得分:2)
您可以在Google Geocoder API中使用反向地理编码,并检查返回结果的locality
条目和sublocality
条目。 http://code.google.com/apis/maps/documentation/geocoding/#Types
请注意,如果您在世界各地都有地址并想知道“这个LatLng在哪个城市?”,这可能不会那么好用。另一方面,如果你想知道“这是芝加哥的LatLng吗?”它可能会运作得相当好。世界上有些地区的数据相当完整和合理,而且有些地方不完整和/或以您可能没想到的方式进行组织。 (显然,英国使用的“县”和“州”与美国截然不同。即使我错了,你也明白了。)