我正在尝试将 Google Elevation 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 Elevation API 获取海拔高度,而无需创建代理?
感谢您的帮助。
本杰明
最佳答案
该 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
回调)。
关于jquery - 带有 AJAX 的 Google Elevation API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3905529/