Почему маркер листовки остается выбранным после отмены издания? - PullRequest
0 голосов
/ 22 сентября 2018

Я начинаю с leaflet и leaflet.draw и у меня возникают проблемы с тем, как я пытаюсь изменить значок маркера.

В этом конкретном случае я пытаюсь обновить значок всех маркеров, когдаЯ нажимаю кнопку отмены издания.Я могу изменить значки, но все маркеры все еще выбраны

Вот скрипка пример

Шаги для воспроизведения

  1. Нажмите кнопку редактирования
  2. Нажмите отменить редактирование
  3. Вы увидите, что все маркеры изменили свои значки, но в то же время все маркеры все еще выбраны

Вот код, который у меня естьдля имитации отмены изменения значка:

drawControl._toolbars.edit.disable =  function () {
  if (!this.enabled()) {
       /* If you need to do something right as the
       edit tool is enabled, do it here right
       before the return */
    return;
  }

  geojsonLayer.eachLayer(function(layer) {
     layer.setIcon(new  L.Icon.Default({}));
  });
  geojsonLayer2.eachLayer(function(layer) {
     layer.setIcon(new  L.Icon.Default({}));
  });

   this._activeMode.handler.revertLayers();

   L.Toolbar.prototype.disable.call(this);
};    

Версии: листовка 1.3.4 leaflet.draw 1.0.3

Что я делаю не так?

1 Ответ

0 голосов
/ 23 сентября 2018

Я быстро взглянул на ваш код и не уверен, что является причиной этой проблемы.Однако я немного углубился в редактируемый код и стиль маркера с консоли и понял, что после нажатия кнопки редактирования класс .leaflet-edit-marker-selected применяется к каждому из нарисованных или визуализированных маркеров, полученных из leaflet.draw.css line 9.

Таким образом, возможный обходной путь - удалить класс .leaflet-edit-marker-selected после вызова события draw: editstop:

map.on('draw:editstop',function(e) {
    $(".leaflet-pane img").removeClass("leaflet-edit-marker-selected");
    editing=false;
    map.closePopup();
});

Обновленная демоверсия

...