是否有一种方法可以使用Google Map API绘图库启动对象的绘制?我有以下工作流程
然而,在#2和#3之间需要额外的点击。反正这个额外的点击是否存在?
function createCircle() {
//create drawing manager to draw circle on map
var drawingManager = new google.maps.drawing.DrawingManager({
drawingMode: google.maps.drawing.OverlayType.CIRCLE,
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [
google.maps.drawing.OverlayType.CIRCLE
]
},
circleOptions: {
strokeColor: '#0099FF',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#0099FF',
fillOpacity: 0.35,
map: map,
center: marker.getPosition(),
editable: true,
radius: 50
}
});
drawingManager.setMap(map);
google.maps.event.addListener(drawingManager, 'circlecomplete', function (circle) {
popUpPinInfo(marker, circle.radius, map);
google.maps.event.addListener(circle, 'radius_changed', function () {
popUpPinInfo(marker, circle.radius, map);
});
});
google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
drawingManager.setDrawingMode(null);
});
}
我认为它非常接近。但是,当我使用绘图管理器(允许我在半径上拾取更改事件)时,圆圈不会立即启动。导致额外点击
答案 0 :(得分:1)
查看documentation,我没有看到可用于检测标记何时被删除的事件。我认为position_changed
事件有可能被触发,但只有当您将标记设置为可拖动并物理移动它时,才会发生这种情况。
因此,我认为最好的选择是在双击处理程序中使用setTimeout
来延迟绘制圆圈,直到标记落入到位。这样的事情(见fiddle):
google.maps.event.addListener(map, 'dblclick', function() {
createMarker();
setTimeout(createCircle, 500);
});
function createMarker() {
// create the marker
}
function createCircle() {
// create the circle
}
修改强>
@geocodezip提供了一个改进的fiddle,其中标记放置在双击的位置,圆圈是可编辑的。