我可以找出一个坐标是否在城市内?

时间:2011-06-07 17:02:02

标签: google-maps-api-3

假设我有一个LatLng对象,有没有办法检查它是否代表城市中的可能位置?我怎样才能获得城市的极限? 我正在使用Google Map V3。

3 个答案:

答案 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吗?”它可能会运作得相当好。世界上有些地区的数据相当完整和合理,而且有些地方不完整和/或以您可能没想到的方式进行组织。 (显然,英国使用的“县”和“州”与美国截然不同。即使我错了,你也明白了。)