(vue)openLayer加载天地图 实现切换地图类型(地图影像)、更改地图色调(蓝色)等效果

一、 首先安装openLayer

npm i -S ol

package.json文件中出现版本号即安装成功。

二、在地图页面中加载天地图

①需要先在天地图官网注册key值(导航栏中:开发资源>网页API,进入页面后选择右上角 控制台>创建新应用,根据要求填写完成后复制key值)

②在页面中引入天地图

<template>
    <div id="container"><!--地图--></div>
</template>
<style>
/*样式根据自己需要自定义*/
</style>
<script>
import 'ol/ol.css'
import Map from 'ol/Map'
import TileLayer from 'ol/layer/Tile'
import View from 'ol/View'
import XYZ from 'ol/source/XYZ'
//根据项目需要去定义图层类型
let tianditu_img_w=null;//天地图卫星影像
let tianditu_cia_w=null;//卫星影像注记图层
let tianditu_vec_w=null;//矢量图层
let tianditu_cva_w=null;//矢量注记图层

export default{
  data() {
    return {
      mapTD:null;
      basemap:1//1:标准图层 2:卫星图层
    }
  },
  mounted() {
    this.initMap()
  },
  methods: {
    //加载天地图方式
    //更改天地图
    initMap(){
      tianditu_img_w=new TileLayer({
        title: '天地图卫星影像',
        source: new XYZ({
          visible: false,
          wrapX: false,
          url: 'http://t4.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=key值'
        })
      })
      tianditu_cia_w=new TileLayer({
        title: '天地图影像注记图层',
        source: new XYZ({
          visible:false,
          wrapX: false,
          url: 'http://t4.tianditu.com/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=key值'
        })
      })
      tianditu_vec_w=new TileLayer({
        title: '天地图矢量图层',
        source: new XYZ({
          visible: true,
          wrapX: false,
          url: 'http://t4.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=key值'
      })
      tianditu_cva_w=new TileLayer({
        title: '天地图矢量注记图层',
        source: new XYZ({
          visible: true,
          wrapX: false,
          url: 'http://t4.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=key值'
        })
      })
      this.mapTD = new Map({
        target: 'container',//地图div名称
        layers: [tianditu_img_w,tianditu_cia_w,tianditu_vec_w,tianditu_cva_w],
        view: new View({
          center: [102.709372,25.046432],//昆明
          zoom: 10,
          projection: 'EPSG:4326'
        })
      })
    },
    
  }
}
</script>

③修改地图类型核心代码:

<div class="baseMap"><!--选择地图类型-->
            <el-radio-group v-model="basemap" @change="changeMapType">
              <div><el-radio :label="1">标准图层</el-radio></div>
              <div><el-radio :label="2">卫星图</el-radio></div>
            </el-radio-group>
</div>
export default{
  data() {
    return {
      mapTD:null;
      basemap:1//1:标准图层 2:卫星图层
    }
  }
  methods: {
    //切换天地图图层类型
    changeMapType(){
      if(this.basemap==1){//显示标准图层
        tianditu_vec_w.setVisible(true);
        tianditu_cva_w.setVisible(true);
        tianditu_img_w.setVisible(false);
        tianditu_cia_w.setVisible(false);
      }else{//显示卫星图层
        tianditu_vec_w.setVisible(false);
        tianditu_cva_w.setVisible(false);
        tianditu_img_w.setVisible(true);
        tianditu_cia_w.setVisible(true);
      }
    },
  }
}
</script>

整体效果图

④ 修改地图底色---在需要改色的图层定义中增加className属性,根据需求修改具体的数值(css类需要在App.vue文件的style中修改),关键代码如下:

initMap(){
   ....
    //修改该图层底色
      tianditu_vec_w=new TileLayer({
        title: '天地图矢量图层',
        className:'blueLayer',//增加className属性
        source: new XYZ({
          visible: true,
          wrapX: false,
          url: 'http://t4.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=key值'
      })
      ...
}

App.vue中增加CSS类

.blueLayer{
    filter:grayscale(100%) sepia(51%) invert(100%) saturate(350%) ;
}

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Vue是一种流行的JavaScript框架,而OpenLayers是一种开源JavaScript库,用于创建交互式地图应用程序。要在Vue项目中加载地图,我们需要在Vue组件中引入OpenLayers库,并使用相关的JavaScript代码来实现。 首先,在Vue项目中安装OpenLayers库。我们可以使用npm或yarn来安装OpenLayers。在项目的根目录中打开终端,并运行以下命令: ``` npm install ol ``` 或 ``` yarn add ol ``` 安装完成后,我们可以在Vue组件中引入OpenLayers库。在需要加载地图Vue组件中的script标签中,添加以下代码: ```javascript import ol from 'ol'; export default { data() { return { map: null }; }, mounted() { this.initializeMap(); }, methods: { initializeMap() { this.map = new ol.Map({ target: 'map-container', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: [0, 0], zoom: 2 }) }); } } }; ``` 上述代码中,我们首先引入了OpenLayers库并创建了一个名为`map`的data属性。在`mounted`生命周期钩子中,我们调用了`initializeMap`方法来初始化地图。在`initializeMap`方法中,我们创建一个新的`ol.Map`实例,并将其绑定到id为`map-container`的HTML元素上。同时,我们还添加了一个基本的Tile图层,使用OpenStreetMap的数据源,并设置了初始的视图中心和缩放级别。 最后,在Vue组件的模板中,我们需要添加一个id为`map-container`的HTML元素,作为地图的容器,例如: ```html <template> <div id="map-container"></div> </template> ``` 运行项目,你就能够在浏览器中看到OpenLayers加载地图了。通过使用OpenLayers的各种功能和选项,我们可以进一步自定义和扩展地图应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值