我们正在尝试根据纬度获取用户的信息。
我们的代码一直运行良好,直到几周前我们开始收到此错误。
这是我们的代码:
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 ?