我正在尝试将Google高程API与JQuery的GetJson功能一起使用。

我正在使用此代码,该代码正在使用JSONP:

jQuery.getJSON("http://maps.googleapis.com/maps/api/elevation/json?locations=23.444,45.4545&sensor=false&jsoncallback=?", function(json){
    alert("a");
});

我可以在Firebug中看到Get请求已正确发送,并且我收到了Google的正确回复:

{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}

但是我从不警报,我从Firebug那里得到了此错误:

invalid label
"status": "OK",\n

我正在使用Google Maps API V2,因此我使用方法中的构建。

有什么方法可以通过AJAX请求与Google Hevation API获取高程,而无需创建代理?

谢谢你的帮助。

本杰明

有帮助吗?

解决方案 3

Google高程API不支持JSONP(感谢Nick Craver的解释),我无法使用仅适用于V3 Google Maps API的HeivationService。

因此,我决定使用其他Web服务来获得高程:

http://www.geonames.org/export/web-services.html#astergdem

例子 : http://ws.geonames.org/astergdemjson?lat=x&lng=y&callback=?

此Web服务支持JSONP,因此可以轻松地与JQuery和GetJson方法一起使用。

本杰明

其他提示

API不支持JSONP,它仅返回JSON ...因此,在这种情况下,您需要代理。

要明确, 正确的 回应就是这样:

someFunction({
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
})

jQuery替换 callback=?callback=someFunction, ,但是Google不使用此参数,因为此服务不支持JSONP ...所以问题在于您 有效地 这样做:

<script type="text/javascript">
{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}
</script>

这会导致错误,因为这是无效的JavaScript ...您会收到无效的标签错误。如果那里有功能包装器, 有效,并且会执行该函数jQuery制作(从您的 success 打回来)。

您应该使用JavaScript API的g̶e̶o̶l̶c̶c̶c̶a̶t̶i̶o̶n̶高程服务类。无需代理。

http://code.google.com/apis/maps/documentation/javascript/reference.html#elevationservice

正如@chris broadfoot所说,在API V3中有一个特殊的课程,这里有一个更好的例子 https://developers.google.com/maps/documentation/javascript/elevation您无需处理JSONP和其他服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top