TypeError: Невозможно прочитать свойство 'feature' из undefined при попытке рисования элементов с помощью Draw Control - PullRequest
1 голос
/ 05 июля 2019

У меня проблема с отрисовкой фигур с помощью элемента управления Leaflet. Я создал элемент управления рисованием на своей карте, который позволяет пользователям рисовать фигуры (маркеры, линии и т. Д.).

Когда я щелкаю по любому элементу на панели управления рисованием, в консоли браузера появляется следующая ошибка.

Uncaught TypeError: Cannot read property 'Feature' of undefined 
    at NewClass.addHooks (Draw.Polyline.js:71) 
    at NewClass.enable (leaflet.js:5) 
    at NewClass.enable (Draw.Feature.js:38) 
    at HTMLAnchorElement.handler (DomEvent.js:79) 

Я пытался импортировать разные версии Leaflet.draw. Такие как это.

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.js"></script>

И это.

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw-src.css" /> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw-src.js"></script>

Однако, похоже, что ни один из импортеров не работает.

Вот код.

let map = L.map('map', { drawControl: true })
            .setView([42.35, -71.08], 13);

let imageryLayer = L.esri.basemapLayer("Imagery").addTo(map);

let imageryLabelLayer = L.esri.basemapLayer("ImageryLabels").addTo(map);

// Initialise the FeatureGroup to store editable layers
let editableLayers = new L.FeatureGroup();
map.addLayer(editableLayers);


let drawPluginOptions =
{
     position: 'topright',
     draw: {
       polygon: {
          allowIntersection: false, //only allow simple polygons
          drawError: {
              color: 'e1e100', 
               message: '<strong>Oh snap!<strong> you can\'t draw that!' 
          }
     },
     shapeOptions: {
        color: '#97009c'
     },

     polyline: false,
     circle: false, 
     rectangle: false,
     marker: false,
     },
     edit: {
         featureGroup: editableLayers,
         remove: false
     }
};

let drawControl = new L.Control.Draw({ edit: {featureGroup: editableLayers}});
map.addControl(drawControl);

map.on('draw:created', function (e) {
    let type = e.layerType,
    layer = e.layer;

    if (type === 'marker') {
        layer.bindPopup('A popup!');
    }

    editableLayers.addLayer(layer);
});

Это проблема с библиотекой? Или проблема в том, как я инициализировал и использовал свой элемент управления рисованием?

...