【问题标题】:Why leaflet marker still selected after cancel edition?为什么取消版本后仍然选择传单标记?
【发布时间】:2018-09-22 19:40:30
【问题描述】:

我从传单和leaflet.draw 开始,但在尝试更改标记图标时遇到了麻烦。

在这种特殊情况下,当我按下取消编辑按钮时,我会尝试更新所有标记的图标。我可以更改图标,但所有标记仍处于选中状态

这是一个小提琴example

复制步骤

  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 传单.draw 1.0.3

我做错了什么?

【问题讨论】:

  • 你的小提琴有错误。请再次检查。
  • 您好@kboul,我在提琴手的控制台中看不到任何错误。您在哪里看到错误?
  • 地图图块未渲染。 Failed to load resource: net::ERR_NAME_NOT_RESOLVED5939.png
  • 我明白你在说什么。这是一个编辑提琴手jsfiddle.net/roywtaje/30

标签: leaflet leaflet.draw


【解决方案1】:

我快速查看了您的代码,但不确定是什么导致了这个问题。然而,我从控制台深入研究了可编辑标记代码和样式,并意识到一旦你点击编辑按钮,.leaflet-edit-marker-selected 类就会应用于从leaflet.draw.css line 9.派生的每个绘制或渲染标记

因此,一个可能的解决方法是在调用 'draw:editstop' 事件后删除 .leaflet-edit-marker-selected 类:

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

Updated Demo

【讨论】:

  • 这可能是一种解决方法。我刚刚意识到当我在另一个地方调用 setIcon() 时会发生类似的事情。看到这个小提琴jsfiddle.net/roywtaje/48。 1)按编辑,2)单击标记 3)更改组合框的选项 4)样式“leaflet-edit-marker-selected”刚刚从编辑的标记中消失
  • 我转载了你所说的。可能leaflet.draw 不喜欢您更改标记并在编辑模式下应用自定义标记的事实,因此不再应用样式,并且每次更改标记图标并实现自定义时都会强制您手动应用默认标记主题标记。
  • 是的,我也这么认为。我会等几天看看有没有人回答这个问题,如果没有,我会选择你的答案。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 2014-02-16
  • 2018-04-06
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 2011-09-09
相关资源
最近更新 更多