gpt4 book ai didi

javascript - 如何从谷歌地理编码解析 json (jquery)?

转载 作者:行者123 更新时间:2023-11-29 10:50:31 24 4
gpt4 key购买 nike

我正在尝试使用纬度和经度获取城市名称。

Google 地理编码支持此选项并称为“Reverse geocoding”。正如示例中所写,我必须对此链接发出获取请求:

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false

它返回我的json数组,你可以试试。

我如何在 jquery 中解析这个 json?

我试着这样做:

   $.ajax({
url: 'http://maps.googleapis.com/maps/api/geocode/json',
type: 'get',
data: {
'latlng':lat+","+longit,
'sensor': false
},
dataType: 'jsonp',
success: function(result){

console.log(results)

},
error: function(xhr,ajaxOptions,thrownError){
console.log(xhr.status);
console.log(ajaxOptions);
console.log(thrownError);
}

})

我得到了这个数组,但是无法解析。它说:

Uncaught SyntaxError: Unexpected token :

我该如何解决这个问题?

最佳答案

简答;你不能:这里不支持 JSONP(或者至少实际上没有记录为受支持),请使用 Geocoder类。

Google Geocoding APIs say:

Looking to use this service in a JavaScript application? Check out the Geocoder class of the Google Maps API v3.

Google 似乎只提供纯 JSON,由于同源策略,您无法在自己的页面中解析它 - 但如果您是,则可以使用它。在没有该限制的另一台服务器上运行的 php 应用程序。因此,如果您想在网页上使用它,可以使用他们的 Geocoder 类 - 无论如何它都会为您完成解析工作。

--

当您使用 dataType="jsonp"时,jQuery 会尝试通过创建 SCRIPT 元素并将 src 属性设置为查询字符串来加载结果。然后浏览器最终获取返回的 json,并尝试将其解析为一个独立的 javascript 文件 - 这就是失败的原因。

问题是 JSON 不是有效的纯独立 javascript:例如,返回的 JSON 字符串:

{ "results" : [ { "address_components" : [

... 无法解析 - 这就是导致错误的原因。如果是,另一方面,

var foo = { "results" : [ { "address_components" : [

callback({ "results" : [ { "address_components" : [ ...  } )

那么 它将是有效的 javascript。后者是 jsonp 实际上依赖于返回的东西。

最重要的是,您正在取回有效的 JSON,但由于同源策略,您无法通过 XmlHttpRequest 直接访问它;并且因为它不是带有函数的 JSONP,所以您不能通过 JSONP 所依赖的 SCRIPT 后门使用它来解决同源问题。在网页上使用它的唯一选择是使用 Google 为您提供的类 - 因为它们也来自 Google 站点,它们可以访问 JSON 并成功解析它 - 并返回处理过的结果返回给您。

关于javascript - 如何从谷歌地理编码解析 json (jquery)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com