【问题标题】:leaflet.draw does not cancel properlyLeaflet.draw 没有正确取消
【发布时间】:2015-11-23 17:35:59
【问题描述】:

在下面的代码 sn-p 中,我设置了 leaflet.draw 插件。可以很好地添加功能(线、标记、多边形)。适用于编辑和删除。但是取消操作不起作用(简单的交集测试也不起作用,但我可以没有它)。知道我在设置插件时做错了什么吗?

(Chrome V44,leaflet 1.0 Beta 2,leaflet.draw (0.2.4-dev)(似乎在传单“0.7.7”中也失败了)。

这是错误:

Uncaught TypeError: Cannot read property '0' of undefined
L.Polyline.L.Path.extend._projectLatlngs @ leaflet-src.js:5535
L.Polyline.L.Path.extend._projectLatlngs @ leaflet-src.js:5547
L.Polyline.L.Path.extend._projectLatlngs @ leaflet-src.js:5547
L.Polyline.L.Path.extend._project @ leaflet-src.js:5519
L.SVG.L.Renderer.extend._updatePath @ leaflet-src.js:6042
L.Path.L.Layer.extend.redraw @ leaflet-src.js:5130
L.Polyline.L.Path.extend.setLatLngs @ leaflet-src.js:5411
L.EditToolbar.Edit.L.Handler.extend._revertLayer @ leaflet.draw-src.js:2759
(anonymous function) @ leaflet.draw-src.js:2716
L.LayerGroup.L.Layer.extend.eachLayer @ leaflet-src.js:4865
L.EditToolbar.Edit.L.Handler.extend.revertLayers @ leaflet.draw-src.js:2715
L.EditToolbar.L.Toolbar.extend.disable @ leaflet.draw-src.js:2578handler @ leaflet-src.js:6953

这是我用来设置leaflet.draw的代码

     var theMap;
     var mapLayer;
     var carLayer;
     var drawLayer;
     var drawControl;
     var trackerButton;
     ....
         this.setupDraw();

         theMap = L.map('mapCanvas', {
             center: mCityCenter,
             zoom: 20,
             layers: [osmLight, mapLayer, carLayer, drawLayer]
         });
         theMap.on("draw:created", this.addDrawing);
      ....
     this.setupDraw = function () {
         drawLayer = new L.FeatureGroup();

         drawControl = new L.Control.Draw({
             draw: {
                 polygon: {
                     allowIntersection: false, // Restricts shapes to simple polygons
                     showArea: true,
                     drawError: {
                         color: '#e1e100', // Color the shape will turn when intersects
                         message: '<strong>Oh snap!<strong> you can\'t draw that!' // Message that will show when intersect
                     }
                 }
             },
             edit: {
                 featureGroup: drawLayer
             }
         });
     }
     this.addDrawing = function (e) {
         var type = e.layerType;
         var layer = e.layer;

         if (type === 'marker') { }
         drawLayer.addLayer(layer);
     }

【问题讨论】:

  • 你能把这个放在小提琴上吗?
  • 我错了。它适用于传单 7.7,不适用于 1.0 beta 2
  • 你的意思是 0.7,还没有 7.7。截至今天,1.0 仍然是一个候选版本。请参阅下面的详细答案。

标签: leaflet leaflet.draw


【解决方案1】:

该版本的 Leaflet.draw 插件与您使用的 Leaflet 版本不兼容。

请务必阅读该插件的文档,其中说明您应该使用 Leaflet.js 0.7。

Leaflet.draw:https://github.com/Leaflet/Leaflet.draw

Leaflet.JS:http://leafletjs.com/reference.html

来自 Leaflet.draw github 页面:“Leaflet.draw 0.2.3+ 需要 Leaflet 0.7.x。”

截至今天,Leaflet.draw 的一个分支似乎正在针对 Leaflet 1.0 RC 进行开发:https://github.com/Leaflet/Leaflet.draw/tree/leaflet-master

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2018-10-12
    • 2011-04-07
    相关资源
    最近更新 更多