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

Google maps api 3 使用Google Maps API v3使用drawingManager绘制时自动完成多边形,google-maps-api-3,polygon,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

我有一个基本的谷歌地图,带有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);
除了一件小事之外,在地图上画多边形就像一种魅力。我必须明确地关闭多边形,或者单击第一个点,或者双击某个地方,或者至少我找不到其他方法。但我希望我的多边形在绘图时始终是闭合的,有点像这样:

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);
在标题旁边的第一个选择框中选择“多边形”


现在我知道这个示例没有使用drawingManager,而是手动创建多边形,但是我想知道使用drawingManager是否可以实现类似的功能。恐怕没有,因为我在手册中似乎找不到任何参考资料,但这也有点令人惊讶,因为我认为这是更多人想要的东西。

你可以自己做;您可以轻松注册单击事件

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);

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

我不知道drawingManager,但使用标准多边形,您可以执行类似于yourPolygon.getPath.pushgetPath.getAt0;这将自动关闭带有第一个点的多边形。@MrUpsidown如果这是真的,那么问题是,在使用drawingManager时,在显式完成该多边形之前,您无法访问该多边形。