openlayer加载图文标注,加载echarts图,并随地图缩放

先看一下效果,主要实现了三种图文标注的效果:

第一种:文字 + 图片,文字在图片中间,图片随地图缩放而缩放

第二种:文字 +  图片,文字分布在图片的上方和下方,图片随地图缩放而缩放

第三种:文字 + 图片 + echarts图表,图片和echarts图表随地图缩放而缩放

关于图文标注的展示,网上教程很多,在下就不做赘述,主要说明一下图片随地图缩放而缩放的思路:

1、获取当前缩放等级

2、根据缩放等级,刷新图层,并动态设置图片的宽和高

第一步的关键代码如下:

function createLabelStyle3(feature) {
        var _zoom = map.getView().getZoom(),
            _scale = _zoom * 0.083;

        var fontSize = 'bold ' + feature.get('fontSize') * _scale + 'px 微软雅黑';

        var imgWidth = feature.get('imgWidth'); //图片宽
        var imgHeight = feature.get('imgHeight');  //图片高

        var offsetY = -(imgHeight * _scale);  //height
        var textContent = '数据:' + feature.get('sl') + '个' + '
' + '数据2:' + feature.get('whl') + '%';
        var text = new ol.style.Text({
            textAlign: 'center',            //位置
            textBaseline: 'bottom',         //基准线
            font: fontSize,    //文字样式
            offsetY: offsetY / 2,  //y方向偏移
            text: textContent,      //文本内容
            fill: new ol.style.Fill({       //文本填充样式(即文字颜色)
                color: feature.get('textFillColor')
            })
        });
        return new ol.style.Style({
            text: text
        });
    }

第二步的关键代码如下:

       //动态改变vector layer的样式
        var features = layer.getSource().getFeatures();

        $.each(features, function (index, value) {
            var feature = value;
            feature.setStyle(createLabelStyle(feature));
        });

     //动态改变overlay的样式
        map.getOverlays().clear();
        var _zoom = map.getView().getZoom();
        if (_zoom > 2 && echartsDataObj) {
            $.each(echartsDataObj, function (index, obj) {
                createLayerType4(obj);
            });
        }

示例代码由大吴哥整理,加群私聊他即可获取。

-------------------------------------------------------------------------------------------------


QQ群:871934478


版权所有,转载请注明源地址                          


-------------------------------------------------------------------------------------------------

原文地址:https://www.cnblogs.com/yiliangmi/p/11173473.html