2011-11-19 162 views
8

我愛谷歌地圖V3.7新圖形庫,但我有感覺的文檔仍然是不完整的,我有幾個問題:谷歌地圖V3:繪製庫

  1. Documentation提及overlaycompleted{overlay}completed事件,但我也found事件drawingmode_changed事件。有沒有事件清單?

  2. 有沒有辦法得到一個參考(對象),這是我們的除了等待,直到我們完成繪製,並使用偵聽與overlaycompleted如在上面的例子完成繪製多邊形?

  3. 有沒有辦法從多邊形中刪除頂點,只需點擊它們?如果沒有,你會怎麼做呢?

回答

1

很多搜​​索這裏後就是我想出了:

  1. 我便無法找到事件中的任何名單之外this。我找不到任何東西。

  2. 不,這是不可能的,但我已經把request in,我已經顯示一個小的trick,它使用右鍵單擊。不幸的是,這並不適合我,因爲我需要左鍵點擊。

我希望這可以幫助別人

2

您可以撥打任何疊加事件上完全是這樣。

google.maps.event.addListener(drawingManager, 'polygoncomplete', function(e) { 
    //Your magic goes here 
}); 

overlaycomplete就像是任何覆蓋,如標記,折線,圓形和多邊形的全球盛會。但是如果要爲特定的疊加層創建偵聽器,只需將overlay更改爲所需的疊加層:polygoncomplete,polylinecomplete,circlecomplete

我知道這個問題很老,但我想分享我的答案。

+0

這應該被標記爲正確答案 – ADAM

1

非常古老的問題,但我有一些更新,也許會幫助某人。

  1. 有可編輯的形狀可能是有用的一些額外的活動:https://developers.google.com/maps/documentation/javascript/overlays#user_editable_shapes_events

  2. 也無法找到這個解決方案。

  3. 這段代碼演示瞭如何在左側點擊刪除多邊形/折線頂點:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function (e) { 
    if (e.type !== google.maps.drawing.OverlayType.MARKER) { 
     // Switch back to non-drawing mode after drawing a shape. 
     drawingManager.setDrawingMode(null); 

     // Add an click event listener for newly-drawn shape 
     // and remove polygon vertex if it was clicked 
     var newShape = e.overlay; 
     google.maps.event.addListener(newShape, 'click', function (e) { 
      if (e.vertex !== undefined) { 
       if (newShape.type === google.maps.drawing.OverlayType.POLYGON) { 
        var path = newShape.getPaths().getAt(e.path); 
        path.removeAt(e.vertex); 
        if (path.length < 3) { 
         newShape.setMap(null); 
        } 
       } 
       if (newShape.type === google.maps.drawing.OverlayType.POLYLINE) { 
        var path = newShape.getPath(); 
        path.removeAt(e.vertex); 
        if (path.length < 2) { 
         newShape.setMap(null); 
        } 
       } 
      } 
     }); 
    } 
});