Google карты JSON геокодирования, нет ответа в браузере - PullRequest
2 голосов
/ 30 сентября 2010

По какой-либо причине следующий запрос не получает ответа от Google. Однако, если я вставлю URL в адресную строку, он будет работать нормально. Я не уверен, почему это случилось. Отфильтровывает ли Google запросы по заголовкам рефереров?

http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=3122%2C%20Australia

     $.ajax({
            url:'http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address='+post_code+encodeURIComponent(', Australia'),
            success:function(data) {
                alert(data);
                if(data['status'] == 'OK') {
                    var location = data['results'][0]['geometry']['location'];
                    map.panTo(location['lat']+':'+location['lng']);
                    map.setZoom(8);
                }
            }

        });

1 Ответ

10 голосов
/ 30 сентября 2010

Похоже, что вы можете быть заблокированы Одинаковой политикой происхождения .

Вы пытаетесь использовать серверную веб-службу геокодирования , когда Карты Google предоставляют полнофункциональный API геокодирования на стороне клиента для JavaScript.Существует также версия v2 , но недавно она устарела.

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

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

<!DOCTYPE html>
<html> 
<head> 
   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
   <title>Google Maps Geocoding Demo</title> 
   <script src="http://maps.google.com/maps/api/js?sensor=false" 
           type="text/javascript"></script> 
</head> 
<body> 
   <script type="text/javascript"> 
   var geocoder = new google.maps.Geocoder();

      if (geocoder) {
         geocoder.geocode({ 'address': 'Australia' }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
              console.log(results[0].geometry.location);
            } 
            else {
              console.log('No results found: ' + status);
            }
         });
      }
   </script> 
</body> 
</html>

Вышеприведенное должно выводить (-25.274398, 133.775136) на консоль.

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