使mapboxgl-js弹出窗口保持打开状态,并使侦听器绑定到鼠标移动

时间:2019-05-14 14:52:16

标签: mapbox mapbox-gl-js mapbox-gl

我正在绘制带有路线(LineString)的地图,并且正在处理

  • 鼠标悬停(通过setFeatureState使它们看起来更粗
  • 鼠标单击-选择一条路线并在地图外显示一些信息

在单击(e.features.length > 1)下检测到两条路线的情况下,我想显示带有消歧信息/链接的new Popup({ closeButton: true }),以便用户可以精确选择他们想要的路线。

不幸的是,当用户尝试进入弹出区域以单击其中的链接时,跟踪鼠标的移动会导致弹出窗口消失。

所以我要做的是,在显示弹出窗口之前先解除鼠标移动监听器的绑定,然后在关闭时重新绑定

showPopup(mapbox){
  this.removeListeners(mapbox);

  const popup = new mapboxgl.Popup({
    closeButton: true,
    closeOnClick: true,
  });

  popup.once('close', () => {
    this.addListeners(mapbox);
  });
}

有没有更好的API方法来解决这个问题?

0 个答案:

没有答案