Frage

Ich versuche, den Google Elevation API mit der getJSON Funktion von JQuery zu verwenden.

Ich bin mit diesem Code, den JSONP verwendet:

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

Ich kann in Firebug sehe, dass die GET-Anfrage korrekt senden und ich erhalte die richtige Antwort von Google:

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

Jedoch habe ich nie die Benachrichtigung und ich erhalte diese Störung von Firebug:

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

Ich bin mit dem Google Maps API v2 so dass ich die Build-in-Methode verwenden connato.

Gibt es eine Möglichkeit, die Höhe der Google Elevation API über eine AJAX-Anforderung zu erhalten und ohne einen Proxy einrichten?

Danke für Ihre Hilfe.

Benjamin

War es hilfreich?

Lösung 3

Die Google Elevation API nicht JSONP (Dank an Nick Craver für die Erklärung) unterstützen, und ich kann nicht die Elevation verwenden, die für die v3 Google Maps API verfügbar ist.

Also habe ich beschlossen, eine andere Webservice zu nutzen, um die Höhe zu erhalten:

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

Beispiel: http://ws.geonames.org/astergdemJSON?lat=X&lng = Y & Rückruf = ?

Diese Webservice Unterstützung JSONP, so dass es den Einsatz leicht mit JQuery und der getJSON Methode sein kann.

Benjamin

Andere Tipps

Das API unterstützt nicht JSONP, es ist nur JSON Rückkehr ... so ja werden Sie in diesem Fall Proxy benötigen.

Um klar zu sein, die richtig Antwort so sein würde:

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

jQuery ersetzt callback=? mit callback=someFunction, aber Google verwendet diese Parameter nicht, da dieser Dienst JSONP nicht unterstützt ... so das Problem ist, du bist effektiv dies zu tun:

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

Welche führt zu einem Fehler, wie das ist nicht gültig JavaScript ... Sie einen ungültigen Etikett Fehler. Wenn es die Funktion Wrapper dort hat es würde gültig sein und es würde diese Funktion ausführen jQuery (von Ihrem success Rückruf) gemacht.

Sie sollten die Geolokalisierung Elevation Klasse von dem JavaScript-API verwenden. Es gibt keine Notwendigkeit zu Proxy-Server.

http://code.google.com/apis/ Karten / documentation / javascript / reference.html # Elevation

Wie @ Chris Broadfoot sagte, gibt es eine Sonderklasse für die in API v3 Ein besseres Beispiel hier https://developers.google.com/maps/documentation/javascript/elevation Sie müssen nicht mit JSONP noch einen anderen Dienst müssen befassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top