0

Я использую API обратного геокодирования (на стороне клиента), чтобы превратить lat, длинные координаты в уличные адреса. Эти длинные латы берутся непосредственно из перетаскиваемого маркера на карте, поэтому у них много десятичных знаков информации.Google Maps Reverse Geocoding возвращает только «APPROXIMATE»

Если я положил его в Сан-Франциско, например, я перетащил маркер и отправлю пару {lat, lng} в API. Я возвращаю что-то очень общее, как "San Francisco, CA" или в лучшем случае "South of Market, San Francisco, CA, USA".

Я знаю, что у Google есть информация об улицах в этой области, потому что я могу использовать API геокодирования вперед.

Есть ли какой-либо параметр, который может отсутствовать, что может вызвать это? Вот мой код:

maps.reverseGeocode = function(pos, callback) { 
    maps.geocoder.geocode({ 
     latLng: pos, 
     bounds: maps.map.getBounds() 
    }, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      console.log("Reverse Geocode:", results); 
      callback(results[0]); 
     } else { 
      console.log('Could not geocode: ' + status); 
      callback(undefined); 
     } 
    }); 
}; 

Адрес pos берется непосредственно с объекта маркера карты.

ответ

1

Понял это довольно быстро. Это связано с тем, что в запрос был включен параметр bounds. Удаление bounds дает мне очень точные результаты. Теперь я использую только bounds в прямом геокодировании.

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