質問

jQueryのGetJson関数を使用して、Google Elevation APIを使用しようとしています。

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 Requestが正しく送信されており、Googleから正しい応答を受け取ることがわかります。

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

しかし、私は決してアラートではなく、Firebugからこのエラーを取得します。

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

Google Maps API V2を使用しているので、Build in Methodを使用しています。

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

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

ベンジャミン

役に立ちましたか?

解決 3

Google Elevation APIはJSONPをサポートしていません(説明のためのNick Craverに感謝します)。V3GoogleマップAPIでのみ利用可能なElevationServiceを使用することはできません。

そこで、私は他のウェブサービスを使用して標高を取得することにしました。

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

例 : http://ws.geonames.org/astergdemjson?lat=x&lng=y&callback=?

このWebServiceはJSONPをサポートするため、JQueryとGetJsonメソッドで簡単に使用できます。

ベンジャミン

他のヒント

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

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

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

jQueryが交換します callback=?callback=someFunction, 、しかし、Googleはこのパラメーターを使用していません。このサービスはJSONPをサポートしていないためです。 効果的に これを行う:

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

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

JavaScript APIからG̶e̶o̶l̶o̶o̶a̶t̶i̶i̶n̶elevationserviceクラスを使用する必要があります。代理する必要はありません。

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

@Chris Broadfootが言ったように、API V3にはここに良い例があります。 https://developers.google.com/maps/documentation/javascript/elevationJSONPや別のサービスに対処する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top