使用Google Maps API v3使用drawingManager绘制时自动完成多边形

时间:2013-05-02 06:31:35

标签: google-maps-api-3 polygon

我有一个基本的谷歌地图,有一个drawingManager,如下所示:

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

(在标题旁边的第一个选择框中选择'polygon')。

现在我知道这个例子不使用drawingManager,而是手工创建多边形,但我想知道是否可以使用drawingManager进行类似的操作。我担心没有,因为我似乎无法在手册中找到任何参考,但也有点惊讶,因为我认为这是更多人想要的东西。 / p>

1 个答案:

答案 0 :(得分: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);

}

因为你知道你的多边形中每个点的latlng;你可以画它。 每次添加新点时,您都​​必须重新绘制它。