我正在尝试使用带有JQuery的getJSON函数的Google Elevation API。
我使用的是使用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,所以我使用了build in方法。
有没有办法通过AJAX请求使用Google elevation API获取高程,而无需创建代理?
谢谢你的帮助。
本杰明
发布于 2010-10-14 18:18:31
Google elevation API不支持JSONP (感谢Nick Craver的解释),而且我不能使用只适用于v3 Google Maps API的ElevationService。
因此,我决定使用另一个get服务来获取标高:
http://www.geonames.org/export/web-services.html#astergdem
示例:http://ws.geonames.org/astergdemJSON?lat=X&lng=Y&callback=
该and服务支持JSONP,因此可以很容易地与JQuery和getJSON方法一起使用。
本杰明
发布于 2010-10-11 18:55:42
该应用程序接口不支持JSONP,它返回JSON only...so是的,在这种情况下您需要代理。
需要明确的是,正确的响应应该是这样的:
someFunction({
"status": "OK",
"results": [ {
"location": {
"lat": 23.4440000,
"lng": 45.4545000
},
"elevation": 816.7996216
} ]
})jQuery用callback=someFunction代替了callback=?,但是谷歌没有使用这个参数,因为这个服务不支持JSONP...so。问题是你正在有效地这么做:
<script type="text/javascript">
{
"status": "OK",
"results": [ {
"location": {
"lat": 23.4440000,
"lng": 45.4545000
},
"elevation": 816.7996216
} ]
}
</script>这会导致错误,因为这不是有效的JavaScript...you获取无效标签错误。如果它在那里有函数包装器,它将是有效的,并且它将执行(从您的success回调) jQuery创建的函数。
发布于 2010-10-11 22:03:57
您应该使用JavaScript ElevationService中的G̶e̶o̶L̶o̶c̶a̶t̶i̶o̶n̶API类。不需要代理。
http://code.google.com/apis/maps/documentation/javascript/reference.html#ElevationService
https://stackoverflow.com/questions/3905529
复制相似问题