Openlayers 判断vector加载完成后要素居中

在使用OpenLayersv4.6.5时,添加vectorLayer后直接获取要素可能无法成功,因为图层加载是异步的。为确保在图层加载完成后再进行操作,可以监听vectorSource的'change'事件,当状态变为'ready'时,获取要素并执行居中显示。这种方法确保了在正确的时间获取和处理要素。
摘要由CSDN通过智能技术生成

环境

Openlayers v4.6.5

背景

添加vectorLayer以后,需要定位并居中要素。但是在map.addLayer(vector);后直接用vectorLayer.getSource().getFeatures()获取要素是取不到的,原因是加载图层是异步的,在获取feature的时候图层并没有加载完成。所以获取前,要先判断一下图层是否加载完成才行。

解决方案

对vectorsource添加change的监听事件

// 因为是异步加载,所以要采用事件监听的方式来判定是否加载完成
var ls = _lyr.getSource().on('change', function () {
    if (_lyr.getSource().getState() === 'ready') {
        // 获取要素四至
        let extent = _lyr.getSource().getExtent();
        let view = encMap.encmap.getView();
        view.fit(extent);
        // 注销监听
        _lyr.getSource().un(ls); 
    }
});
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值