javascript - 在谷歌地图上右键单击

标签 javascript google-maps

我正在尝试在谷歌地图上启用可见多边形的右键功能。我需要右键单击选项,以便在将多边形放置在 map 上后可以启用删除顶点。但是,我无法让 addListener 识别右键单击事件。

function initMap() {
    var selectedShape;

    var map = new google.maps.Map(document.getElementById('map'), {
        center: {
            lat: -34.397,
            lng: 150.644
        },
        zoom: 8
    });

    var drawingManager = new google.maps.drawing.DrawingManager({
        drawingMode: google.maps.drawing.OverlayType.POLYGON,
        drawingControl: true,
        drawingControlOptions: {
            position: google.maps.ControlPosition.TOP_CENTER,
            drawingModes: ['circle', 'polygon', 'rectangle']
        },
        polygonOptions: {
            editable: true,
            draggable: true
        },
        circleOptions: {
            editable: true,
            draggable: true
        },
        rectangleOptions: {
            editable: true,
            draggable: true
        }


    });
    drawingManager.setMap(map);

    //load preset data


    function setJSON(Shape) {
        console.log(Shape.type);
        if (Shape.type === "circle") {
            return '{"type":"'+Shape.type +'", "lat":"'+Shape.getCenter().lat()+'", "lng":"'+Shape.getCenter().lng()+'", "radius":"'+Shape.getRadius()+'"  }';
        }
        if (Shape.type === "rectangle"){
            return '{"type":"' + Shape.type + ', "start":"'+ Shape.getBounds().getNorthEast() +'", "end":"'+ Shape.getBounds().getSouthWest() +'"}';
        }
        if (Shape.type === "polygon"){
            //eturn '{"type":"'+ Shape.type +'"}' + Shape.getPaths();
            vertice = Shape.getPath();
            console.log("vertice count:  " +  vertice.getLength());
            JSON = '{"type":"'+ Shape.type +'", "coordinates": "';
            vertice.forEach(function(xy, i) {
                JSON = JSON + xy.lat() + ' ' + xy.lng() + ', ';
            });

            JSON = JSON.slice(0,-2) + '"}';
            return JSON;
        }

        return 0
    }



    google.maps.event.addListener(drawingManager, 'overlaycomplete', function(event) {

        drawingManager.setMap(null);

        var newShape = event.overlay;
        newShape.type = event.type;
        selectedShape = newShape;
        console.log(setJSON(selectedShape));

        if (newShape.type === "circle" || newShape.type === "rectangle") {

            google.maps.event.addListener(selectedShape, 'bounds_changed', function(event){
                console.log(setJSON(selectedShape));
            });

        }

        if (newShape.type === "polygon") {

            google.maps.event.addListener(selectedShape.getPath(), 'set_at', function(event) {
                // complete functions
                console.log(setJSON(selectedShape));
            });

            google.maps.event.addListener(selectedShape.getPath(), 'insert_at', function(event) {
                // complete functions
                console.log(setJSON(selectedShape));
            });

            google.maps.event.addListener(selectedShape.getPath(), 'rightclick', function(event) {
                console.log('right-click');
            })

        }


    });

    google.maps.event.addDomListener(document.getElementById('btnClear'), 'click', function(event) {
        selectedShape.setMap(null);
        drawingManager.setMap(map);
    });

}

最佳答案

一个MVCArray (这是路径返回的内容)没有右键单击事件。 Polygon会有一个。这段代码对我有用:

google.maps.event.addListener(newShape, 'rightclick', function(event) {
  console.log('right-click');
});

proof of concept fiddle

关于javascript - 在谷歌地图上右键单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44853418/

相关文章:

ios - GMSAddress placeID属性丢失。

Javascript onclick 函数与 if 和 else 不按其应有的方式工作

javascript - Sequelize 无法导入模型

javascript - Angular 错误 $mdDialog.show 不是函数

Android更新textview计时器并刷新 map 内容?

javascript - Google map WatchPosition 无法正常工作

javascript - 如何使用 JavaScript 获取 Google map 上两个形状之间的最短距离?

javascript - Node : How to make spawn function synchronous instead of using spawnSync?

javascript - 为什么我的 Marionette itemView 不渲染?

iphone - Google Maps iOS SDK 集成不加载 map