vue2框架集成OpenLayers插件渲染2D地图

地图渲染业务是常见业务场景之一,vue2框架集成OpenLayers插件渲染2D地图今天我们分享一下:

1、创建vue2项目

参考:UI创建方式

2、安装 OpenLayers

复制代码
npm install ol --save

如图:

成功后显示:

3、获取天地图的访问 Key

首次使用需要注册天地图开发者账号国家地理信息公共服务平台 天地图

最终获取KEY,点击查看

4、编写 Vue 组件加载天地图

示例代码:SimpleMap.vue

复制代码
<template>
  <div id="map-container" ref="mapContainer"></div>
</template>

<script>
import 'ol/ol.css'; // 导入OpenLayers样式
import { Map, View } from 'ol'; // 引入地图和视图类
import TileLayer from 'ol/layer/Tile'; // 瓦片图层
import XYZ from 'ol/source/XYZ'; // XYZ格式数据源

export default {
  name: 'TiandituMap',
  data() {
    return {
      map: null, // 保存地图对象
    };
  },
  mounted() {
    this.initMap(); // 在组件挂载后初始化地图
  },
  methods: {
    initMap() {
      // 天地图 URL 模板(以经纬度坐标为例,使用 EPSG:4326)
        // const tdtUrl = 'http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=23dda919115f20893ec1182288f8';
         const tdtUrl = 'http://t0.tianditu.gov.cn/ter_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=23dda919115f20893ec1182288f8';
       //const tdtUrl = 'http://t0.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=23dda919115f20893ec1182288f8';
      // 创建瓦片图层,支持 0~7 的子域(防止请求被限制)
      const tdtLayer = new TileLayer({
        source: new XYZ({
          url: tdtUrl,
          wrapX: true, // 水平方向平铺
          tileGrid: null, // 如果需要自定义瓦片层级,可设置此项
          maxZoom: 18, // 天地图支持的最大缩放级别
          minZoom: 1,
          attributions: '© 天地图',
        }),
      });

      // 创建 OpenLayers 地图对象
      this.map = new Map({
        target: this.$refs.mapContainer, // 地图渲染容器
        layers: [tdtLayer], // 添加天地图图层
        view: new View({
          projection: 'EPSG:4326', // 天地图使用 EPSG:4326(经纬度)
          center: [116.397128, 39.916527], // 天安门经纬度
          zoom: 10, // 初始缩放级别
          minZoom: 1,
          maxZoom: 18,
        }),
      });
    },
  },
};
</script>

<style scoped>
#map-container {
  width: 100%;  /* 地图容器宽度 */
  height: 100vh; /* 地图容器高度占满整个页面 */
}
</style>

5、使用该地图组件

在 Vue 项目中引入并使用这个地图组件 YinD.vue。

复制代码
<template>
  <div>
    <TiandituMap />
  </div>
</template>

<script>
import TiandituMap from './components/SimpleMap.vue'; // 引入地图组件

export default {
  components: {
    TiandituMap,
  },
};
</script>

6、挂载到main.js文件中

复制代码
import Vue from 'vue'
import App from './YinD.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

7、结果展示

运行 Vue 项目,地图会加载天地图的瓦片,并以天安门为中心进行显示。

8、总结

  • 使用 OpenLayers 加载天地图的瓦片,实现网络地图的展示。
  • EPSG:4326 是天地图的默认投影系,适合展示地理位置精确的点。
  • 通过简单的设置,Vue2 可以集成丰富的地图功能,适用于各种业务场景。

到此、vue2框架集成OpenLayers插件渲染2D地图完成,下篇我们分享地图中图层叠加和遮罩的业务,敬请期待!

相关推荐
xiaoye370816 小时前
Java 自动装箱 / 拆箱 原理详解
java·开发语言
ZTLJQ18 小时前
数据的基石:Python中关系型数据库完全解析
开发语言·数据库·python
夏霞18 小时前
c# signlar 客户端传递参数给服务端配置方法
开发语言·c#
迷藏49418 小时前
**发散创新:基于 Rust的开源权限管理系统设计与实战**在现代软件架构中,**权限控制**早已不
java·开发语言·rust·开源
升鲜宝供应链及收银系统源代码服务18 小时前
《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册升鲜宝》
java·前端·数据库·chatgpt·供应链系统·生鲜配送
i建模19 小时前
将Edge浏览器的标签页从顶部水平排列**移至左侧垂直侧边栏
前端·edge
2301_8184190119 小时前
C++中的解释器模式变体
开发语言·c++·算法
跟着珅聪学java19 小时前
js编写中文转unicode 教程
前端·javascript·数据库
英俊潇洒美少年19 小时前
Vue3 深入响应式系统
前端·javascript·vue.js
摇滚侠19 小时前
Java 项目《谷粒商城-1》架构师级Java 项目实战,对标阿里 P6-P7,全网最强,实操版本
java·开发语言