2014-01-15 273 views
0

我被困在告訴編輯事件我編輯了多邊形的哪條路徑。我需要知道這一點,因爲我將多邊形的座標發佈到服務器,並且需要能夠告訴它我更改了多邊形的哪條路徑。最初,我的多邊形都是單路徑多邊形,我必須傳遞給我的editPolygon()方法的是編輯頂點的索引(它自動作爲第一個參數傳遞)。但是,我現在還需要傳遞我正在編輯的多邊形路徑的索引。因爲我的多邊形可以有多條路徑,所以我需要能夠說「編輯路徑1並更新該部分」。編輯多邊形多邊形的多邊形路徑事件

下面的代碼是我嘗試添加pathIndex作爲參數,但它的值不帶入匿名函數。同樣,該函數的第二個參數自動設置爲編輯頂點的LatLng對象。我可以看到我需要訪問函數中的多邊形路徑,但範圍不允許。

var pathIndex = polygon.getPaths().getAt(thisIndex); 
     google.maps.event.addListener(polygon.getPath(), 'set_at', function(editIndex) { 
      editPolygon(editIndex, pathIndex); 
     }); 

有關如何判斷您正在編輯多路徑面的哪條路徑的任何想法?如果有功能可以告訴你改變了路徑中的哪個頂點,那麼不應該有辦法告訴你多邊形中哪條路徑改變了嗎?

回答

0

這是一個可能的解決方案,但它可能不是最優雅的。

當我在多邊形中創建每個路徑時,我爲該多邊形內的索引設置了一個屬性。例如:

polygonPath.pathIndex = indexOfPathInPolygon; 

它現在是MVCArray的一部分。

現在我只需要建立正常的事件處理程序:

google.maps.event.addListener(polygonPath, 'set_at', editPolygon); 

當editPolygon()被調用時,我可以因爲「這個」引用MVCArray,因此我編輯訪問指數:

function editPolygon(editIndex) { 
    var editedPath = myPolygon.getPaths.getAt(this.pathIndex); 

}