敲代码的狮子 2021-06-24 10:06 采纳率: 0%
浏览 148

leaflet中引入geojson鼠标无法触发事件

const linelayer = L.geoJSON((ress as any), {
      style: (feature:any) => {
            return {
                weight:3,
                color:
                   feature.properties?.color || feature.geometry.properties?.color,

                }
            },
}).on('click', ()=>{console.log(11111)}).addTo(map);

鼠标移入一直是小手形状,点击事件也无法触发,

打印出来的linelayer的events里也有已绑定好的事件

同样方法加入的L.marker的点击事件不受影响

  • 写回答

1条回答 默认 最新

  • 叶秋学长 全栈领域优质创作者 2023-03-10 22:09
    关注

    Leaflet中为图层添加鼠标事件的方式与常规的HTML元素略有不同。您可以使用图层对象的on()方法来添加鼠标事件,例如:

    javascript
    linelayer.on('mouseover', function (e) {
      this.setStyle({
        color: 'red'
      });
    });
    
    linelayer.on('mouseout', function (e) {
      this.setStyle({
        color: 'blue'
      });
    });
    
    linelayer.on('click', function (e) {
      console.log('clicked on layer');
    });
    注意,在这里,我们将事件处理程序附加到了linelayer对象,而不是在geoJSON函数中直接添加事件监听器。
    
    关于小手形状问题,您可以通过设置css样式来更改图层的鼠标指针样式。例如,在CSS文件中添加以下样式:
    
    css
    /* 将鼠标指针样式设置为默认箭头 */
    .leaflet-container .leaflet-overlay-pane svg path,
    .leaflet-container .leaflet-marker-pane img,
    .leaflet-container .leaflet-shadow-pane img,
    .leaflet-container .leaflet-tile-pane img,
    .leaflet-container img.leaflet-image-layer {
      cursor: default !important;
    }
    然后你需要将上述样式表附加到HTML页面中,例如:
    
    html
    <head>
      <link rel="stylesheet" href="path/to/your/css/file.css">
    </head>
    
    

    这应该会解决您遇到的小手形状的问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 想用@vueuse 把项目动态改成深色主题,localStorge里面的vueuse-color-scheme一开始就给我改成了dark,不知道什么原因(相关搜索:背景颜色)
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备
  • ¥100 如何用js写一个游戏云存档
  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计