Domanda

Sto provando ad utilizzare l'API di Google Elevazione con la funzione getJSON di jQuery.

Sto usando questo codice che utilizza JSONP:

jQuery.getJSON("http://maps.googleapis.com/maps/api/elevation/json?locations=23.444,45.4545&sensor=false&jsoncallback=?", function(json){
    alert("a");
});

posso vedere in Firebug che la richiesta GET è correttamente inviare e io ricevere la risposta corretta da Google:

{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}

Comunque non ho mai l'avviso e ottengo questo errore da Firebug:

invalid label
"status": "OK",\n

Sto usando l'API v2 di Google Maps in modo da connato uso la configurazione in metodo.

C'è un modo per ottenere l'elevazione con l'API di Google Elevation tramite una richiesta AJAX e senza creare un proxy?

Grazie per il vostro aiuto.

Benjamin

È stato utile?

Soluzione 3

L'API di elevazione di Google non supportano JSONP (grazie a Nick Craver per la spiegazione) e non posso utilizzare l'ElevationService che è disponibile solo per la v3 API di Google Maps.

Così ho deciso di utilizzare un altro webservice per ottenere l'elevazione:

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

Esempio: http://ws.geonames.org/astergdemJSON?lat=X&lng = Y & callback = ?

Questo supporto webservice JSONP, in modo che possa essere utilizzato facilmente con JQuery e il metodo getJSON.

Benjamin

Altri suggerimenti

Questa API non supporta JSONP, è il ritorno JSON solo ... quindi sì è necessario procura in questo caso.

Per essere chiari, il corretta risposta sarebbe simile a questo:

someFunction({
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
})

jQuery sostituisce callback=? con callback=someFunction, ma Google non utilizza questo parametro dal momento che questo servizio non supporta JSONP ... quindi il problema si è Non Sei efficace questo modo:

<script type="text/javascript">
{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}
</script>

che si traduce in un errore, in quanto questo non è valida JavaScript ... si ottiene un errore un'etichetta valida. Se avesse la funzione wrapper lì, dovrebbe essere valido e che sarebbe eseguire tale funzione jQuery fatto (dal callback success).

Si dovrebbe utilizzare la classe Geolocation ElevationService dal API JavaScript. Non c'è alcun bisogno di proxy.

http://code.google.com/apis/ mappe / documentazione / javascript / reference.html # ElevationService

Come @ Chris Broadfoot ha detto, c'è una classe speciale per quella in API v3 Un esempio migliore qui https://developers.google.com/maps/documentation/javascript/elevation Non è necessario trattare con JSONP né un altro servizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top