Переменная отображения плагинов Leaflet conditionalLayer не определена - PullRequest
1 голос
/ 27 апреля 2020

Я перемещаю проект в веб-пакет, разбивая код на модули, но в некоторых местах я сталкиваюсь с ситуацией, когда плагин или какой-то другой код ожидает, что map будет видимой глобальной переменной. Следующее исключение выдается, потому что карта ему не доступна:

onRemove: function() {
  this._removeMarkers();
  this.onMap = false;
  map.off("moveend", this._update);
},

Uncaught ReferenceError: map is not defined
    at NewClass.onRemove (leaflet.conditionalLayer.js:77)
    at NewClass.removeLayer (Layer.js:185)
    at NewClass._onInputClick (Control.Layers.js:378)
    at HTMLInputElement.handler (DomEvent.js:79)

В настоящее время я создаю переменную карты в файле пакета (map. js в моем случае), который я загружаю вместе со страницей, и импортируйте его в другие модули, подобные этому

import { map } from './map.js';

Весь код листовки и плагины листовок импортируются как скрипты без веб-пакета. Как я могу совместно использовать экземпляр map для всех сценариев, как если бы он был создан без модуля?

На данный момент я решил эту проблему и объявил map как window.map в модуле, и он работает, но кажется, что есть более удобный способ импорта вместо использования оконного объекта.

1 Ответ

1 голос
/ 28 апреля 2020

Похоже, ошибка в плагине leaflet-conditionalLayer .

Его onRemove метод должен либо:

    onRemove: function(map) {
        // (do something)
    }

Хорошая новость заключается в том, что система классов Leaflet должна позволять вам легко исправлять этот плагин, не дожидаясь, пока его автор исправит этот баг:

L.ConditionalMarkers.include({
  onRemove: function (map) {
    this._removeMarkers();
    this.onMap = false;
    map.off("moveend", this._update);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...