更改 MapboxGl 上的右键和左键单击功能

Nar*_*yan 1 javascript mapbox mapbox-gl-js

我想更改 mapboxGl 上的鼠标单击功能。我需要在地图上实现右键平移,但没有相关文档。因此,我尝试禁用右键单击地图旋转并启用平移,但没有任何效果,它只是禁用了旋转,但未触发平移。

我想知道是否有一种方法可以以编程方式启动和停止拖动/平移,我知道您可以启用它,但我需要实际开始平移。

想让它变得干净简单,我想你可以在鼠标移动上添加侦听器,然后更改地图边界,但它看起来不太好。有没有更简单的方法来启动dragPan?

小智 5

我不知道为什么你想改变左键和右键,如果你想要左手,他们应该改变鼠标设置。
但是,无论如何,可以右键单击来拖动地图。

map.dragPan.disable();
map.dragRotate.disable();

var isMoving = false;
var offset;
map.on("contextmenu", (e) => {});
map.on("mousedown", (e) => {
  if (e.originalEvent.button === 2) {
    isMoving = true;
    offset = e.point;
  } 
});
map.on("mousemove", (e) => {
  if (isMoving) {
    map.panBy([offset.x - e.point.x, offset.y - e.point.y], {
      duration: 0,
    });
    offset = e.point;
  }
});
map.on("mouseup", (e) => {
  isMoving = false;
});
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/cs09g/cnz4xhkt/4/