2010-05-21 99 views

回答

3

您應該能夠非常容易地獲得由GDirections生成的折線的各個頂點。首先,如果您未將GDirections附加到地圖,則在致電GDirections.load()時,必須確保通過getPolyline: true選項。然後,您可以簡單地遍歷多段線的每個頂點,然後您應該檢查點是否在預定義位置的某個距離閾值內。

請看下面的例子:

var map = new GMap2(document.getElementById("map")); 
var directions = new GDirections(map); 

// Your predefined point 
var pt = new GLatLng(51.470, -0.453); 

directions.load('from: London, UK to: Glasgow, UK', { getPolyline: true }); 

GEvent.addListener(directions, "load", function() { 
    for (var i = 0; i < directions.getPolyline().getVertexCount(); i++) { 
    if (directions.getPolyline().getVertex(i).distanceFrom(pt) < 100) { 
     // Your predefined point is within 100 meters of the route 
    } 
    } 
}); 

你也許可以跳過一些步驟肯定是從你的測試點太遠改善這種方法。您可以使用getPolylineIndex()方法獲取每個路徑步驟的折線索引。這可以幫助您將for循環限制爲更窄的一組頂點。

進一步閱讀和參考:

+0

該方法將不起作用。有些步驟可能會超過50公里(例如沿着同一條高速公路行駛時)。如果我的興趣點在這一步的上半部分,檢查該點是否在25公里半徑範圍內會產生很多誤報。我需要知道該點是否恰好在該路線上。 – Pavel 2010-05-21 15:47:24

+0

@Pavel:你說得對。檢查更新的答案。它必須遍歷多段線頂點,而不是像我之前建議的那樣通過路線步驟。 – 2010-05-21 16:20:18

相關問題