我正在使用Leaflet.loading在L.TileLayer.WMS切片图层加载时在leafletjs map 上显示加载图标,这在缩放或平移 map 时效果很好。但是,如果用户在不移动 map 的情况下打开了WMS切片图层,则不会触发加载图标。

Leaflet.loading指令状态:



如何在WMS切片图层负载开始和结束时触发这两个事件?

最佳答案

假设您具有以下图层实例:

var layerInstance = L.tileLayer(layerUrl, layerOptions).addTo(mapInstance);

您可以捕获加载和加载事件,然后触发类似的 map 事件:
layerInstance.on('loading', function (event) {
    mapInstance.fireEvent('dataloading', event);
});

layerInstance.on('load', function (event) {
    mapInstance.fireEvent('dataload', event);
});

如果需要在多个层上执行此操作,也可以分离处理程序功能:
var loadingHandler = function (event) {
    mapInstance.fireEvent('dataloading', event);
};

var loadHandler = function (event) {
    mapInstance.fireEvent('dataload', event);
};

layerInstanceFoo.on('loading', loadingHandler);
layerInstanceFoo.on('load', loadHandler);

layerInstanceBar.on('loading', loadingHandler);
layerInstanceBar.on('load', loadHandler);

请参阅引用以获取可用的tilelayer eventsfireEvent method

09-11 00:39
查看更多