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 需要调用外部服务器。因此,您需要传递一个回调方法以在请求完成时执行。此回调方法处理结果。请注意,地理编码器可能会返回多个结果。

根据文档,应该支持回调。JQuery 添加了那个回调头,所以我不明白为什么谷歌不尊重它。

*编辑:作为参考,我的应用程序尝试调用的网址是 http://maps.google.com/maps/geo?q=33.8024912,-84.4218782&key=[my key here]&sensor=false&callback=jQuery16409036452900618315_1335293866369&_=1335293866469 是这是谷歌方面的事情吗?还是我们这边有什么?同样,这段代码曾经完美地工作过。

我在 StackOverFlow 上看到的其他帖子,人们说当这个错误出现时意味着服务器不支持 JSONP ......让我感到困惑的是,这曾经可以工作......谷歌是否改变了他们的 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 回答