Vue+Webpack+OpenLayers6完成组件化的WebGIS开发(二、组件化开发WebGIS实例)

【Vue】前端工程化与 webpack 在实际开发过程中,webpack 默认只能打包处理以 .js后缀名结尾的模块。其他非 .js 后缀名结尾的模块,webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错。loader 加载器的作用:协助 webpack 打包处理特定的文件模块。比如:css-loader 可以打包处理 .css 相关的文件less-loader 可以打包处理 .less 相关的文件。 阅读详情

上一章我们搭建了vue-cli,npm等环境,并且基于组件化开发的模式借助vue+webpack+openlayers6实现了地图的加载。今天这一章,我们将继续组件化的开发地图相关功能,我会通过具体的地图功能实例来进行阐述,大家加油!

这里把上一章内容链接发一下:https://blog.youkuaiyun.com/MagicMHD/article/details/104962747

一、地图双屏联动功能的开发

1、在上一章新建的项目的基础上添加一个DoubleMap组件如下图:

2、编写DoubleMap组件完成双屏联动效果,代码如下:

<template>
      <div>
            <p>地图1</p>
            <div id="map1"></div>
            <p>地图2</p>
             <div id="map2"></div>
      </div>
</template>
<script>
import 'ol/ol.css'
import View from 'ol/View'
import Map from 'ol/Map'
import TileLayer from 'ol/layer/Tile'
import {OSM, TileArcGISRest} from 'ol/source';
export default {
    name:'OlMap',
    mounted() {   
      //渲染地图
      //1、首先创建一个视图
      var view=new View({
            center: [0, 0],
            zoom: 2
      })
      //2、创建地图图层
      var layers1=[
            new TileLayer({
                  source: new OSM()
            })
      ]
      var layers2=[
            new TileLayer({
                  source: new OSM()
            })
      ]
      //3、创建第一个地图
      var map1=new Map({
             target: 'map1',
             layers: layers1,
             view: view
      })   
      //4、创建第二个地图
      var map2=new Map({
            layers: layers2,
            target: 'map2',
            view: view
      })
    }     

}
</script>
<style lang="stylus" scoped>
#map1
      width:600px
      height:250px
#map2
      width:600px
      height:250px
</style>

这里我们新建了两个map,但是让两个map共用一个view,这样就可以达到双屏联动的效果,如果你只是想双屏展示,不想联动,那就让两个map分别对应不同的view即可。

3、调用DoubleMap组件完成地图双屏联动

首先我们要在Home组件里面引入DoubleMap局部组件,包括:引入DoubleMap组件、声明局部组件和最后在模板中使用局部组件这三步,Home.vue组件的具体代码如下:

<template>
  <!-- 这里我们就可以用引入的HomeMap组件了,大小写用破折号 -->
    <home-double-map></home-double-map>
</template>

<script>
// 首先引入局部组件
import HomeMap from './components/Map'
import HomeDoubleMap from './components/DoubleMap'
export default {
  name: 'Home',
  // 需要声明局部组件
  components: {
    HomeMap: HomeMap,
    HomeDoubleMap: HomeDoubleMap
  }
}
</script>

<style scoped>
</style>

这里面还有上一章引入的Map组件,我没删除但是在模板template里面只用了DoubleMap组件,所以程序界面也就只会显示地图双屏联动的功能了!

4、运行程序测试

效果如下图所示:

当我们移动一个地图时,另外一个地图也会移动,也就实现了地图联动功能!

二、地图上下左右移动及定位功能

1、新建MapLoc组件,如下图所示:

2、编写MapLoc组件,使之完成地图上下左右移动及定位功能,代码如下:

<template>
      <div>
            <div>
                  <div id="map"></div>
            </div>

            <div>
                  <button @click="moveToLeft">左移</button>
                  <button @click="moveToRight">右移</button>
                  <button @click="moveToUp">上移</button>
                  <button @click="moveToDown">下移</button>
                  <button @click="moveToQingdao">移到青岛</button>
                  <button @click="zoomIn">放大</button>
                   <button @click="zoomOut">缩小</button>
            </div>  
      </div>
</template>
<script>
import 'ol/ol.css'
import View from 'ol/View'
import Map from 'ol/Map'
import TileLayer from 'ol/layer/Tile'
import  {transform} from 'ol/proj';
import {OSM, TileArcGISRest} from 'ol/source'
export default {
    name:'OlMapLoc',
    data() {
          return {
                map: null,
                view: null,
                layers: null
          }
    },
    mounted() {   
      //渲染地图
      //1、首先创建一个视图
      var view=new View({
             // 设置青岛为地图中心,此处进行坐标转换, 把EPSG:4326的坐标,转换为EPSG:3857坐标,因为ol默认使用的是EPSG:3857坐标
            center: transform([120.374798,36.07316], 'EPSG:4326', 'EPSG:3857'),
            zoom: 10
      })
    
      //2、创建地图图层
      var layers=[
            new TileLayer({
                  source: new OSM()
            })
      ]     
      //3、创建地图
      var map=new Map({
             target: 'map',
             layers: layers,
             view: view
      })   
      this.map=map;
      this.view=view;
      this.layers=layers;
    },
    methods: {
          //左移
          moveToLeft: function(e){                 
            var view = this.map.getView();
            var mapCenter = this.view.getCenter();
            // 让地图中心的x值增加,即可使得地图向左移动,增加的值根据效果可自由设定
            mapCenter[0] += 50000;
            view.setCenter(mapCenter);
            this.map.render();
          },
          //右移
          moveToRight: function(e){
            var view = this.map.getView();
            var mapCenter = this.view.getCenter();
            // 让地图中心的x值减少,即可使得地图向右移动,增加的值根据效果可自由设定
            mapCenter[0] -= 50000;
            view.setCenter(mapCenter);
            this.map.render();
          },
          //上移
          moveToUp: function(e){
            var view = this.map.getView();
            var mapCenter = this.view.getCenter();
            // 让地图中心的y值减少,即可使得地图向上移动,增加的值根据效果可自由设定
            mapCenter[1] -= 50000;
            view.setCenter(mapCenter);
            this.map.render();
          },
          //下移
           moveToDown: function(e){
            var view = this.map.getView();
            var mapCenter = this.view.getCenter();
            // 让地图中心的y值增加,即可使得地图向下移动,增加的值根据效果可自由设定
            mapCenter[1] += 50000;
            view.setCenter(mapCenter);
            this.map.render();
          },
          //移动到青岛
          moveToQingdao: function(e){
            var view = this.map.getView();
            // 设置地图中心为青岛的坐标,即可让地图移动到青岛
            view.setCenter(transform([120.374798,36.07316], 'EPSG:4326', 'EPSG:3857'));
            this.map.render();
          },
          //放大
          zoomIn: function(e){
            var view = this.map.getView();
            // 让地图的zoom增加1,从而实现地图放大
            view.setZoom(view.getZoom() + 1);
          },
           //缩小
          zoomOut: function(e){
            var view = this.map.getView();
            // 让地图的zoom增加1,从而实现地图缩小
            view.setZoom(view.getZoom() - 1);
          }
    }     

}
</script>
<style lang="stylus" scoped>
#map
      width:900px
      height:350px
</style>

这里说一下由于我们在做地图操作时一般都会涉及map、view、layer等操作,为了方便获取这些对象,我们把这些对象放到data方法里面,初始化地图的时候使用this方法给这些参数赋值,在操作地图的时候只需要使用this指向这些参数就可以。说白了就是给这些参数定义全局变量,使我们方便使用!

3、调用MapLoc组件完成地图双屏联动

首先我们要在Home组件里面引入MapLoc局部组件,包括:引入MapLoc组件、声明局部组件和最后在模板中使用局部组件这三步,Home.vue组件的具体代码如下:

<template>
  <!-- 这里我们就可以用引入的HomeMap组件了,大小写用破折号 -->
    <home-map-loc></home-map-loc>
</template>

<script>
// 首先引入局部组件
import HomeMap from './components/Map'
import HomeDoubleMap from './components/DoubleMap'
import HomeMapLoc from './components/MapLoc'
export default {
  name: 'Home',
  // 需要声明局部组件
  components: {
    HomeMap: HomeMap,
    HomeDoubleMap: HomeDoubleMap,
    HomeMapLoc: HomeMapLoc
  }
}
</script>

<style scoped>
</style>

4、运行程序测试,如下图:

经过测试上述功能都没有问题!

三、 加载各种在线地图

这一部分我们要实现一些常见的在线地图的加载,比如ArcGIS地图服务、OSM地图服务、天地图服务和高德地图服务。并且实现这些图层的叠加顺序的相关操作!

1、新建MapOnline组件,如下图所示:

2、编写MapOnline组件,使之可以加载常用的在线地图,代码如下:

<template>
      <div>
            <div>
                  <div id="map"></div>
            </div>
            <div>显示/隐藏:   
                  <input type="checkbox" checked="checked" @click="checkERSI($event)" />加载ArcGIS地图
                  <input type="checkbox" checked="checked" @click="checkOSM($event)"/>加载Open Street Map地图
                  <input type="checkbox" checked="checked" @click="checkTDT($event)"/>加载天地图
                  <input type="checkbox" checked="checked" @click="checkAmap($event)"/>加载高德地图 -->
            </div> 
            <div>图层顺序:
                  <input name="seq" type="radio" value="" @click="upArcGIS($event);" />ArcGIS地图在最上
                  <input name="seq" type="radio" value=""  @click="upOSM($event);"/>OSM地图在最上
                  <input name="seq" type="radio" value="" checked="checked" @click="upTDT($event);"/>天地图在最上
                  <input name="seq" type="radio" value="" checked="checked" @click="upAmap($event);"/>高德地图在最上
            </div> 
      </div>
</template>
<script>
import 'ol/ol.css'
import View from 'ol/View'
import Map from 'ol/Map'
import TileLayer from 'ol/layer/Tile'
// import {Group as LayerGroup, Tile as TileLayer} from 'ol/layer'
import  {transform} from 'ol/proj';
import {OSM, TileArcGISRest, XYZ} from 'ol/source'
export default {
    name:'OlMapOnline',
    data() {
          return {
                map: null,
                view: null,
                //这里创建我们要添加的多个图层
                esriLayers: null,
                osmLayers: null,
                tiandituLayers: null,
                gaodeLayers: null
          }
    },
    mounted() {   
      //渲染地图
      //1、首先创建一个视图
      var view=new View({
             // 设置青岛为地图中心,此处进行坐标转换, 把EPSG:4326的坐标,转换为EPSG:3857坐标,因为ol默认使用的是EPSG:3857坐标
            center: transform([120.374798,36.07316], 'EPSG:4326', 'EPSG:3857'),
            zoom: 10
      })
      this.view=view;
      //2、创建地图图层
      var esriLayers=
            new TileLayer({
                  source: new XYZ({
                        url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}'
                  }),
                  title: 'ESRI影像'
            })
      
      //给data中的esriLayers赋值
      this.esriLayers=esriLayers;
      var osmLayers=
            new TileLayer({
                  source: new OSM(),
                  title: 'OSM影像'
            })
       
      this.osmLayers=osmLayers;
      var tiandituLayers=
            new TileLayer({
                  source: new XYZ({
                       	url: "http://t3.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=008a8816d2eee25a677670273eaee891",
      	            crossOrigin: "anonymous"
                  }),
                  title: '天地图影像'
            })
       
      //给data赋值
      this.tiandituLayers=tiandituLayers;
      var gaodeLayers=
            new TileLayer({
                  source: new XYZ({
                       	url:'http://webst0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'
                  }),
                  title: '高德影像'
            })
       
      //给data赋值
      this.gaodeLayers=gaodeLayers;

      //3、创建地图
      var map=new Map({
             target: 'map',
             //// 在地图上添加上面创建的四个图层,图层顺序自下而上,依次是ESRI地图,OSM地图,天地图和高德地图
             layers: [esriLayers,osmLayers,tiandituLayers,gaodeLayers],
             view: view
      })
      this.map=map;

     
    },
    methods: {
         checkERSI: function(event){
            console.log(event.target.checked)
            this.esriLayers.setVisible(event.target.checked);
         },
         checkOSM: function(event){
            this.osmLayers.setVisible(event.target.checked);
         },
         checkTDT: function(event){
            this.tiandituLayers.setVisible(event.target.checked);
         },
         checkAmap: function(event){
            this.gaodeLayers.setVisible(event.target.checked);
         },
         upArcGIS: function(event){
            if(event.target.checked){
                   this.esriLayers.setZIndex(3);
                   this.osmLayers.setZIndex(this.osmLayers.getZIndex()-1);
                  this.tiandituLayers.setZIndex(this.tiandituLayers.getZIndex()-1);
                   this.gaodeLayers.setZIndex(this.gaodeLayers.getZIndex()-1);
            }
         },
         upOSM: function(event){
            if(event.target.checked){
                   this.osmLayers.setZIndex(3);
                   this.esriLayers.setZIndex(this.esriLayers.getZIndex()-1);
                  this.tiandituLayers.setZIndex(this.tiandituLayers.getZIndex()-1);
                   this.gaodeLayers.setZIndex(this.gaodeLayers.getZIndex()-1);
            }
         },
         upTDT: function(event){
           if(event.target.checked){
                   this.tiandituLayers.setZIndex(3);
                   this.esriLayers.setZIndex(this.esriLayers.getZIndex()-1);
                  this.osmLayers.setZIndex(this.osmLayers.getZIndex()-1);
                   this.gaodeLayers.setZIndex(this.gaodeLayers.getZIndex()-1);
            }    
         },
         upAmap: function(event){
            if(event.target.checked){
                   this.gaodeLayers.setZIndex(3);
                  this.esriLayers.setZIndex(this.esriLayers.getZIndex()-1);
                  this.osmLayers.setZIndex(this.osmLayers.getZIndex()-1);
                   this.tiandituLayers.setZIndex(this.tiandituLayers.getZIndex()-1);
            } 
         }
        
    }     

}
</script>
<style lang="stylus" scoped>
#map
      width:900px
      height:350px
</style>

3、调用MapOnline组件完成地图双屏联动

首先我们要在Home组件里面引入MapOnline局部组件,包括:引入MapOnline组件、声明局部组件和最后在模板中使用局部组件这三步,Home.vue组件的具体代码如下:

<template>
  <!-- 这里我们就可以用引入的HomeMap组件了,大小写用破折号 -->
    <home-map-online></home-map-online>
</template>

<script>
// 首先引入局部组件
import HomeMap from './components/Map'
import HomeDoubleMap from './components/DoubleMap'
import HomeMapLoc from './components/MapLoc'
import HomeMapOnline from './components/MapOnline'
export default {
  name: 'Home',
  // 需要声明局部组件
  components: {
    HomeMap: HomeMap,
    HomeDoubleMap: HomeDoubleMap,
    HomeMapLoc: HomeMapLoc,
    HomeMapOnline: HomeMapOnline
  }
}
</script>

<style scoped>
</style>

4、运行测试

经过测试,以上功能均没有问题!

 四、加载我们自己发布的地图服务

这里以加载Geoserver发布的WMS服务为例进行讲解。关于Geoserver如何发布地图服务我之前在openlayers入门开发中做过一个详细的说明,不明白的同学可以看一下,链接如下:https://blog.youkuaiyun.com/MagicMHD/article/details/91430148

好了,下面开始实际编码加载Geoserver发布的wms地图服务了!

1、新建MapWms组件,如下图所示

2、编写MapWms组件,使之可以加载Geoserver发布的wms地图服务,代码如下:

<template>
      <div>
            <div id="map"></div>
      </div>
</template>
<script>
import 'ol/ol.css'
import View from 'ol/View'
import Map from 'ol/Map'
import TileLayer from 'ol/layer/Tile'
import Projection from 'ol/proj/Projection';
import TileWMS from 'ol/source/TileWMS';
import {OSM} from 'ol/source'
export default {
    name:'OlMapWms',
    data() {
          return {
                map: null,
                view: null,
                //这里创建我们要添加的图层
                chinaLayers: null
          }
    },
    mounted() {   
      //渲染地图

      //1、创建wms地图图层
      var chinaLayers=
            new TileLayer({
                  source: new TileWMS({
                       	url: "http://"这里要写你实际发布地图服务的IP地址":8123/geoserver/airtraffic/wms",
      	            params: {
                              'FORMAT': 'image/png', 
                              'VERSION': '1.1.1',
                              tiled: true,
                              STYLES: '',
                              LAYERS: 'airtraffic:china',
                              tilesOrigin: 73.62004852302096 + "," + 3.8378885148431436
                        }
                  }),
                  title: '中国wms服务'
            })      
      //给data赋值
      this.chinaLayers=chinaLayers;

      //2、创建空间参考4326
      var projection = new Projection({
          code: 'EPSG:4326',
          units: 'degrees', 
      });

      //3、创建视图
      var view=new View({
            projection: projection
      })
      this.view=view;

      //4、创建地图
      var map=new Map({
             target: 'map',
             layers: [chinaLayers],
             view: view
      })

      var bounds = [73.62004852302096, 3.8378885148431436,
                    134.7684631352655, 53.553741455004214];
      map.getView().fit(bounds, map.getSize());
    }

}
</script>
<style lang="stylus" scoped>
#map
      width:900px
      height:350px
</style>

3、调用MapWms组件完成地图双屏联动

首先我们要在Home组件里面引入MapWms局部组件,包括:引入MapWms组件、声明局部组件和最后在模板中使用局部组件这三步,Home.vue组件的具体代码如下:

<template>
  <!-- 这里我们就可以用引入的HomeMap组件了,大小写用破折号 -->
    <home-map-wms></home-map-wms>
</template>

<script>
// 首先引入局部组件
import HomeMap from './components/Map'
import HomeDoubleMap from './components/DoubleMap'
import HomeMapLoc from './components/MapLoc'
import HomeMapOnline from './components/MapOnline'
import HomeMapWms from './components/MapWms'
export default {
  name: 'Home',
  // 需要声明局部组件
  components: {
    HomeMap: HomeMap,
    HomeDoubleMap: HomeDoubleMap,
    HomeMapLoc: HomeMapLoc,
    HomeMapOnline: HomeMapOnline,
    HomeMapWms: HomeMapWms
  }
}
</script>

<style scoped>
</style>

4、运行测试

这里我们就成功的把Geoserver发布的wms服务加载出来了!

五、加载离线矢量地图数据

这里以加载GeoJSON数据为例进行讲解!

1、新建MapJson组件,如下图所示

 

2、编写MapJson组件,使之可以加载GeoJSON数据,代码如下:

<template>
      <div>
            <div id="map"></div>
      </div>
</template>
<script>
import 'ol/ol.css';
import Map from 'ol/Map';
import View from 'ol/View';
import GeoJSON from 'ol/format/GeoJSON';
import VectorLayer from 'ol/layer/Vector';
import VectorSource from 'ol/source/Vector';
import {Fill, Stroke, Style, Text} from 'ol/style';
export default {
    name:'OlMapWms',
    mounted() {   
          var vectorLayer = new VectorLayer({
            source: new VectorSource({
                  url: './../../../../static/china.json',
                  format: new GeoJSON()
            })
            });
            var map = new Map({
                  layers: [vectorLayer],
                  target: 'map',
                  view: new View({
                        center: [0, 0],
                        zoom: 1
                  })
             });
    }
}
</script>
<style lang="stylus" scoped>
#map
      width:900px
      height:350px
</style>

这里要提醒大家的是json文件一定要放到static文件夹下,不然在Vue中是访问不到的!这里我踩了坑-。-

3、调用MapJson组件完成地图双屏联动

首先我们要在Home组件里面引入MapJson局部组件,包括:引入MapJson组件、声明局部组件和最后在模板中使用局部组件这三步,Home.vue组件的具体代码如下:

<template>
  <!-- 这里我们就可以用引入的HomeMap组件了 -->
    <home-map-json></home-map-json>
</template>

<script>
// 首先引入局部组件
import HomeMap from './components/Map'
import HomeDoubleMap from './components/DoubleMap'
import HomeMapLoc from './components/MapLoc'
import HomeMapOnline from './components/MapOnline'
import HomeMapWms from './components/MapWms'
import HomeMapJson from './components/MapJson'
export default {
  name: 'Home',
  // 需要声明局部组件
  components: {
    HomeMap: HomeMap,
    HomeDoubleMap: HomeDoubleMap,
    HomeMapLoc: HomeMapLoc,
    HomeMapOnline: HomeMapOnline,
    HomeMapWms: HomeMapWms,
    HomeMapJson: HomeMapJson
  }
}
</script>

<style scoped>
</style>

 

4、运行测试

加载成功!

 这里就介绍这五种地图的操作,如果你想详细的了解OpenLayers的地图操作,你可以看一下我之前根据原生js写的openlayers的各种地图操作,链接我就不给了,有好几篇,你可以翻一下我的博客,截图如下:

然后根据我们前面整理的基于vue+openlayers的模块化地图开发模式开发新的功能组件!其实原理掌握一点就行了,当你要使用openlayers的某个对象时,首先引用他,然后别的就和我们原声js的openlayers操作基本一致了!

关于Vue+Webpack+OpenLayers6完成组件化的WebGIS开发的地图实例讲解就先讲到这儿了!

下一章节我们将正式开始前后端分离+模块化开发的WebGIS实战项目的开发!我们现在有了中国的行政区划数据,正好眼前全国正值抗击新馆疫情的关键时期,我们的实战项目就以抗击疫情为主题!大家加油!

《WebGIS入门实战》专栏 经常有人问我 如何学习WebGIS 开发,所以在业余时间写了《WebGIS入门实战》专栏,给需要的人 专栏适合人群 WebGIS 初学者 希望快速入门 WebGIS 的小白 希望能够边学边实战的开发者 相关方向学生&amp;老师 专栏所需技术储备 必备知识:JavaScript、HTML/CSS 专栏能学到什么? WebGIS开发、leaflet、openlayers、node.js\npm\we... 阅读详情

相关推荐

使用QGIS配准无人机航片

随着无人机在各个行业的普及,无人机航片成为很多应用系统空间数据的重要来源。无人机航片具有成像快、分辨率高、针对性强的优点,广泛用于保险定损、灾情应急监测、设施巡检、农作物面积调查等方面。 然而,由于种种原因,通过无人机拍摄的照片拼接得到的正射航片与其他地理空间数据叠加时经常出现较明显的偏差,需要进行配准以校正其空间位置,因此,本文将使用QGIS的配准工具演示无人机正射航片配准的过程。 01数据情况 本文选用的示范数据为2020年7月中左右无人机拍摄的河北省某地系列照片,经过拼接得到CG...

QGISClass的博客 5249

Vue全家桶+webpack打造商城项目

这是一门前端Vue实战课程,Vue做为当下最火热的前端框架,是前端开发人员必备技能,我的目标就是带你2周内从0基础到能用Vue做一个在线教育平台项目。本课程亮点在于不是干巴巴的讲知识点,而是以实战项目为导向,深入讲解每个知识点的实际使用场景,不仅对vue组件化使用、webpack打包工具、Axios模块、vue全家桶vue+vue-router+vuex全面API进行精讲。还在项目阶段对element-ui框架使用、组件化开发、Axios的封装、跨域请求处理、路由控制、登录注册状态存储、商品价格策略等功能进行实现。同学们通过这门课程的学习可以迅速提升Vue实战开发能力。 

半导体硅制造工艺

抛光液和硅片的反应速度很快,只要稍一停留,立刻便会腐蚀,因此取片时,不能在表面上留下抛光液,必须紧接着水抛,直至抛光液被全部冲去,再将片子取下。由于晶圆制造过程有各种各样的晶圆固定器和自动设备,需要严格的直径控制以减少晶圆翘曲和破碎,而单晶硅棒的外径表面并不平整且直径也比最终抛光晶片所规定的直径规格大,因此需要通过外径滚磨获得较为精确的直径。胶体的颗粒直径比磨料的颗粒直径小一个数量级,且硬度与硅相当,因此它比用磨料的机械抛光表面损伤更小,抛光出的硅片表面具有高度的镜面光洁。不受材料导电类型和电阻率的影响。

pgpaojiao的博客 2240

Vue+Webpack+OpenLayers6完成组件化的WebGIS开发(一、项目搭建)

一、Vue环境构建 1、安装Vue-cli脚手架 因为需要使用 npm 安装 Vue cli,而 npm 是集成在 Node.js 中的,所以第一步我们需要安装 Node.js,访问官网 https://nodejs.org/en/ 下载即可。下载完成以后打开cmd查看node和npm是否已经安装好: 如上图所示表示已经安装好了node和npm。 之后可以选择安装 cnpm,即 np...

MagicMHD的博客 5241

【2025年五一数学建模竞赛】A题 完整论文 模型建立与求解

2025年五一数学建模竞赛 A题:基于历史数据与模式识别的道路车流量推测模型研究

Magnolia_He的博客 3783

基于PDF文档结构的数字隐写

PDF隐写

xiongshivigor的博客 1426

webpack项目打包+Vue组件化开发

文章目录0 简介1 项目结构2 打包项目2.1 简单打包2.2 配置文件打包2.3 npm配置打包3 loader3.1 样式loader3.2 图片资源3.3 ES6语法处理4 plugins4.1 添加版权的plugin4.2 打包html的plugin5 配置vue5.1 原始vue开发5.2 Vue组件化开发5.2.1 开发环境配置5.2.2 组件开发5.2.3 组件使用6 搭建本地服务器 0 简介 webpack是一个可以将所有脚本、图片、样式、资源静态模块打包工具,打包模块化方式的源码。 web

new_delete_的博客 1008

企业如何开展BI建设--指标体系建设

很多企业的数字化转型工作都是从做BI项目开始的,很多企业认为,BI就是做指标大屏,所以做了很多的驾驶舱,也做了很多指标,有从系统取的,有手工填报的,甚至手工填报的比例占到了70%,最终BI沦为了填报系统,业务认为BI就是把从线下的微信沟通转到了线上录入展示,并没有给业务代来任何提升,久而久之,BI大屏就没人关心,公司高层也认为数据都是填报的,都经过了加工处理,这种数据不可信,不能反映业务开展的实际。其实在BI系统建设之前,我们首先要做的就是要梳理企业的指标,到底我们要展示哪些指标?

263

Vue第三篇(组件化开发与webpack详解)

待更新

m0_57249797的博客 797

数据挖掘7、银行精准营销

利用数据挖掘技术,对银行已有数据进行分析,对客户进行识别,对客户是否能够进行存款精准营销Windows11。

m0_63099685的博客 394

计算机网络技术研究方向有哪些创新点

计算机网络技术方向的创新点众多,这些创新不仅推动了网络技术的不断发展和完善,还为用户提供了更高效、更安全、更便捷的网络服务。- 边缘计算是一种将计算和数据存储推向网络边缘的技术,通过将数据处理和分析的任务分散到网络的各个节点,降低了数据传输的延迟,提高了实时性。- 通过网络自动化工具和技术,可以实现网络配置的自动化、网络故障的自动诊断与修复等功能,降低了网络运维的复杂性和成本。- 通过引入人工智能技术,网络可以实现更智能的流量管理、故障预测和自动修复等功能,提高了网络的性能和稳定性。

Loving_enjoy的博客 1495

WebGIS入门—进阶

在WebGIS入门篇,前端使用了纯HTML、CSS、Javascript、Jquery较为传统方式构建,服务器借助ArcGIS Srver发布相关地理服务且涉及到GIS,自行构建后端且涉及到数据库。So,WebGIS进阶来了!!!! 本文大概是关于Vue2+Cesium+Openlayers+Java+MySQL+Tomcat。

警警的博客 2283

FC7300 SPI MCAL配置引导

Example - QMI8A01z外设:Example - QMI8A01z外设:

舊梦的博客 258

WebGIS实战:Web GIS开发环境配置(Vue2.*+IView+Openlayers+Ol-ext+Proj4+JQuery+Axios)

上一节已经搭建好了基于Vue.js的前端开发环境,但是对于里面的配置我们还没完善,所以,这一节主要对开发环境进行具体配置,以满足Web GIS开发。

Oruizn的博客 2933

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WebGIS下——焕新

WebGIS入门_GISer_Jing的博客-优快云博客在WebGIS入门篇,前端使用了纯HTML、CSS、Javascript、Jquery较为传统方式构建,服务器借助ArcGIS Srver发布相关地理服务且涉及到GIS,自行构建后端且涉及到数据库。So,WebGIS进阶来了!!!!本文大概是关于:Vue2+Cesium+Openlayers+Java+MySQL+Tomcat。

警警的博客 1453

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

vue+openlayers构建第一个项目

第一步:构建一个新的vue项目 用脚手架@vue/cli npm install -g @vue/cli 创建项目,ESLint可以先不用,有点碍事 vue init webpack vue-openlayers 用开发工具打开项目,跑起来看看有没有问题 npm install npm run dev 第二步:安装ol npm install ol 第三步:创建地图组件mapView <template> <div id=...

Master_Tang的博客 7404

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

入门与实战_《WebGIS入门实战》专栏

经常有人问我 如何学习WebGIS 开发,所以在业余时间写了《WebGIS入门实战》专栏,给需要的人 专栏适合人群WebGIS 初学者希望快速入门 WebGIS 的小白希望能够边学边实战的开发者相关方向学生&老师 专栏所需技术储备必备知识:JavaScript、HTML/CSS 专栏能学到什么? WebGIS开发、leaflet、openlayers、node.jsnpmwebpack 专...

weixin_33038783的博客 198

hibernate实战第二版 蒲成带目录_《WebGIS入门实战》专栏

经常有人问我 如何学习WebGIS 开发,所以在业余时间写了《WebGIS入门实战》专栏,给需要的人 专栏适合人群WebGIS 初学者希望快速入门 WebGIS 的小白希望能够边学边实战的开发者相关方向学生&老师 专栏所需技术储备必备知识:JavaScript、HTML/CSS 专栏能学到什么? WebGIS开发、leaflet、openlayers、node.jsnpmwebpack 专...

weixin_39685762的博客 147

OpenLayers 7 中文指南:从核心概念到实战避坑

WebGIS 开发是构建交互式在线地图应用的核心技术,其原理在于将地理空间数据通过前端地图库进行可视化渲染与交互。这项技术的价值在于能够将复杂的地理信息系统(GIS)能力赋能给Web应用,广泛应用于智慧城市、物流追踪、环境监测等场景。OpenLayers 作为一款功能强大的开源前端地图库,是实现这一目标的关键工具。然而,其官方文档的学习曲线和中文资源的匮乏常成为国内开发者的主要障碍。本指南基于一线开发经验,系统梳理了 OpenLayers 的核心架构,如 Map、View、Layer、Source 等模块的

weixin_33713707的博客 571

2024前端面试题-1.自我介绍+常见考点汇总

工作年限+公司/职位+工作职责/项目角色或经验(可适当例举参与过的项目及项目优点、特色、获奖等)院校+专业+(学历可说可不说,看是否为岗位优势:比如全日制本)技术栈+框架+(与工作相关的比较擅长的技能或性格爱好)姓名+(应聘职位)+(年龄)

yogurt_sweets的博客 1182

2024年GIS开发薪资揭秘:15-20k岗位需要哪些技能?(附学习资源)

本文深入剖析了2024年GIS开发工程师达到15-20k薪资所需的核心技能图谱。市场要求已从工具使用转向解决方案构建,强调精通OpenLayers、Mapbox或Cesium等核心框架,并具备前端、空间数据处理及全栈协作能力。文章提供了清晰的学习路线图与实战项目建议,助力开发者系统提升竞争力。

happy2的博客 641

总结Vue第三天:模块化和webpack模块化打包

总结Vue第三天:模块化和webpack模块化打包

伟庭的博客 2545

Vue.js 学习笔记十一:Webpack之webpack 配置 配置使用 Vue

目录 配置使用 Vue 项目中使用 el 和 template 区别 Vue 组件化开发引入 .vue 文件封装处理 配置使用 Vue 后续项目中,我们会使用 Vue 进行开发,而且会以特殊的文件来组织 Vue 的组件。所以,下面我们来学习一下如何在我们的 webpack 环境中集成 Vue。 项目中使用 现在,我们希望在项目中使用 Vue,那么需要对其有依赖,所以需要先进行安装: npm install vue --save-dev 注:因为我们后续是在实际项目中也会使用 .

Stary 的 IT 之旅 401

【学习笔记】webpack + Vue 组件化开发

安装 安装webpack前要先安装Node.js 全局安装webpack(这里先指定3.6.0版本,因为vue cli2依赖该版本,可以进行手动配置,便于学习) 局部安装webpack:进入到项目根目录,输入npm install webpack@3.6.0 --save-dev 为什么需要安装局部webpack 因为一个项目往往依赖特定的webpack版本,全局的版本可能很这个项目的webpack版本不一致,导出打包出现问题 所以通常一个项目,都有自己局部的webpack 执行局部webpack打包:

weixin_45305844的博客 866

vue 第六天 前端工程化 webpack 、babel 、vue单组件、vue脚手架、Element-ui

-------------- 模块化相关规范 ------------------ 1.1 模块化概述 传统开发模式的主要问题 命名冲突 文件依赖 通过模块化解决上述问题 模块化就是把单独的一个功能封装到一个模块(文件)中,模块之间相互隔离,但是可以通过特定的接口公开内部成员,也可以依赖别的模块 模块化开发的好处:方便代码的重用,从而提升开发效率,并且方便后期的维护 1.2 浏览器端模块化规范 AMD Require.js (http://www.requirejs.cn/) CMD Sea

m0_55170432的博客 413

Vue3组件化开发:Webpack的代码分包、现异步组件

站位

米儿的博客 432
上一篇: Vue+Webpack+OpenLayers6完成组件化的WebGIS开发(一、项目搭建)
下一篇: SpringBoot+Vue+OpenLayers6完成前后端分离的“疫情地图”实战项目(一、地图数据处理及代码托管)
MagicMHD
博客等级 码龄9年 503粉丝 78原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值