leaflet.draw:检查是否存在现有图层

时间:2019-11-13 02:39:05

标签: javascript php codeigniter leaflet leaflet.draw

我有此mousemove功能:

$("#mapContainer").on("mousemove", "#colorpicker"+mapNo, function(event){
        //do something here
        //layer.setStyle({color: color, fillColor: color}); 

    });

每当我在mousemove函数中删除 layer.setStyle 的注释时,都会出现错误“未定义图层” ,因此我希望调用mousemove函数当地图中已经存在图层时。我在定义图层的地方有此功能:

function drawCreated(e) {
        type = e.layerType,
        layer = e.layer;

        layer.addTo(drawnItems); 
        console.log(type, ' drawn', layer);

        //for drawing
        if (type === 'circle') {
            var theCenterPt = layer.getLatLng();

            var theRadius = layer.getRadius();
            var center = [theCenterPt.lng,theCenterPt.lat]; 
            console.log(center);
            points['lng'] = theCenterPt.lng;
            points['lat'] = theCenterPt.lat;
            points['radius'] = theRadius;

            console.log(points);

            drawnItems.addLayer(layer);
            //drawnItems.setStyle({color: color, fillColor: color});

        } 

        if(map.hasLayer(layer)){
            console.log("true");
            //must call the mousemove function here or mousemove will work when there is a layer
        }else{
            console.log("false");
        }


}

1 个答案:

答案 0 :(得分:0)

看看我的例子:

https://jsfiddle.net/falkedesign/95g08z71/10/

您必须用图层替换“圆形”。

// https://iro.js.org/guide.html#color-picker-events
colorPicker.on(["color:init", "color:change"], function(color){
      circle.setStyle({fillColor: color.hexString});
});

要说什么在您的代码中不起作用,我需要一个有效的示例。也许您可以创建小提琴或将您的代码上传到网站。