緯度経度に基づいてユーザーの情報を取得しようとしています。
私たちのコードは、数週間前にこのエラーが発生し始めるまで正常に動作していました。
コードは次のとおりです。
var reverse_geo_url = "http://maps.google.com/maps/geo?q=" + lat + "," + lng + "&key=[key]&sensor=false"
console.log("Calling " + reverse_geo_url);
new $.ajax(reverse_geo_url, {
dataType: "jsonp",
timeout: 5000,
success: function (data) {
// yay
}
});
問題は、私たちが突然得ていることです
Uncaught SyntaxError: Unexpected token :
これは、Googleのサーバーからの応答の例です(URLに直接アクセスした場合)
{
"name": "33.0024912,-88.4218782",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "Paulette Rd, Macon, MS 39341, USA",
"AddressDetails": {
"Accuracy" : 6,
"Country" : {
"AdministrativeArea" : {
"AdministrativeAreaName" : "MS",
"Locality" : {
"LocalityName" : "Macon",
"PostalCode" : {
"PostalCodeNumber" : "39341"
},
"Thoroughfare" : {
"ThoroughfareName" : "Paulette Rd"
}
}
},
"CountryName" : "USA",
"CountryNameCode" : "US"
}
},
"ExtendedData": {
"LatLonBox": {
"north": 32.9994289,
"south": 32.9891822,
"east": -88.4094885,
"west": -88.4393238
}
},
"Point": {
"coordinates": [ -88.4238788, 32.9952338, 0 ]
}
} ]
}
https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingResponses
Google Maps API は外部サーバーを呼び出す必要があるため、Geocoding サービスへのアクセスは非同期です。そのため、リクエストの完了時に実行するコールバック メソッドを渡す必要があります。このコールバック メソッドは結果を処理します。ジオコーダは複数の結果を返す場合があることに注意してください。
ドキュメントによると、コールバックはサポートされているはずです。JQuery はそのコールバック ヘッダーを追加するので、Google がそれを尊重しない理由がわかりません。
*編集: 参考までに、私のアプリが呼び出そうとする URL は http://maps.google.com/maps/geo?q=33.8024912,-84.4218782&key=[my key here]&sensor=false&callback=jQuery16409036452900618315_1335293866369&_=1335293866469 ですこれはGoogle側の何かですか?それとも何かが私たちの側にありますか?繰り返しますが、このコードは以前は完全に機能していました。
私が StackOverFlow で見た他の投稿では、このエラーが表示された場合、サーバーが JSONP をサポートしていないことを意味していると人々は言っています...私にとって混乱しているのは、これが以前は機能していたことです...Google は API を変更しましたか? ?