2013-05-02 68 views
1

我有一個基本的谷歌地圖繪製,用的DrawingManager,是這樣的:在地圖上自動完成多邊形,而與DrawingManager會使用谷歌地圖API V3

var mapOptions = { 
    center: centroid, 
    zoom: 14, 
    scrollwheel: false, 
    mapTypeId: google.maps.MapTypeId.HYBRID, 
    mapTypeControlOptions: { 
     mapTypeIds: [google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.ROADMAP] 
    } 
} 

var map = new google.maps.Map(document.getElementById("map"), mapOptions); 

var drawingManager = new google.maps.drawing.DrawingManager({ 
    drawingMode: google.maps.drawing.OverlayType.POLYGON, 
    drawingControl: false, 

    polygonOptions: { 
     clickable: true, 
     draggable: true, 
     editable: true, 
     fillColor: '#ffff00', 
     fillOpacity: 0.8, 
     strokeWeight: 5 
    } 
}); 

drawingManager.setMap(map); 

繪製多邊形的作品就像一個魅力,除了一小事情。我必須明確地關閉我的多邊形,或者通過點擊第一個點,或者雙擊某處(或者至少我找不到其他方法)。不過,我想爲我的多邊形在任何時候都被關閉,而繪畫,有點像這樣:

http://www.birdtheme.org/useful/v3tool.html

(請在第一選擇框標題旁邊的「多邊形」)。

現在我知道這個例子並不使用drawingManager,而是手動創建多邊形,但我想知道是否可以使用drawingManager進行類似的操作。我恐怕沒有,因爲我在手冊中似乎找不到任何提及它的地方,但也有一點讓人感到驚訝,因爲我認爲這是更多人希望擁有的東西。

+1

我不知道drawingManager,但使用標準的多邊形,你可以像'yourPolygon.getPath()。push(getPath()。getAt(0));'這會自動關閉多邊形的第一個點。 – MrUpsidown 2013-05-02 10:35:52

+0

@MrUpsidown雖然這是真的,但問題是,使用drawingManager時,只有在明確地完成該多邊形之後,才能訪問該多邊形。 – 2013-05-02 13:38:59

回答

0

你可以自己做;您可以輕鬆註冊點擊事件。

google.maps.event.addListener(map, 'click', addLatLng); 

poly = new google.maps.POLYGON(polyOptions); 
poly.setMap(map); 

function addLatLng(event) { 

path = poly.getPath(); 
path.push(event.latLng); 

} 

因爲您知道您中每個點的緯度都是多邊形,你可以畫出來。 每次添加新點時都必須重新繪製它。