Google高程API与Ajax?
-
29-09-2019 - |
题
我正在尝试将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和其他服务。