2010-07-22 133 views
2

我想在地圖上顯示幾條路線,但我更願意先用谷歌地圖繪製它們。例如,我從西雅圖到聖地亞哥的路線,然後移動了一些東西,鏈接看起來像this將谷歌地圖鏈接渲染爲折線

我知道,我可以使用的DirectionsRenderer繪製連接西雅圖和聖迭戈這樣的折線:

function renderDirections(result) { 
    var directionsRenderer = new google.maps.DirectionsRenderer; 
    directionsRenderer.setMap(gMap); 
    directionsRenderer.setDirections(result); 
    } 

    var directionsService = new google.maps.DirectionsService; 
    function requestDirections(start, end) { 
    directionsService.route({ 
     origin: start, 
     destination: end, 
     travelMode: google.maps.DirectionsTravelMode.BICYCLING 
    }, function(result) { 
     renderDirections(result); 
    }); 
    } 
    requestDirections('Seattle, WA', 'San Diego, CA'); 

我想知道的是,如果有一種方法在鏈接的傳遞什麼方向請求。該鏈接包含航點,我對默認航線的修改。

回答

0

是的,只要您將開始點和結束點傳遞給DirectionsRequest並將其傳遞到DirectionsService對象,就可以使用DirectionsRenderer。一旦你調用.setDirections,它會爲你畫出折線。從API文檔at

設置渲染器以使用DirectionsService的結果。以這種方式設置一組有效的路線將在渲染器的指定地圖和麪板上顯示路線。

如果您正在繪製折線(儘管我不明白爲什麼它有必要),可以導出路徑中的各個點 - DirectionsResult包含一個DirectionsLegs數組,其中包含一個DirectionsSteps數組,其中包含一個.path屬性,它是一個latlng數組。 (whew!)

+0

恐怕我沒有關注。這將如何保持我對連接start和end的默認路徑所做的更改?我在哪裏使用鏈接? – lashleigh 2010-07-22 21:12:04

+0

這不是lashleigh問題的答案。她希望採用現有的Google地圖鏈接(包括手動添加的路線點)並將其呈現在自定義地圖上。你根本沒有解決這個問題。 – Benson 2010-07-23 02:24:22

+0

兩者都很對。在對我的問題和隨後的編輯發表評論之前,我並不清楚拉希利的意圖。在更改路線時添加的點編碼在「地理編碼」參數中。 (http://mapki.com/wiki/Google_Map_Parameters#Directions)點由%3b(urlencoded「;」)分隔,但很難說出這些點本身是如何編碼的。您要查找的內容是由DirectionsRequest對象的.waypoints屬性提供的。你必須弄清楚你添加的中間路標的座標,但這是正確的方法。 – 2010-07-23 03:14:17

0

這是可能的,你在正確的軌道上。很難理解API。我相信在調用路線方法時,您必須在DirectionsService的DirectionRequest對象中設置路標。我不認爲你可以傳入鏈接,但你可以先創建一個對象或航點數組。

如果需要,還可以指定optimizeWaypoints布爾值。 Check out the DirectionsRequest Object.

waypoints數組。中間航點的數組。方向將通過該陣列中的每個路點從原點計算到目的地。可選的。