2013-06-30 89 views
0

我有這樣的代碼:谷歌地圖API:從谷歌地圖提供什麼不同的方向?

var directionsService = new google.maps.DirectionsService(); 
var directionsDisplay = new google.maps.DirectionsRenderer({ 'map': map }); 
var request = { 
    origin:'42.0045384 21.4112488', 
    destination:'41.997056 21.435871', 
    travelMode: google.maps.TravelMode.DRIVING 
}; 
directionsService.route(request, function(response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
    directionsDisplay.setDirections(response); 
    } 
}); 

它應該得到2個GPS點的方向。它這樣做。但問題是,方向是錯誤的。起點不在接近它所說的地方。 看看這張圖片:http://imgur.com/7ayaonK,WKZzkpQ#1 標記A的實際座標靠近綠色的人圖標。 所以我在谷歌地圖中輸入相同的確切座標,我得到這個:http://imgur.com/7ayaonK,WKZzkpQ#0 這些是正確的方向。 因此,如果它適用於Google地圖,爲什麼API上的座標不一樣?

回答

1

您正在使用字符串參數的來源和目的地,並不保證這些參數將用作LatLng,所提供的字符串必須以某種方式轉換爲LatLng(通常通過地理編碼)。當地理編碼爲原點的查詢,你會看到你得到錯誤的位置:http://gmaps-samples-v3.googlecode.com/svn/trunk/geocoder/v3-geocoder-tool.html#q%3D42.0045384%2021.4112488

我想谷歌地圖不只是地理編碼查詢,它檢測到該查詢可能是一個經緯度,並用它作爲一個經緯度,而不是一個地址。

解決方法很簡單,當你知道這兩個參數是經緯度的,把它們作爲經緯度的,你會得到期望的結果:

var request = { 
    origin:  new google.maps.LatLng(42.0045384,21.4112488), 
    destination: new google.maps.LatLng(41.997056,21.435871), 
    travelMode: google.maps.TravelMode.DRIVING 
}; 
+0

輝煌,感謝隊友! – R0b0tn1k