2

Так что у меня этот конкретный адрес: Rijtakker 22, Meijel, Нидерланды Это просто обычный адрес, который известен Google Maps, как показано на www.google.nl/maps/place/Rijtakker+22,+5768+Meijel/@51.3482599,5.8857767,17z/data=!3m1!4b1!4m5!3m4!1s0x47c7379f181928e7:0x2a2900b2927e2ebc!8m2!3d51.3482566!4d5.8879654?hl=nl.Google Maps обратного геокодирования не возвращает правильный/точный адрес

В одном из моих (ASP.NET) приложений я создал веб-пользовательский элемент управления, где пользователь вводит адрес в поле Google Maps-esque, он содержит предложения, делает автозаполнение и т. Д. Все довольно стандартные и основанные на стандартном поведении Google Maps API/образцах кода документации, показаны in this image. Когда пользователь выбирает адрес, на карте появляется один или несколько объектов Marker. Если применим только один маркер, позиция маркера (lat, lng) записывается в скрытое поле, если применяются несколько маркеров, позиция (lat, lng) щелчка маркера записывается в одно и то же скрытое поле. После PostBack WebRequest преобразуется в URL-адрес обратного геокодирования, чтобы получить всю информацию о адресе. Еще раз, все довольно стандартно. В случае вышеуказанного адреса, Лат и LNG возвращаемые значения в XML являются 51,3482464 и 5,8879746999999725

Первая странная вещь в том, что, когда я использую геокодирования URL, чтобы преобразовать адрес в широту и долготу, я получаю разные результаты, чем маркеры в моем элементе управления Google Карт. В ссылке maps.googleapis.com/maps/api/geocode/xml?address=Rijtakker%2022,%20Meijel,%20Netherlands возвращается

<location> 
    <lat>51.3482464</lat> 
    <lng>5.8879747</lng> 
</location> 

В любом случае, когда обратное геокодирование как долготы и широты значение возвращает диапазон адресов, или в Google точку зрения API маршрута, а не speficic street_address: Rijtakker 2-40 , 5768 Мейдель, Нидерланды. Вместо фактического правильного адреса. Я использую обратный URL-адрес геокодирования (maps.googleapis.com/maps/api/geocode/xml?latlng=51.3482464,5.8879746999999725 или maps.googleapis.com/maps/api/geocode/xml?latlng=51.3482464,5.8879747), или я использую примеры карт в документации API Карт Google (developers.google.com/maps/documentation/javascript/examples/geocoding-reverse)

Что я делаю неправильно? Есть ли какое-то ограничение в (обратном) процессе геокодирования, где не каждый адрес может быть точно преобразован?

+0

Получил еще один странный адрес: Zilleveld 7, Neeritter, Netherlands. Адрес известен в Картах Google, но по адресу http://maps.googleapis.com/maps/api/geocode/xml?address=Zilleveld+7,+Neeritter,+Netherlands возвращает маршрут, а не уличный адрес. Может быть, много адресов в API пока неизвестно? –

+0

Это может быть ситуация [partial_matches] (https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingResponses) partial_match указывает, что геокодер не вернул точное соответствие для исходного запроса, хотя он смог сопоставить часть запрошенного адреса. Вы можете изучить первоначальный запрос на орфографические ошибки и/или неполный адрес. Этот [поток] (http://gis.stackexchange.com/questions/80838/how-to-get-accurate-coordinates-from-google-geocoding-services) также может быть похож на ваше затруднительное положение. – noogui

+0

Правильность написания; в отношении пользовательского контроля также используются «предложения» (Google API). –

ответ

1

Это нормальное поведение для достижения результатов, которые RANGE_INTERPOLATED

видете-х geometry.location.type см Developer's Guide за то, что имею в виду его ценности. Короче говоря, в Google Maps нет здания/дома в Rijtakker, Meijel, но он имеет диапазон адресов (2-40) и способен интерполировать там, где обычно будет 22.

Геокодирование Rijtakker 2, Meijel и Rijtakker 40, Meijel, результаты в начале и конце улицы.

Напротив, 51.348165,5.887406 возвращает результат ROOFTOP.

Вы также можете получить RANGE_INTERPOLATED результат от обратного геокодирования, с точным адресом вместо диапазона адресов, и что точный адрес может геокодировать как RANGE_INTERPOLATED или ROOFTOP результат, если ваш LatLng ближе к диапазону адресов, чем к фактическое здание.

Пример: 51.347234,5.886687 возвращает «Startebosweg 4, 5768 Мейел», который затем geocodes as a ROOFTOP result, и это местоположение 51.348299,5.886218 геокоды к одной и той же ROOFTOP результата.Разрыв между двумя latlngs в этом абзаце может быть вызван сбоем в данных базовой карты.

 Смежные вопросы

  • Нет связанных вопросов^_^