Vue+Cesium:添加高德地图/百度地图/天地图

1  Viewer查看器控件的设置

const viewer = new Cesium.Viewer('container', {
		//地形图层
		terrain: Cesium.Terrain.fromWorldTerrain(),
		//信息窗口
		infoBox: false,
		//显示查询按钮
		// geocoder: false,
		//home按钮
		// homeButton: false,
		// 控制查看器的显示模式-地球/平面
		// sceneModePicker: false,
		// 是否显示图层选择
		baseLayerPicker: false,
		//帮助按钮
		navigationHelpButton: false,
		//播放动画
		// animation: false,
		//时间线
		// timeline: false,
		//全屏模式
		// fullscreenButton: false
	})

2 高德地图的添加

  • 矢量图层

//加载高德/百度影像地图,UrlTemplateImageryProvider该接口是加载谷歌地图服务的接口
	viewer.imageryLayers.addImageryProvider(
		new Cesium.UrlTemplateImageryProvider({
			url: 'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
			layer: 'tdtVecBasicLayer',
			style: 'default',
			format: 'image/png',
			tileMatrixSetID: 'GoogleMapsCompatible',
			show: false,
		})
	)
  •  矢量注记图层

// 如果需要叠加高德/百度注记地图则添加以下代码
	viewer.imageryLayers.addImageryProvider(
		new Cesium.UrlTemplateImageryProvider({
			url: 'http://webst02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8',
			layer: 'tdtAnnoLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
		})
	)

 3 天地图的添加

申请key

天地图API (tianditu.gov.cn)icon-default.png?t=N7T8http://lbs.tianditu.gov.cn/home.html

  • 加载天地图影像图层

//加载天地图
	const webKey = 'key'
	//天地图属于网络底图切片影像图层 影像底图
	//WebMapTileServiceImageryProvider该接口是加载WMTS服务的接口,天地图是典型的WMTS服务的原型
	viewer.imageryLayers.addImageryProvider(
		new Cesium.WebMapTileServiceImageryProvider({
			url:
				'http://t0.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=' +
				webKey,
			layer: 'tdtAnnoLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
			show: false,
		})
	)
  • 加载天地图影像注记图层

//影像注记
	viewer.imageryLayers.addImageryProvider(
		new Cesium.WebMapTileServiceImageryProvider({
			url:
				'http://t0.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=' +
				webKey,
			layer: 'tdtAnnoLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
			show: false,
		})
	)
  • 加载天地图矢量图层

//矢量底图
	viewer.imageryLayers.addImageryProvider(
		new Cesium.WebMapTileServiceImageryProvider({
			url:
				'http://t0.tianditu.com/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=vec&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=' +
				webKey,
			layer: 'tdtVecBasicLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
			show: false,
		})
	)
  •  加载天地图矢量注记图层

//矢量注记
	viewer.imageryLayers.addImageryProvider(
		new Cesium.WebMapTileServiceImageryProvider({
			url:
				'http://t0.tianditu.com/cva_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cva&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=' +
				webKey,
			layer: 'tdtAnnoLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
		})
	)

 4 完整代码

<template>
	<div id="container"></div>
</template>

<script setup>
import { onMounted } from 'vue'
import * as Cesium from 'cesium'
import 'cesium/Build/Cesium/Widgets/widgets.css'

Cesium.Ion.defaultAccessToken = key
onMounted(async () => {
	// 地球视图,底图加载
	const viewer = new Cesium.Viewer('container', {
		//地形图层
		terrain: Cesium.Terrain.fromWorldTerrain(),
		//信息窗口
		infoBox: false,
		//显示查询按钮
		// geocoder: false,
		//home按钮
		// homeButton: false,
		// 控制查看器的显示模式-地球/平面
		// sceneModePicker: false,
		// 是否显示图层选择
		baseLayerPicker: false,
		//帮助按钮
		navigationHelpButton: false,
		//播放动画
		// animation: false,
		//时间线
		// timeline: false,
		//全屏模式
		// fullscreenButton: false
	})
	//隐藏cesium Icon-logo
	viewer.cesiumWidget.creditContainer.style.display = 'none'
	// cesium的默认视角
	Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(
		89.5,
		20.4,
		110.4,
		61.2
	)
	//加载天地图
	const webKey = 'key'
	//天地图属于网络底图切片影像图层 影像底图
	//WebMapTileServiceImageryProvider该接口是加载WMTS服务的接口,天地图是典型的WMTS服务的原型
	viewer.imageryLayers.addImageryProvider(
		new Cesium.WebMapTileServiceImageryProvider({
			url:
				'http://t0.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=' +
				webKey,
			layer: 'tdtAnnoLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
			show: false,
		})
	)
	//影像注记
	viewer.imageryLayers.addImageryProvider(
		new Cesium.WebMapTileServiceImageryProvider({
			url:
				'http://t0.tianditu.com/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=' +
				webKey,
			layer: 'tdtAnnoLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
			show: false,
		})
	)
	//矢量底图
	viewer.imageryLayers.addImageryProvider(
		new Cesium.WebMapTileServiceImageryProvider({
			url:
				'http://t0.tianditu.com/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=vec&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default&format=tiles&tk=' +
				webKey,
			layer: 'tdtVecBasicLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
			show: false,
		})
	)
	//矢量注记
	viewer.imageryLayers.addImageryProvider(
		new Cesium.WebMapTileServiceImageryProvider({
			url:
				'http://t0.tianditu.com/cva_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cva&tileMatrixSet=w&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}&style=default.jpg&tk=' +
				webKey,
			layer: 'tdtAnnoLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
		})
	)
	//加载高德/百度影像地图,UrlTemplateImageryProvider该接口是加载谷歌地图服务的接口
	viewer.imageryLayers.addImageryProvider(
		new Cesium.UrlTemplateImageryProvider({
			url: 'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
			layer: 'tdtVecBasicLayer',
			style: 'default',
			format: 'image/png',
			tileMatrixSetID: 'GoogleMapsCompatible',
			show: false,
		})
	)
	// 如果需要叠加高德/百度注记地图则添加以下代码
	viewer.imageryLayers.addImageryProvider(
		new Cesium.UrlTemplateImageryProvider({
			url: 'http://webst02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8',
			layer: 'tdtAnnoLayer',
			style: 'default',
			format: 'image/jpeg',
			tileMatrixSetID: 'GoogleMapsCompatible',
		})
	)
	// 将三维球定位到中国
	viewer.camera.flyTo({
		destination: Cesium.Cartesian3.fromDegrees(103.84, 31.15, 17850000),
		orientation: {
			heading: Cesium.Math.toRadians(348.4202942851978),
			pitch: Cesium.Math.toRadians(-89.74026687972041),
			roll: Cesium.Math.toRadians(0),
		},
		complete: function callback() {
			// 定位完成之后的回调函数
		},
	})
})
</script>

<style scoped>
* {
	padding: 0;
	margin: 0;
}
#container {
	height: 100%;
	width: 100%;
}
</style>

5 小提示

  • 注意检查token或key是否添加
  • 检查引入cesium样式是否正确
### OpenLayers (ol) 使用指南和常见问题解决 #### 一、安装 OpenLayers 并集成到 Vue 项目中 为了在 Vue 项目中使用 OpenLayers,需先确保已正确安装并配置好环境。可以通过 npm 或 yarn 来安装 OpenLayers: ```bash npm install ol --save ``` 或者 ```bash yarn add ol ``` 完成上述操作之后,在 Vue 组件内引入 `ol` 模块即可开始构建地图应用[^1]。 #### 二、加载不同类型的底图服务 OpenLayers 支持多种在线地图服务商的数据源接入,比如天地图百度地图高德地图等。下面给出一段通用代码片段用于展示如何创建一个基于 OSM 的矢量瓦片层作为基础地图: ```javascript import 'ol/ol.css'; import { Map, View } from 'ol'; import TileLayer from 'ol/layer/Tile'; import OSM from 'ol/source/OSM'; const map = new Map({ target: 'map', layers: [ new TileLayer({ source: new OSM() }) ], view: new View({ center: [0, 0], zoom: 2 }) }); ``` 对于其他类型的地图提供商,则需要替换对应的类名以及可能存在的额外参数设置。例如,当想要添加 ArcGIS Server 地图时,应该选用 `XYZ` 类型的 Source,并指定相应的 URL 模板[^2]。 #### 三、与 Cesium 结合实现三维可视化效果 如果希望进一步增强项目的交互体验,还可以考虑将 OpenLayers 同 CesiumJS 联动起来。这不仅能够提供更加丰富的视觉呈现方式,同时也简化了开发流程中的某些复杂逻辑处理工作。具体来说就是利用名为 "OL-Cesium" 的插件来达成目的。该工具允许用户在同一界面下自由转换二维平面视图和平移缩放功能完备的球体模型之间查看地理信息[^3]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值