leaflet事件传参

leaflet中的on和off与js中的事件方法还是有些区别,他似乎并不能像js中绑定事件的方法一样,直接将数据以对象的形式作为事件方法的参数传入到事件中,那我们如果要在leaflet绑定的事件中动态的传入数据怎么办呢?

 

其实办法还是有的,以marker为例,假如一个click事件绑定到marker上,我们其实可以把数据以对象的形式传到绑定该事件的maerker的options对象中,例如:

function loadShipLayer(){
    if(shipLayer == null){
        shipLayer = new L.layerGroup();

        var shipData = eval(ship_cache);

        var icon = L.icon({
            iconUrl: 'img/svg/ship2.svg', // ------这里设置图标
            iconSize: [46, 46]
        });

        for(var i = 0; i < shipData.ship.length; i++){
            var shipInfo = shipData.ship[i];
            for(var key in shipInfo){
                var ship = shipInfo[key];
                var shipOri = ship.ship_section.split('-')[0];
                var shipDes = ship.ship_section.split('-')[1];
                var point =[ship.ship_latitude,ship.ship_longitude];

                /*  leaflet中title的换行是\n */
                L.marker(point,{Ship:ship,icon: icon,title:ship.ship_id+"\n"+shipOri+" — "+shipDes}).addTo(shipLayer).on('click',function () {

                    var index = layer.open({
                        type: 2,
                        skin: 'layui-layer-hei', //样式类名
                        title: '通航查询',
                        shadeClose: true,
                        shade: false,
                        maxmin: true, //开启最大化最小化按钮
                        area: ['90%', '90%'],
                        content: 'navQuery.html?shipOri='+this.options.Ship.ship_section.split('-')[0]+
                        '&shipDes='+this.options.Ship.ship_section.split('-')[1]+
                        "&shipStaTime="+this.options.Ship.ship_updateTime+
                        "&shipEndTime="+this.options.Ship.ship_arriveTime+
                        "&shipId="+this.options.Ship.ship_id
                    });
                    layer.full(index);
                });
            }
        }
    }
    return shipLayer;
}

 

转载于:https://www.cnblogs.com/unique1319/p/7555017.html

要在Leaflet中关闭点击事件,您可以使用off()方法来移除事件监听器。例如,如果您想要关闭地图上的点击事件,可以使用以下代码: ```javascript map.off('click'); ``` 这将从地图上移除所有的点击事件监听器。您还可以通过指定特定的函数来移除单个事件监听器。例如,如果您想要移除特定函数onMapClick()作为点击事件的监听器,可以使用以下代码: ```javascript map.off('click', onMapClick); ``` 这将从地图上移除指定的点击事件监听器。请注意,这里的onMapClick是一个代表特定函数的引用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [leaflet——地图事件](https://blog.csdn.net/black2Girl/article/details/85263405)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [leaflet-交互事件](https://blog.csdn.net/s_9527_s/article/details/125558520)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值