2010-10-11 110 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