2013-05-02 44 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); 

} 

因为您知道您中每个点的纬度都是多边形,你可以画出来。 每次添加新点时都必须重新绘制它。