leaflet.draw не отменяется должным образом

В приведенном ниже фрагменте кода я установил плагин leaflet.draw. Прекрасно работает для добавления объектов (линий, маркеров, полигонов). Прекрасно работает для редактирования и удаления. Но операция отмены не работает (как и простой тест пересечения, но я могу жить без этого). Есть идеи, что я сделал не так, чтобы настроить плагин?

(Chrome V44, листовка 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

и вот код, который я использую для настройки sheet.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);
     }

person Dr.YSG    schedule 23.11.2015    source источник
comment
Не могли бы вы поставить это на скрипку?   -  person Stranded Kid    schedule 26.11.2015
comment
Я был неправ. Он работает в листовке 7.7, не работает в 1.0 beta 2   -  person Dr.YSG    schedule 27.11.2015
comment
То есть 0,7, 7,7 пока нет. 1.0 на сегодняшний день все еще является кандидатом на выпуск. См. Подробный ответ ниже.   -  person nothingisnecessary    schedule 18.06.2016


Ответы (1)


Эта версия плагина Leaflet.draw несовместима с используемой вами версией Leaflet.

Обязательно прочтите документацию по плагину, в ней говорится, что вы должны использовать Leaflet.js 0.7.

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

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

Со страницы github Leaflet.draw: "Leaflet.draw 0.2.3+ требует Leaflet 0.7.x."

На сегодняшний день, похоже, существует форк Leaflet.draw, который разрабатывается для Leaflet 1.0 RC: https://github.com/Leaflet/Leaflet.draw/tree/leaflet-master

person nothingisnecessary    schedule 18.06.2016