2010-10-11 47 views
1

我正在尝试使用Google Elevation API和JQuery的getJSON函数。带有AJAX的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请求被正确地发送和我收到来自谷歌的正确响应:

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

然而我从来没有警报,我从Firebug得到这个错误:

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

我使用Google Maps API v2所以我connato使用build in方法。

有没有什么方法可以通过AJAX请求获取Google Elevation API的高程,而不需要创建代理?

感谢您的帮助。

本杰明

回答

2

该API不支持JSONP,它的返回JSON只...所以是你需要代理在这种情况下。

要明确的是,正确的回答是这样的:

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

jQuery的替代callback=?callback=someFunction,但由于该服务不支持JSONP谷歌不使用此参数...所以这个问题是你有效这样做:

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

这将导致一个错误,因为这不是有效的JavaScript ...你GE t无效的标签错误。如果它有函数包装器,那么有效,它会执行jQuery所做的函数(从您的success回调中)。

1

您应该使用JavaScript API中的GleesoLoo̶c̶a̶t̶i̶o̶n̶ElevationService类。没有必要代理。

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

+0

这是如何帮助我检索点的高程? – benjisail 2010-10-11 14:39:01

+0

对不起,我误读了。请改为使用ElevationService:http://code.google.com/apis/maps/documentation/javascript/reference.html#ElevationService – 2010-10-11 14:51:27

+0

我无法使用高程服务,因为它仅适用于API v3,正如我在我的问题我正在使用v2 API。谢谢。 – benjisail 2010-10-12 08:52:05