SpringBoot+Vue+OpenLayers6完成前後端分離的“疫情地圖”實戰項目(一、地圖數據處理及代碼託管)

前面我們介紹了Vue+webpack+openlayer的地圖基礎知識,從這一章開始,我們將正式開始我們的基於SpringBoot+Vue+OpenLayers的實戰項目---疫情地圖!

一、疫情地圖數據處理

這裏我介紹一下數據來源,我們首先從這裏:http://datav.aliyun.com/tools/atlas/#&lat=34.994003757575776&lng=96.85546875&zoom=4

下載到全國各省(這裏疫情數據我只統計到了省級)的行政區劃圖,然後在ArcGIS中根據當前國內疫情感染人數給矢量數據賦值如下圖:

這裏SHP數據的最後一個字段countNum就是截至到3.26日中國境內各省的疫情感染人數。

二、新建項目covidmap並託管到碼雲

1、碼雲新建項目,這裏我建立了一個開源項目covidmap

 2、電腦本地新建一個文件夾用來克隆碼雲上我們剛剛新建的項目,

這裏直接在文件夾右擊使用Git bash命令

在命令行使用命令  git  clone  ********  後面是具體的碼雲上項目的地址

上面的截圖說明代碼已經克隆到本地了。

3、創建項目:

4、運行測試創建的項目:

5、Vscode打開並稍微改造項目 

首先引入我們的openlayers包,這裏我用的cnpm下載的比較快一點,下面我也會用cnpm統一操作,不能一會npm一會cnpm容易使程序崩潰。命令如下:

 其中--save是指無論在開發環境中還是線上環境都添加這個依賴包。再看一下我們是否加進來了這個依賴包,打開package.json文件:

ok,已經成功引入了ol最新版本6..2.1。

然後我們修改一下項目結構,我們把系統自動構建的HelloWorld.vue文件刪除,把components文件夾也刪掉,然後在src文件夾下新建一個pages文件夾,在pages文件夾下,我們新建一個home文件夾,在home文件夾下,我們新建一個components文件夾和我們的地圖組件HomeMap.vue如下圖:

再打開index.js文件如下圖:

這裏我們已經把HelloWorld.vue文件刪除了,所以我們修改路由配置項爲home文件夾下的Home組件如下:

然後我們在home文件夾下的components文件夾下新建一個我們的Map組件,如下圖所示:

下面我們在Map.vue中把我們的疫情數據地圖加載上,這裏通過加載Geoserver發佈的地圖服務的方式進行加載,首先把我們的SHP數據發佈爲Geoserver服務如下:

HomeMap.vue的代碼如下所示:

<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: 'http://localhost:8080/geoserver/covidmap/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=covidmap%3Achina&outputFormat=application%2Fjson',
                  format: new GeoJSON()
            })
            });
            var map = new Map({
                  layers: [vectorLayer],
                  target: 'map',
                  view: new View({
                        center: [0, 0],
                        zoom: 3
                  })
             });
    }
}
</script>
<style lang="stylus" scoped>
#map
      width:900px
      height:350px
</style>

這裏我們加載的是服務的GeoJson格式數據,如下圖所示:

我們再來把App.vue的代碼修改一下,代碼如下:

<template>
    <router-view/>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

這裏只保留了router-view,下面我們再來修改一下router文件夾下的index.js的文件,代碼如下:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/pages/home/Home.vue'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    }
  ]
})

這裏我們把Home.vue組件引入進行路由到Home.vue界面,最後我們再來修改一下Home.vue的代碼 如下:

<template>
  <!-- 這裏我們就可以用引入的HomeMap組件了 -->
    <home-map></home-map>
</template>

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

<style scoped>
</style>

這裏我們在Home.vue中引入了HomeMap子組件,並且在模板文件中使用了HomeMap子組件,這樣我們的系統Home頁面目前就只有我們的HomeMap組件了,下面我們運行系統看一下效果:

這樣我們的系統就已經搭建並初步編寫成功了,這裏由於我的8080端口已經開啓了Tomcat,所以我給vue項目重新指定了端口:8086,這個可以在config文件夾下的index.js中修改,如下圖所示:

下面我們把我們這一部分的代碼推到碼雲倉庫中!

主要執行以下git命令:

1、git status 查看倉庫狀態

2、git add . 將代碼提交到緩存區

3、git commit -m 'project initialize'

4、git push  推到遠程倉庫

最後,我們再去Git倉庫看一下:

ok我們已經成功的推到了遠程倉庫,這樣我們的實戰項目的地圖數據處理及代碼託管就已經完成了!下一節我們繼續開發頁面,大家加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章