Google地图DrawingManager在引脚丢弃后启动绘制

时间:2014-04-16 21:54:50

标签: javascript google-maps google-maps-api-3

是否有一种方法可以使用Google Map API绘图库启动对象的绘制?我有以下工作流程

  1. 用户在地图上双击
  2. Pin被丢弃
  3. 使用DrawingManager
  4. 绘制圆

    然而,在#2和#3之间需要额外的点击。反正这个额外的点击是否存在?

    http://jsfiddle.net/gu2wD/9/

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

    我认为它非常接近。但是,当我使用绘图管理器(允许我在半径上拾取更改事件)时,圆圈不会立即启动。导致额外点击

1 个答案:

答案 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,其中标记放置在双击的位置,圆圈是可编辑的。