Могу ли я узнать, находится ли координата внутри города? - PullRequest
6 голосов
/ 07 июня 2011

Допустим, у меня есть объект LatLng, есть ли способ проверить, представляет ли он возможное местоположение в городе? Как я могу получить пределы города? Я использую Google Map V3.

Ответы [ 3 ]

8 голосов
/ 07 июня 2011

Вы пробовали обратное геокодирование?

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);
        }
    });
}
4 голосов
/ 07 июня 2011

Городские границы и другие муниципалитеты постоянно перерисовываются.Существуют определенные службы, которые помогут вам их найти, но я не уверен, что Google хранит данные о городских границах в своих данных для карт Google. Здесь обсуждается в группах Google.Фрагмент этого сайта:

В зависимости от того, где вы находитесь в мире, городские границы и другие административные границы ПОСТОЯННО меняются, и местным органам власти даже иногда бывает сложно поддерживать актуальность своих данных из-за аннексийи другие изменения.Кроме того, «город» может быть чем-то относительно небольшим или размером с Шанхай.Кроме того, разные страны могут также иногда иметь противоречивые определения, какая административная единица является фактическим определением - хороший пример - Китай.Вероятно, ваш лучший подход - это получить ваши данные от местного правительства или поставщика данных и создать свои собственные.

2 голосов
/ 07 июня 2011

Вы можете использовать обратное геокодирование в Google Geocoder API и проверять locality записи и, возможно, sublocality записи возвращаемых результатов.http://code.google.com/apis/maps/documentation/geocoding/#Types

Обратите внимание, что это, вероятно, не будет работать так хорошо, если у вас есть адреса по всему миру и вы хотите знать "В каком городе находится этот LatLng?"С другой стороны, это, вероятно, будет работать достаточно хорошо, если вы хотите знать, "Это LatLng в Чикаго?"Есть области мира, где данные достаточно полны и разумны, и области, где они неполны и / или организованы так, как вы этого не ожидаете.(По-видимому, Великобритания использует «графство» и «штат», например, совершенно иначе, чем США. Даже если я ошибаюсь, вы понимаете.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...