2010-10-11 2 views
1

Я пытаюсь использовать API Elevation Google с функцией getJSON JQuery.API-интерфейс Google Elevation с AJAX?

Я использую этот код, который использует 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.

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

Благодарим за помощь.

Benjamin

ответ

1

Google Elevation API не поддерживают JSONP (Спасибо Nick Craver для объяснения), и я не могу использовать ElevationService, который доступен только для v3 API Карт Google.

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

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

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

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

Benjamin

2

Этот 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 ... вы Г.Е. t неверная ошибка метки. Если бы там была обертка функций, то она была бы : была бы действительной и выполнила бы эту функцию jQuery (от вашего обратного вызова success).

1

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

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

+0

Как это может помочь мне восстановить высоту точки? – benjisail

+0

Извините, я неправильно понял. Вместо этого используйте ElevationService: http://code.google.com/apis/maps/documentation/javascript/reference.html#ElevationService –

+0

Я не могу использовать службу повышения, потому что она доступна только в API v3 и, как я уже сказал в своем Вопрос: Я использую API v2. Благодарю. – benjisail