zoukankan      html  css  js  c++  java
  • 项目中应用到的框架和技术之二——ol3-ext

    ol3-ext有很多很丰富的效果,可以不用重复造轮子,ol3-ext示例大全:http://viglino.github.io/ol3-ext/

    在本次项目中使用到了ol3-ext的两个功能:图层管理器和辅助工具栏

    1.图层管理器

    实现的功能有:

    1)设置图层显示与隐藏

    2)设置图层组显示与隐藏

    3)设置图层透明度

    4)设置图层顺序

    5)当前比例尺不显示的图层灰色显示

    代码:

        // A group layer for base layers
        var baseLayers = new ol.layer.Group(
            {
                title: '图层',
                openInLayerSwitcher: true,
                layers: [
                    new ol.layer.Tile({
                        title: "OSM",
                        source: new ol.source.OSM({
                            attributions: []
                        })
                    }),
                    vectorLayerXB,
                    vectorLayerXBLabel,
                    vectorLayerCun,
                    vectorLayerXiang,
                    vectorLayerXian,
                    vectorLayerShi,
                    vectorLayerSheng,
                    vectorLayerGuo,
                    vectorTemp
                ]
            });
    
        var layerSwitcherControl = new ol.control.LayerSwitcher();
        map.addControl(layerSwitcherControl);

     2.辅助工具栏

    代码:

        //初始化辅助工具栏
        this.mainbar = new ol.control.Bar();
    
        // Edit control bar
        var editbar = new ol.control.Bar(
            {
                toggleOne: true,    // one control active at the same time
                group: false            // group controls together
            });
        this.mainbar.addControl(editbar);
    
        //线测量
        var lineMeasure = new ol.control.TextButton(
            {
                html: '<i class="material-icons">show_chart</i>',
                title: "线测量",
                handleClick: function () {
                    var ToolManager = require('../../mapzone-ol3-plugin/mzTool/mzToolManager.js');
                    var manager = ToolManager.getToolManager(this.map_);
                    manager.getTool('测量').setMeatureType('LineString');
                }
            });
    
        editbar.addControl(lineMeasure);
    
        //面测量
        var lineMeasure = new ol.control.TextButton(
            {
                html: '<i class="material-icons">panorama_wide_angle</i>',
                title: "面测量",
                handleClick: function () {
                    var ToolManager = require('../../mapzone-ol3-plugin/mzTool/mzToolManager.js');
                    var manager = ToolManager.getToolManager(this.map_);
                    manager.getTool('测量').setMeatureType('Polygon');
                }
            });
    
        editbar.addControl(lineMeasure);
    
        //完成本次测量
        var finishDrawing = new ol.control.TextButton(
            {
                html: '<i class="fa fa-check"></i>',
                title: "完成",
                handleClick: function () {
                    var ToolManager = require('../../mapzone-ol3-plugin/mzTool/mzToolManager.js');
                    var manager = ToolManager.getToolManager(this.map_);
                    manager.getTool('测量').interaction.finishDrawing();
                }
            });
    
        editbar.addControl(finishDrawing);
    
        //取消本次测量
        var cancleDrawing = new ol.control.TextButton(
            {
                html: '<i class="fa fa-times"></i>',
                title: "取消",
                handleClick: function () {
                    var ToolManager = require('../../mapzone-ol3-plugin/mzTool/mzToolManager.js');
                    var manager = ToolManager.getToolManager(this.map_);
                    manager.getTool('测量').interaction.abortDrawing_();
                }
            });
    
        editbar.addControl(cancleDrawing);
    
    
        //清除测量结果
        var clearMeasureResult = new ol.control.TextButton(
            {
                html: '<i class="fa fa-paint-brush"></i>',
                title: "清除测量结果",
                handleClick: function () {
                    var ToolManager = require('../../mapzone-ol3-plugin/mzTool/mzToolManager.js');
                    var manager = ToolManager.getToolManager(this.map_);
                    manager.getTool('测量').clearMeasureResult();
                    manager.getTool('测量').setMeatureType(manager.getTool('测量').measureType);
                }
            });
    
        editbar.addControl(clearMeasureResult);
    
        //加载辅助工具栏
        this.interaction.map_.addControl(this.mainbar);
  • 相关阅读:
    PowerDesigner15在win7-64位系统下对MySQL反向工程
    像竹子一样有节操
    spring 注解
    如何实现在已有代码之后添加逻辑之java动态代理
    如何实现在已有代码之后添加逻辑之继承,组合(静态代理)实现方法
    MySql按周,按月,按日分组统计数据
    SpringBoot 获取前端传递Json的几种方法
    Spring boot 基础整理(一)
    layui常用插件(二) 时间插件
    layui常用插件(一) 轮播图
  • 原文地址:https://www.cnblogs.com/conorpai/p/6595751.html
Copyright © 2011-2022 走看看