zoukankan      html  css  js  c++  java
  • 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

    
    

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

    
    

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

  • 相关阅读:
    python——numpy模块
    python——xlrd、xlwt、xlutils模块
    python——json&pickle模块
    python——sys模块
    python——os模块
    python——random模块
    python——time模块
    linux命令 pwd
    linux 里面ls命令!!
    校花网图片爬取
  • 原文地址:https://www.cnblogs.com/yiliangmi/p/11173473.html
Copyright © 2011-2022 走看看