2

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

    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]

然后我的新形状看起来像 'Kh' ,不像 Object ,然后它没有覆盖或类型属性,我想知道如何创建一个像第一个一样的形状,通过 DM 创建以便附加到它一个事件听众和其他人一样...

我需要这样做才能用 DM 修改加载的那些..

谢谢

4

1 回答 1

-2

您正在使用overlaycomplete,因此您必须更深入地挖掘。

也许尝试:

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);
      }
    });
于 2014-02-19T18:59:03.490 回答