API Google API с Ajax?
-
29-09-2019 - |
Вопрос
Я пытаюсь использовать 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 или другой услугой.