Mapbox gl:在鼠标悬停在图层上时更改光标指针样式

时间:2019-04-07 15:14:13

标签: mapbox mapbox-gl-js

我有10到15个不同的不同图层,例如汽车,公交车,路线等。这些图层我在需要时在地图上添加了动态信息,因为所有时间都不在地图上。

因此,我要单击有关图层的信息,但是我想在将鼠标悬停在图层上时将鼠标指针的光标样式更改为“十字线”。

我已经在mouseenter事件上编写了更改光标样式,但是即使鼠标悬停在图层上,但光标样式没有改变,它有时还是可以工作,有时。

第一种方式:

 map.on('mouseenter', (e: any) => {
      self.mapInstance.getCanvas().style.cursor = 'crosshair';
    });

第二种方式:

      map.on('mouseenter',(e: any) => {         
       var features = map.queryRenderedFeatures(e.point,{ layers: ['Car',"Bus"] });
//error let's say any layer still on exist on map
        if(features.length)
         map.getCanvas().style.cursor = 'crosshair';    
            });

我的问题

  1. 光标样式没有改变

  2. queryRenderedFeatures之类的图层错误不存在

  3. 鼠标在悬停层上闪烁

如何获取鼠标悬停在不同层上的更改样式?

3 个答案:

答案 0 :(得分:0)

鼠标移动怎么样?

//一些填充,因为SO至少需要30个字符才能发布...

答案 1 :(得分:0)

Terminated due to signal 9

这是专门使它与cluser一起使用的方法,但是代码可能仍然有用。

祝你好运!

答案 2 :(得分:0)

 map.on("mouseenter", layer.id, () => {
          map.getCanvas().style.cursor = "pointer";
        });

 map.on("mouseleave", shape.id, () => {
          map.getCanvas().style.cursor = "default";
        });

您可以向每个图层添加自定义事件,例如点击。鼠标事件也是如此。