2010-05-28 3 views
2

У меня есть координаты моего маркера. Теперь я хочу получить адрес маркера. Итак, я искал в Интернете и нашел геокодирование резервных карт Google. Теперь я попытался сделать следующее:Карты Google - Резервный геокодирование -> Ошибка "Недопустимая метка"

$.getJSON('http://maps.google.com/maps/api/geocode/json?latlng='+point.lat()+','+ point.lng() +'&key='+apiKey+'&sensor=false&output=json&callback=?', 
function(data) { 
    console.log(data); 
}); 

Когда я пытаюсь показать адрес, что означает получение JSON, поджигатель выдает следующее сообщение об ошибке:

invalid label 

на

"status": "OK",\n 

Я много искал, но не нашел ответа, решая мою проблему. Можете ли вы сказать мне, что случилось с моим кодом?

Есть ли другой способ получить адресные данные для координат?

ответ

4

Возможно, вы заблокированы same origin policy. Вчера я ответил a similar question на эту тему, которую вы можете проверить.

Вы пытаетесь использовать Server-side Geocoding Web Service, когда Google Maps предоставляет полнофункциональный Client-side Geocoding API для JavaScript. Существует также v2 version, но в последнее время это устарело.

Это автоматически решает проблему с одинаковым происхождением, и, кроме того, пределы запросов будут рассчитываться на IP-адрес клиента, а не на каждый IP-адрес сервера, что может иметь огромное значение для популярного сайта.

Обслуживание на стороне клиента должно быть довольно простым в использовании. Вот очень простой обратный геокодирования пример использования API v3:

<script src="http://maps.google.com/maps/api/js?sensor=false"></script> 

<script type="text/javascript">  
    var geocoder = new google.maps.Geocoder(); 
    var point = new google.maps.LatLng(51.50, -0.12); 

    if (geocoder) { 
     geocoder.geocode({ 'latLng': point }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (results[1]) { 
       console.log(results[1].formatted_address); 
      } 
      else { 
       console.log('No results found'); 
      } 
     } 
     else { 
      console.log('Geocoder failed due to: ' + status); 
     } 
     }); 
    }  
</script> 

Приведенный выше пример должен напечатать Lambeth, Greater London SE1 7, UK на консоль.

1

спасибо большое за ответ, который я искал. Я думаю, что здесь требуются незначительные изменения, results[1] должен быть results[0], иначе он отобразит адрес «окрестности». полный должен быть таким,

<script src="http://maps.google.com/maps/api/js?sensor=false"></script> 

<script type="text/javascript">  
    var geocoder = new google.maps.Geocoder(); 
    var point = new google.maps.LatLng(23.7442812,90.3728129); 

    if (geocoder) { 
     geocoder.geocode({ 'latLng': point }, function (results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (results[0]) { 
       console.log(results[0].formatted_address); 
      } 
      else { 
       console.log('No results found'); 
      } 
     } 
     else { 
      console.log('Geocoder failed due to: ' + status); 
     } 
     }); 
    }  
</script> 

выход будет показан на консоли, Road No 8A, Dhaka, Bangladesh

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