Google Elevation API с AJAX? - PullRequest
       37

Google Elevation API с AJAX?

1 голос
/ 11 октября 2010

Я пытаюсь использовать Google Elevation 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, что запрос GET отправляется правильно, и я получаю правильный ответ от Google:

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

Однако я никогда не оповещаю и получаю эту ошибку от Firebug:

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

Я использую Google Maps API v2, поэтому я использую метод build in.

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

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

Benjamin

Ответы [ 4 ]

2 голосов
/ 11 октября 2010

Этот 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 обратного вызова).

1 голос
/ 14 октября 2010

API-интерфейс Google возвышения не поддерживает JSONP (спасибо Ник Крэйверу за объяснение), и я не могу использовать ElevationService, который доступен только для API Карт Google версии 3.

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

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

пример: http://ws.geonames.org/astergdemJSON?lat=X&lng=Y&callback=?

Этот веб-сервис поддерживает JSONP, поэтому его легко использовать с JQuery и методом getJSON.

Бенджамин

1 голос
/ 11 октября 2010

Вам следует использовать класс ElevationService G̶e̶o̶L̶o̶c̶a̶t̶i̶o̶n̶ из JavaScript API.Нет необходимости в прокси.

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

0 голосов
/ 16 ноября 2014

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

...