Mapbox在拖动功能时阻止锚定行为

问题描述 投票:0回答:1

我在mapbox中有一个可拖动的功能。但是当我拖动这个功能时,它会锚定到鼠标(它会跳转)。我不希望这样。有没有办法防止这种情况?

我所拥有的是这种行为(抓住边缘处的点):https://www.mapbox.com/mapbox-gl-js/example/drag-a-point/

我想要的是:https://www.mapbox.com/mapbox-gl-js/example/drag-a-marker/

区别在于第一个是特征,第二个是html标记。但我不想使用html标记,因为它们会对性能产生负面影响。

javascript mapbox mapbox-gl-js
1个回答
2
投票

主要思想是计算特征与鼠标起点之间的像素增量,并在设置新坐标时应用它:

var delta = {
  x: 0,
  y: 0
};
function onMove(e) {
  var coordsXY = {
    x: e.point.x + delta.dx,
    y: e.point.y + delta.dy
  };
  var coords = map.unproject(coordsXY);
  ...
}

map.on('mousedown', 'point', function(e) {
  // Prevent the default map drag behavior.
  e.preventDefault();

  var featureXY = map.project(e.features[0].geometry.coordinates.slice());
  var mouseXY = e.point;
  delta = {
    dx: featureXY.x - mouseXY.x,
    dy: featureXY.y - mouseXY.y
  };
  ...
}

[Qazxswpoi]

© www.soinside.com 2019 - 2024. All rights reserved.