Разбор Google Geo API (обратное геокодирование) с помощью jQuery - PullRequest
2 голосов
/ 06 апреля 2011

Я уверен, что я не единственный, но я не могу ничего проанализировать / вернуть, когда jQuery принимает запрос для поиска адреса, когда запрашиваемые данные - latitude и longitude, поэтому Google может вернуть данные, но они не могут быть прочитаны jQuery?

http://maps.googleapis.com/maps/api/geocode/json

С параметрами:

latlng=51.276914,1.077252
&sensor=false

В Firebug написано 200 OK, но в ответе ничего не отображается:

enter image description here

Я вижу это, когда открываю: http://maps.googleapis.com/maps/api/geocode/json?latlng=51.187296,1.229086&sensor=false&_=1302084865163

То, что я сделал, было:

$.ajax(
{
    url: 'http://maps.googleapis.com/maps/api/geocode/json',
    data: 'latlng=' + geolocation + '&sensor=false',
    dataType: 'json',
    cache: false,
    success: function(data){ alert(data); }
});

Это не работает ... ни $.get, $.getJSON с json dataType.

Почему jQuery не может разобрать / прочитать ответ?

Ответы [ 4 ]

3 голосов
/ 07 марта 2013

Как отмечено выше Бьорном, существуют ограничения безопасности из-за того, что конечная точка находится в другом домене. Однако вам НЕ нужно использовать геокодер, так как все, что он делает - это запрос ajax - он делает немного больше, чем вы делаете сейчас.

Как отмечает Shidhin Cr выше, одним из способов решения проблемы безопасности является то, что вы можете добавить callback =?, Но все, что на самом деле делает, это выполняет задачу, которую jQuery может сделать для вас автоматически, используя аргумент «jsonp» dataType.

Также, если вы используете $ .getJSON, он должен автоматически заметить, что это на удаленном сервере, и автоматически обновить запрос на jsonp для вас - но я мог бы помнить, что это неправильно, были некоторые аргументы в документации jquery, связанные с этим конкретный звонок.

В любом случае оба вышеприведенных предложения верны, им просто не хватало деталей.

3 голосов
/ 06 апреля 2011

В целях безопасности необходимо использовать геокодер googles. Смотрите ответ здесь .

1 голос
/ 01 сентября 2016

попробуйте использовать $ .getJSON, чтобы получить результат

Пример

var latlng = "40.06125658,-7.745361328";
var url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + latlng + "&sensor=false";
$.getJSON(url, function (data) {
    for(var i=0;i<data.results.length;i++) {
        var adress = data.results[i].formatted_address;
        alert(adress);
     }
})
1 голос
/ 14 сентября 2011

Измените параметр данных следующим образом. Вы можете видеть, что ответ идет правильно

data: 'latlng=' + geolocation + '&sensor=false&callback=?'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...