Openlayer学习之请求服务器地图资源

在项目中使用到了openlayer技术,公司有自己的地图服务,记录下如何访问服务器的地图资源

1、整体的思路是,使用Vuex存储服务器的BaseApi,在需要用的页面中,创建地图,并配置地图资源路径

2、具体的操作步骤:

VueX中的api.js文件

const baseUrl = process.env.VUE_APP_BASE_API
const api = {
  state: {
  
    baseApi: baseUrl,
    // mapurl瓦片地图服务url
    mapApi: 'http://服务器IP:端口',
 
    satelliteMapSourceURL: 'http://服务器IP/base/getTile?type=1&x={x}&y={y}&zoom={z}',
    tagForMapSourceURL: 'http://服务器IP/base/getTile?type=4&x={x}&y={y}&zoom={z}',
    electronicMapSourceURL: 'http://服务器IP/base/getTile?type=0&x={x}&y={y}&zoom={z}'
 
  }
}

export default api

getters.js文件:

const getters = {
 
  baseApi: state => state.api.baseApi,
  mapApi: state => state.api.mapApi,
  satelliteMapSourceURL: state => state.api.satelliteMapSourceURL,
  
}
export default getters

在需要具体的map.vue页面使用:

mounted() {
           const mapInstance = this.initMap()
            const {
                businessLayerLayers,
                businessLayerManage
            } = this.createBusinessLayerManage({
                mapInstance,
                electronicMapSourceURL: this.$store.getters.electronicMapSourceURL,    //电子图层
                satelliteMapSourceURL: this.$store.getters.satelliteMapSourceURL,   //卫星图Url
                tagForMapSourceURL: this.$store.getters.tagForMapSourceURL,      //卫星标记图Url
             
            })
        },

methods: {
      // 初始化地图
        initMap(){
            ......
        },

    // 初始化地图的图层
            createBusinessLayerManage({
                                          mapInstance,
                                          electronicMapSourceURL,
                                          satelliteMapSourceURL,
                                          tagForMapSourceURL
                                      }) {
                const businessLayerManage = new Map();   // 创建map对象
                businessLayerManage.set('electronicMapLayer', {  //电子图层
                    layer: new TileLayer({
                        source: new XYZ({  // Z 表示缩放层级, Z=zoom ; XY 的原点在左上角, X 从左向右, Y 从上向下
                            url: electronicMapSourceURL
                        }),
                        visible: true,
                        zIndex: 10
                    }),
                    type: 'base'
                })
                businessLayerManage.set('satelliteMapLayer', { // 卫星图层
                    layer: new TileLayer({
                        source: new XYZ({
                            url: satelliteMapSourceURL
                        }),
                        visible: false,
                        zIndex: 11
                    }),
                    type: 'base'
                })
                businessLayerManage.set('tagForMapLayer', { // 卫星注记图层
                    layer: new TileLayer({
                        source: new XYZ({
                            url: tagForMapSourceURL
                        }),
                        visible: false,
                        zIndex: 20
                    }),
                    type: 'base'
                })
                const businessLayerLayers = Array.from(businessLayerManage.values()).map(l => l.layer)
                businessLayerLayers.forEach(l => mapInstance.addLayer(l))

        return {
                    businessLayerLayers,
                    businessLayerManage
                }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值