Google maps api 3 使用DrawingManager实例将形状加载到地图

Google maps api 3 使用DrawingManager实例将形状加载到地图,google-maps-api-3,Google Maps Api 3,我想将形状加载到存储形状的all_overlays数组中 通过DrawingManager绘制: drawingManager = new google.maps.drawing.DrawingManager({ drawingMode: google.maps.drawing.OverlayType.POLYGON, drawingControlOptions:{ position: google.maps.ControlPosition.TOP

我想将形状加载到存储形状的all_overlays数组中 通过DrawingManager绘制:

    drawingManager = new google.maps.drawing.DrawingManager({
      drawingMode: google.maps.drawing.OverlayType.POLYGON,
      drawingControlOptions:{
        position: google.maps.ControlPosition.TOP_RIGHT,
        drawingModes:[
                 google.maps.drawing.OverlayType.POLYGON
            ]
      },
      markerOptions: {
        draggable: true
      },
      polylineOptions: {
        editable: true
      },
      rectangleOptions: polyOptions,
      circleOptions: polyOptions,
      polygonOptions: polyOptions,
      map: map
    });

    google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
        all_overlays.push(e);
        if (e.type != google.maps.drawing.OverlayType.MARKER) {
        drawingManager.setDrawingMode(null);
        var newShape = e.overlay;
        newShape.type = e.type;
        google.maps.event.addListener(newShape, 'click', function() {
          setSelection(newShape);
        });
        setSelection(newShape);
      }
    });
但问题是,当我按下其中一个按钮时,它的类型似乎与图形管理器生成的类型不同:

>all_overlays // array have a drawing manager generated object
[Object]
>coords = [ new google.maps.LatLng(-20.2164629885305, -70.1565831899643), new google.maps.LatLng(-20.2166618288932, -70.15673339366913), new google.maps.LatLng(-20.21687325381024, -70.15626400709152), new google.maps.LatLng(-20.21664672710243, -70.15616208314896)];
[Q,Q,Q,Q]
>p1= new google.maps.Polygon({paths: coords,editable: true });
Kh<br>
>all_overlays.push(p1);
2
>all_overlays;
[Object, Kh]
>所有重叠//阵列都有图形管理器生成的对象
[对象]
>coords=[new google.maps.LatLng(-20.21646229885305,-70.1565831899643),new google.maps.LatLng(-20.2166618288932,-70.156733936913),new google.maps.LatLng(-20.216873251024,-70.1562640709152),new google.maps.LatLng(-20.21664646672710243,-70.156208314896)];
[Q,Q,Q,Q]
>p1=新的google.maps.Polygon({路径:坐标,可编辑:true});
Kh
>所有覆盖物。推动(p1); 2. >所有覆盖层; [对象,Kh]
然后我的新形状看起来像“Kh”,不像对象,然后它没有覆盖或类型属性,我想知道如何创建像第一个一样的形状,通过D.m创建。 为了给它附加一个事件监听器,就像其他监听器一样

我需要这样做,以便可以修改与DM加载的


谢谢

您使用的是OverlyComplete,因此您需要进一步挖掘

也许可以试试:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
        all_overlays.push(e.overlay);
        if (e.overlay.type != "marker") {
        drawingManager.setDrawingMode(null);
        var newShape = e.overlay;
        newShape.type = e.overlay.type;
        google.maps.event.addListener(newShape, 'click', function() {
          setSelection(newShape);
        });
        setSelection(newShape);
      }
    });

您使用的是OverlyComplete,因此您必须深入挖掘

也许可以试试:

google.maps.event.addListener(drawingManager, 'overlaycomplete', function(e) {
        all_overlays.push(e.overlay);
        if (e.overlay.type != "marker") {
        drawingManager.setDrawingMode(null);
        var newShape = e.overlay;
        newShape.type = e.overlay.type;
        google.maps.event.addListener(newShape, 'click', function() {
          setSelection(newShape);
        });
        setSelection(newShape);
      }
    });

你到底想达到什么目的?创建最后一个形状的副本并将其绘制在地图上?您到底想要实现什么?创建最后一个形状的副本并在地图上绘制?