Leafletjs防止拖动标记的特定区域

时间:2017-12-12 15:27:29

标签: javascript svg leaflet

我正在将leafletj用于非地理应用程序,用户可以在其中向地图添加图标(标记)并在不同图标的“端口”之间绘制线条。 端口简单地定义为相对于图标视口左上角的x,y位置(图标为SVG)。

我扩展L.Marker以提供SVGMarker类并实现onMouseOver函数来检测鼠标何时在端口上(在容差范围内)并适当地更改光标。

使用传单的拖动功能将标记定义为draggable

现在我想实现一个onMouseDown函数,当用户点击一个端口并开始拖动时开始绘制一条线。

onMouseDown功能检测到我在靠近端口时,如何覆盖拖动功能?

onMouseDown: function(event) {
  let nearPort = false;

  const { offsetX, offsetY } = event.originalEvent;
  const { ports } = this.options;
  for (let i = 0; i < ports.length; i++) {
    const currentPort = ports[i];

    // Calculate euclidian distance from mouse press location to the current port location
    const dist = distance(currentPort.x, offsetX, currentPort.y, offsetY);
    nearPort = (dist < this.options.tolerance);
    if (nearPort) {
       // TODO: Prevent marker from being dragged and start drawing line
       break;
    }
  }


}

0 个答案:

没有答案