Google Hoogte API met AJAX?
-
29-09-2019 - |
Vra
Ek probeer om die Google Hoogte API te gebruik met die getJSON funksie van jQuery.
Ek gebruik hierdie kode wat gebruik JSONP:
jQuery.getJSON("http://maps.googleapis.com/maps/api/elevation/json?locations=23.444,45.4545&sensor=false&jsoncallback=?", function(json){
alert("a");
});
Ek kan sien in Firebug dat die GET-versoek korrek te stuur en ontvang ek die korrekte antwoord uit Google:
{
"status": "OK",
"results": [ {
"location": {
"lat": 23.4440000,
"lng": 45.4545000
},
"elevation": 816.7996216
} ]
}
Maar ek het nooit die Alert en ek kry hierdie fout van Firebug:
invalid label
"status": "OK",\n
Ek gebruik die Google Maps API v2 so ek die opbou connato gebruik in metode.
Is daar enige manier om die opstand met die Google Hoogte API te kry via 'n AJAX versoek en sonder die skep van 'n volmag?
Dankie vir jou hulp.
Benjamin
Oplossing 3
Die Google opstand API ondersteun nie JSONP (Met dank aan Nick Craver vir die verduideliking) en ek kan die ElevationService wat is slegs beskikbaar vir die v3 Google Maps API gebruik nie.
Dus het ek besluit om 'n ander webservice gebruik om die hoogte te kry:
http://www.geonames.org/export/web-services. html # astergdem
Byvoorbeeld: http://ws.geonames.org/astergdemJSON?lat=X&lng = Y & terugbel = ?
Dit webservice ondersteuning JSONP, so dit kan wees gebruik maklik met jQuery en die getJSON metode.
Benjamin
Ander wenke
Dit API ondersteun nie JSONP, dit terugkeer into net ... so ja sal jy nodig het om 'n gevolmagtigde in hierdie geval.
Om duidelik te wees, die korrekte reaksie sou wees as volg:
someFunction({
"status": "OK",
"results": [ {
"location": {
"lat": 23.4440000,
"lng": 45.4545000
},
"elevation": 816.7996216
} ]
})
jQuery Vervang callback=?
met callback=someFunction
, maar Google het nie hierdie parameter gebruik sedert hierdie diens ondersteun nie JSONP ... so die probleem is wat jy effektief om dit te doen:
<script type="text/javascript">
{
"status": "OK",
"results": [ {
"location": {
"lat": 23.4440000,
"lng": 45.4545000
},
"elevation": 816.7996216
} ]
}
</script>
Watter resultate in 'n fout, want dit is nie geldig JavaScript ... jy 'n ongeldige etiket fout. As dit die funksie wrapper daar gehad het, dit sal geldig en dit wat funksie jQuery gemaak het uit te voer (van jou success
terugbel).
Jy moet die ligginggewing ElevationService klas gebruik van die JavaScript API. Daar is geen behoefte om 'n gevolmagtigde.
http://code.google.com/apis/ kaarte / dokumentasie / javascript / reference.html # ElevationService
As @Chris Broadfoot gesê, is daar 'n spesiale klas vir daardie in API v3 'N Beter voorbeeld hier https://developers.google.com/maps/documentation/javascript/elevation Jy hoef nie te gaan met JSONP nie 'n ander diens.