1

JQueryのgetJSON関数でGoogleElevationAPIを使用しようとしています。

私はJSONPを使用しているこのコードを使用しています:

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

Firebugで、GETリクエストが正しく送信され、Googleから正しい応答を受信して​​いることがわかります。

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

ただし、アラートは発生せず、Firebugからこのエラーが発生します。

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

私はGoogleMapsAPI v2を使用しているので、組み込みメソッドを使用します。

プロキシを作成せずに、AJAXリクエストを介してGoogle Elevation APIで標高を取得する方法はありますか?

ご協力いただきありがとうございます。

ベンジャミン

4

4 に答える 4

2

そのAPIはJSONPをサポートしておらず、JSONのみを返します...したがって、この場合はプロキシする必要があります。

明確にするために、正しい応答は次のようになります。

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

jQueryはに置き換えcallback=?られcallback=someFunctionますが、このサービスはJSONPをサポートしていないため、googleはこのパラメーターを使用しません...したがって、問題はこれを効果的に実行していることです。

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

これは有効なJavaScriptではないため、エラーが発生します...無効なラベルエラーが発生します。そこに関数ラッパーがあれば、それ有効であり、jQueryが(successコールバックから)作成した関数を実行します。

于 2010-10-11T10:55:42.163 に答える
1

JavaScript API の G̶e̶o̶L̶o̶c̶a̶t̶i̶o̶n̶ ElevationService クラスを使用する必要があります。プロキシする必要はありません。

http://code.google.com/apis/maps/documentation/javascript/reference.html#ElevationService

于 2010-10-11T14:03:57.033 に答える
1

Google Elevation API は JSONP をサポートしていません (説明については Nick Craver に感謝します)。また、v3 Google Maps API でのみ利用可能な ElevationService を使用できません。

そこで、別の Web サービスを使用して標高を取得することにしました。

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

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

この Web サービスは JSONP をサポートしているため、JQuery と getJSON メソッドで簡単に使用できます。

ベンジャミン

于 2010-10-14T10:18:31.440 に答える