1

緯度経度に基づいてユーザーの情報を取得しようとしています。

私たちのコードは、数週間前にこのエラーが発生し始めるまで正常に動作していました。

コードは次のとおりです。

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 を変更しましたか? ?

4

2 に答える 2

1

好奇心から、ジオコーディングを行うために ajax 呼び出しを行っているのはなぜですか? Google Maps API を直接、より簡単に使用できます: https://developers.google.com/maps/documentation/javascript/geocoding

于 2012-04-25T21:15:52.207 に答える
0

ドキュメントを読むと、この API を使用するためにこれ以上登録する必要はないようです。

私はこれをうまく使いました:

var url = string.Format("http://maps.google.com/maps/geo?q={0}&output=xml", encodedPostCode);

お役に立てれば

于 2012-06-06T13:54:47.957 に答える