在传单中重绘自定义标记

时间:2015-04-29 09:22:31

标签: javascript leaflet

我创建了一个自定义标记并将其添加到绘图控件工具栏中,如下所示:

L.Draw.myMarker = L.Draw.Marker.extend({
    initialize : function(map, options) {
        this.type = 'myMarker';
        L.Draw.Feature.prototype.initialize.call(this, map, options);
    }
});

现在,我可以从绘图控件工具栏中在地图上绘制此标记。

要求:

此外,我需要在数据库中保存所有myMarker的详细信息(latlong,options等)。稍后我需要通过从DB中获取详细信息然后在地图上显示它们来重绘相同的标记。

问题:

我只找到了一个重新创建标记的解决方案:

//Step 1. Extending marker with Marker class
L.myMarker = L.Marker.extend({});
//Step 2. Recreating marker with the persisted data
L.myMarker([lat, long], {}).addTo(map);

但我想创建我之前用工具栏绘制的L.Draw.myMarker实例。

所以我需要这样的L.Draw.myMarker([lat, long], {}).addTo(map);

1 个答案:

答案 0 :(得分:1)

根据您的情况,我认为您将不得不在L.Marker范围内复制某些自定义标记逻辑,以便能够在Leaflet.draw上下文之外使用它...因为{ {1}}从L.Draw.Markerhttps://github.com/Leaflet/Leaflet.draw/blob/master/src/draw/handler/Draw.Marker.js#L1)延伸,而传单的标记延伸自L.Draw.Featurehttps://github.com/Leaflet/Leaflet/blob/master/src/layer/marker/Marker.js#L5)..So,这不完全是一个明确的继承树在这两者之间取代。