API Google Elevation avec AJAX?
-
29-09-2019 - |
Question
Je suis en train d'utiliser l'API Google Elevation avec la fonction getJSON de JQuery.
J'utilise ce code qui utilise JSONP:
jQuery.getJSON("http://maps.googleapis.com/maps/api/elevation/json?locations=23.444,45.4545&sensor=false&jsoncallback=?", function(json){
alert("a");
});
Je peux voir dans Firebug que la requête GET est correctement envoyer et je reçois la réponse correcte de Google:
{
"status": "OK",
"results": [ {
"location": {
"lat": 23.4440000,
"lng": 45.4545000
},
"elevation": 816.7996216
} ]
}
Cependant, je ne l'alerte et je reçois cette erreur de Firebug:
invalid label
"status": "OK",\n
J'utilise l'API Google Maps v2 donc je connato utilise la construction dans la méthode.
Est-il possible d'obtenir l'élévation avec l'API Google Elevation via une requête AJAX et sans créer un proxy?
Merci pour votre aide.
Benjamin
La solution 3
L'API Google élévation ne prend pas en charge JSONP (Merci à Nick Craver pour l'explication) et je ne peux pas utiliser le ElevationService qui est uniquement disponible pour la v3 API Google Maps.
Je décide donc d'utiliser un autre webservice pour obtenir l'élévation:
http://www.geonames.org/export/web-services. html # astergdem
exemple: http://ws.geonames.org/astergdemJSON?lat=X&lng = Y & rappel = ?
Ce soutien webservice JSONP, il peut donc être utilisé facilement avec JQuery et la méthode getJSON.
Benjamin
Autres conseils
Cette API ne supporte pas JSONP, il est de retour JSON seulement ... donc oui, vous aurez besoin de proxy dans ce cas.
Pour être clair, le correct réponse serait comme ceci:
someFunction({
"status": "OK",
"results": [ {
"location": {
"lat": 23.4440000,
"lng": 45.4545000
},
"elevation": 816.7996216
} ]
})
jQuery callback=?
avec callback=someFunction
remplace, mais Google n'utilise pas ce paramètre, car ce service ne prend pas en charge JSONP ... Le problème est que vous êtes efficacement faire ceci:
<script type="text/javascript">
{
"status": "OK",
"results": [ {
"location": {
"lat": 23.4440000,
"lng": 45.4545000
},
"elevation": 816.7996216
} ]
}
</script>
Quels sont les résultats dans une erreur, car ce n'est pas JavaScript valide ... vous obtenez une erreur d'étiquette non valide. Si elle avait la fonction wrapper là, il serait valide et il avait d'exécuter cette fonction jQuery fait (à partir de votre rappel success
).
Vous devez utiliser la classe GeoLocation ElevationService de l'API JavaScript. Il n'y a pas besoin de proxy.
http://code.google.com/apis/ cartes / documentation / javascript / reference.html # ElevationService
Comme dit Broadfoot @ Chris, il y a une classe spéciale pour cette API v3 Un meilleur exemple ici https://developers.google.com/maps/documentation/javascript/elevation Vous n'avez pas besoin de traiter JSONP, ni un autre service.