ajaxを使用したGoogle Elevation API?
-
29-09-2019 - |
質問
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や別のサービスに対処する必要はありません。