谷歌地图地理给出 JSONP 错误意外的令牌:或无效的标签

Google Maps Geo giving JSONP error Unexpected token : or invalid label

本文关键字:令牌 标签 无效 意外 错误 JSONP 谷歌地图      更新时间:2023-09-26

我们试图根据经度获取用户的信息。

我们的代码一直运行良好,直到几周前我们开始收到此错误。

这是我们的代码:

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 :

这是来自谷歌服务器的示例响应(当我直接转到网址时)

{
  "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

访问地理编码服务是异步的,因为谷歌地图 API 需要调用外部服务器。出于这个原因,你 需要传递回调方法以在完成 请求。此回调方法处理结果。请注意, 地理编码器可能会返回多个结果。

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

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

我在StackOverFlow上看到的其他帖子,人们说当此错误出现时意味着服务器不支持JSONP...令我困惑的是,这曾经有效...谷歌是否更改了他们的API?

出于好奇,为什么要做 ajax 调用来进行地理编码?您可以直接使用Google Maps API,更简单:https://developers.google.com/maps/documentation/javascript/geocoding

通读文档,似乎您无需再注册即可使用此 api,

我成功地使用了这个:

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

希望这有帮助

相关文章: