Вопрос

Я пытаюсь использовать API Google API с функцией GetJSON jQuery.

Я использую этот код, который использует JSONP:

jQuery.getJSON("http://maps.googleapis.com/maps/api/elevation/json?locations=23.444,45.4545&sensor=false&jsoncallback=?", function(json){
    alert("a");
});

В Firebug я могу видеть, что запрос на получение правильно отправить, и я получаю правильный ответ от Google:

{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}

Однако я никогда не предупреждаю, и я получаю эту ошибку из Firebug:

invalid label
"status": "OK",\n

Я использую Google Maps API V2, поэтому i Contato использую метод сборки.

Есть ли способ получить высоту с API Google API Google через запрос AJAX и без создания прокси?

Спасибо за вашу помощь.

Бенжамин

Это было полезно?

Решение 3

API Google API не поддерживает JSONP (благодаря Нике Craver для объяснения), и я не могу использовать подъемные услуги, которые доступны только для API Google V3 Google.

Поэтому я решил использовать другую веб-сервис, чтобы получить высоту:

http://www.geonames.org/export/web-services.html#astergdem.

пример : http://ws.geonames.org/astergdemjson?lat=x&lng=y&callback=.?

Это Websivice поддерживает JSONP, поэтому его можно легко использовать с jQuery и методом getjson.

Бенжамин

Другие советы

Этот API не поддерживает JSONP, это возвращает только JSON ... так что да, вам нужно прокси в этом случае.

Быть ясным, верный Ответ будет таким:

someFunction({
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
})

jQuery заменяет callback=? с callback=someFunction, но Google не использует этот параметр, так как эта услуга не поддерживает JSONP ... так что проблема в том, что вы эффективно делая это:

<script type="text/javascript">
{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}
</script>

Что приводит к ошибке, так как это не действует JavaScript ... вы получаете неверную ошибку ярлыка. Если бы у него была функциональная обертка там, это бы быть действительным, и это выполнит, что функциональный jQuery сделан (из вашего success перезвонить).

Вы должны использовать класс высоты G̶e̶o̶l̶o̶c̶a̶t̶i̶n̶ из API JavaScript. Там нет необходимости прокси.

http://code.google.com/apis/maps/documentation/javascript/reference.html#elvationservice

Как сказал @chris Broadfoot, есть специальный класс для этого в API V3 лучший пример здесь https://developers.google.com/maps/documentation/javascript/elevationВам не нужно иметь дело с JSONP или другой услугой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top