首页 前端知识 Vue Cesium:添加高德地图/百度地图/天地图

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

2024-02-29 12:02:33 前端知识 前端哥 256 160 我要收藏

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样式是否正确
转载请注明出处或者链接地址:https://www.qianduange.cn//article/2954.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!