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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top