Vue集成openlayers


1.安裝ol庫

使用cnpm i ol -s命令安裝

2.建一個olMap.vue文件夾

<template>
    <div class='olMap'>
        <h2>{{this.name}}</h2>
        <div class='map'  ref='rootmap'></div>
    </div>
</template>

<script>
import 'ol/ol.css'
import { Map, View } from 'ol'
import mapconfig from '../../mapconfig'

export default {
    name: 'HomeMap',
    data () {
        return {
            name: '地圖展示',
            map: null
        }
    },
    mounted () {
        var mapcontainer = this.$refs.rootmap
        this.map = new Map({
          target: mapcontainer,
          layers: mapconfig.streetmap(),
          view: new View({
            projection: 'EPSG:4326',    
            center: [mapconfig.x, mapconfig.y], 
            zoom: mapconfig.zoom
          })
        })
    }
}

</script>

<style lang='stylus'>
    .olMap
        width: 100%
        .map
            height: 100%
            .ol-attribution
                display: none
            .ol-zoom 
                display: none
</style>    
View Code

3.在首頁home.vue中使用該olMap組件

<template>
    <div>
      <home-header></home-header>
         <home-swiper></home-swiper>
    <home-content></home-content>
         <home-map></home-map>
     </div>
</template>

<script>
import HomeHeader from './components/Header'
import HomeSwiper from './components/Swiper'
import HomeContent from './components/Content'
import HomeMap from './components/olMap'

export default {
  name: 'Home',
  components: {
    HomeHeader,
    HomeSwiper,
    HomeContent,
    HomeMap
  }
}
</script>

<style>
</style>
View Code

4.使用mapconfig.js文件

import TileLayer from 'ol/layer/Tile'
import TileArcGISRest from 'ol/source/TileArcGISRest'
import OSM from 'ol/source/OSM'
import XYZ from 'ol/source/XYZ'

let maptype = 1         
//0表示部署的離線瓦片地圖,1表示OSM,2表示使用Arcgis在線午夜藍地圖服務
var streetmap=function(){
    var maplayer = null
    switch(maptype){
        case 0:
            maplayer=new TileLayer({
                source: new XYZ({
                    url:'http://127.0.0.1:7080/streetmap/shenzhen/{z}/{x}/{y}.jpg'
                })
            })
        break
        case 1:
            maplayer=new TileLayer({
                source: new OSM()
            })
        break
        case 2:
            maplayer=new TileLayer({
                source:new TileArcGISRest({
                    url:'https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer'
                })
            })
        break
    }
    return [maplayer]
}

var mapconfig = {
    x: 114.064839,     
    y: 22.548857,
    zoom: 15,          
    streetmap: streetmap
}

export default mapconfig
View Code

5.效果如下

 源碼地址:https://gitee.com/newGlobe/vueLearn/tree/master/src/pages/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM