0

我是 Leaflet.js 和 CartoDB 的新手。我已经能够显示 Leaflet.draw 编辑工具栏,但无法设置配置选项。这个JSFiddle展示了设置选项以及定义可编辑层的尝试,请参见下面的代码:

var options = {
    position: 'topright',
    draw: {
        polyline: false,
        polygon: false,
        circle: false, 
        rectangle: false,
        marker: {
            icon: new MyCustomMarker()
        }
    },
    edit: {
        featureGroup: layerUrl, //REQUIRED!!
        remove: false
    }
};

我想知道我是否将此代码放在正确的函数中?

4

1 回答 1

0

您正在创建一个选项对象并且没有在任何地方使用它。如果要为 Leaflet Draw 使用自定义选项,则需要单独实例化控件,以便将选项对象添加到其中。接下来,您将引用editableLayers作为保存绘制对象的层,但您没有在任何地方创建实际层。按着这些次序:

首先drawnControl: true从您的地图选项中取出:

map = new L.Map('cartodb-map', { 
    center: [40,-98],
    zoom: 4,
}) 

创建一个实际图层以在您的绘图选项中使用并将其添加到地图中:

var editableLayers = new L.FeatureGroup();

现在因为上面的行editableLayers包含对实际层的引用,并且不会Uncaught ReferenceError: editableLayers is not defined在您的控制台中抛出:

var options = {
    position: 'topright',
    draw: {
        polyline: false,
        polygon: false,
        circle: false, 
        rectangle: false,
        marker: {
            icon: new MyCustomMarker()
        }
    },
    edit: {
        featureGroup: editableLayers, //REQUIRED!!
        remove: false
    }
};

现在使用您的选项单独创建绘图控件并将其添加到地图中:

var drawControl = new L.Control.Draw(options).addTo(map);

这是你的 Fiddle 的一个工作分支:http: //jsfiddle.net/ryntc3vv/

说了这么多,我真的很想知道你在哪里想出你做过/想做的事情。这没有任何意义,所以如果你在某个地方学习某种教程,我会说把它扔掉并坚持在 Leaflet Draw 存储库中随 Leaflet draw 提供的文档:https ://github.com/Leaflet /Leaflet.draw#adding-the-edit-toolbar我在这里和您之前的问题中所做的所有事情都被完美地涵盖了。

于 2015-03-17T21:31:01.973 回答