vue集成cesium入门教程(2)加载各类地图(高德/天地图/Mapbox等)

1、概述

  这篇内容是《vue集成cesium入门教程》的第二篇,这里将记录通过Cesium加载高德、天地图、Mapbox等地图。将分别介绍三种地图的接入方法,其中可能会涉及到的用户注册获取token等内容。

2、高德地图

2.1、常用高德地图地址
  1. 矢量地图带注记:https://webrd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}
  2. 矢量地图不带注记:http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}&scl=1&ltype=3
  3. 影像不带注记:http://webst0{1-4}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}
  4. 道路带注记:http://webst0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8
  5. 道路不带注记:http://wprd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=8<ype=11
  6. 矢量带注记http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}
2.2、加载高德地图

  基于《vue集成cesium入门教程》的第一篇内容,增加如下方法,并在initViewer()方法中调用即可实现高德地图的加载。

//加载高德地图影像
loadGaoDeImageryLayers(type){
	if(type == 0){
		//高德矢量图
		let tdtLayer = new Cesium.UrlTemplateImageryProvider({
			url: "http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",
			minimumLevel: 3,
			maximumLevel: 18
		})
		this.viewer.imageryLayers.addImageryProvider(tdtLayer);
	}else if(type == 1){
		//高德影像
		let tdtLayer = new Cesium.UrlTemplateImageryProvider({
		    url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}",
		    minimumLevel: 3,
		    maximumLevel: 18
		})
		this.viewer.imageryLayers.addImageryProvider(tdtLayer);
	}else if(type == 2){
		//高德路网中文注记
		let tdtLayer = 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",
			minimumLevel: 3,
			maximumLevel: 18
		})
		this.viewer.imageryLayers.addImageryProvider(tdtLayer);
	}
},

3、天地图加载

  和高德地图不太一样,天地图需要先获取开发许可,下面我们先简单记录一下获取开发许可的步骤。

3.1、天地图应用开发许可申请
  1. 账号注册
    天地图官网进行账号注册,我这里主要用于测试,选择了个人注册。
    在这里插入图片描述
    2. 申请成为开发者(https://console.tianditu.gov.cn/api/register
    在这里插入图片描述
  2. 创建新的应用,获取对应的Key,即Token。
    在这里插入图片描述

官方文档:http://lbs.tianditu.gov.cn/authorization/authorization.html#example

3.2、加载天地图的方法实现

  下面方法代码较长,其实只是加载了四类不同的天地图图层,方法都是一样的,只有url和layer不一样而已。更多的地图API可以查看官方地址:http://lbs.tianditu.gov.cn/server/MapService.html

loadTianMap(type){
	if(type == 0){
		//矢量地图
		this.viewer.imageryLayers.addImageryProvider(
			new Cesium.WebMapTileServiceImageryProvider({
				url: "http://{s}.tianditu.gov.cn/vec_c/wmts?service=wmts&request=GetTile&version=1.0.0" +
					"&LAYER=vec&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
					"&style=default&format=tiles&tk=天地图的TOKEN",
				layer: "tdtCva",
				style: "default",
				format: "tiles",
				tileMatrixSetID: "c",
				subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
				tilingScheme: new Cesium.GeographicTilingScheme(),
				tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],
				maximumLevel: 18
			})
		);
	}else if(type == 1){
		//影像地图
		this.viewer.imageryLayers.addImageryProvider(
			new Cesium.WebMapTileServiceImageryProvider({
				url: "http://{s}.tianditu.gov.cn/img_c/wmts?service=wmts&request=GetTile&version=1.0.0" +
					"&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
					"&style=default&format=tiles&tk=天地图的TOKEN",
				layer: "tdtCva",
				style: "default",
				format: "tiles",
				tileMatrixSetID: "c",
				subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
				tilingScheme: new Cesium.GeographicTilingScheme(),
				tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],
				maximumLevel: 18
			})
		);
	}else if(type == 2){
		//栅格地图
		this.viewer.imageryLayers.addImageryProvider(
			new Cesium.WebMapTileServiceImageryProvider({
				url: "http://{s}.tianditu.gov.cn/ter_c/wmts?service=wmts&request=GetTile&version=1.0.0" +
					"&LAYER=ter&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
					"&style=default&format=tiles&tk=天地图的TOKEN",
				layer: "tdtCva",
				style: "default",
				format: "tiles",
				tileMatrixSetID: "c",
				subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
				tilingScheme: new Cesium.GeographicTilingScheme(),
				tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],
				maximumLevel: 18
			})
		);
	}else if(type == 3){
		//标记地图
		this.viewer.imageryLayers.addImageryProvider(
			new Cesium.WebMapTileServiceImageryProvider({
				url: "http://{s}.tianditu.gov.cn/cia_c/wmts?service=wmts&request=GetTile&version=1.0.0" +
					"&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}" +
					"&style=default&format=tiles&tk=天地图的TOKEN",
				layer: "tdtCva",
				style: "default",
				format: "tiles",
				tileMatrixSetID: "c",
				subdomains: ["t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7"],
				tilingScheme: new Cesium.GeographicTilingScheme(),
				tileMatrixLabels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"],
				maximumLevel: 18
			})
		);
	}
	
},

4、Mapbox地图加载

  Mapbox公司于2010年6月01日在美国成立。http://Mapbox.com 是一个很棒的地图制作及分享网站,用户可以使用Mapbox Studio创建一个自定义、交互式的地图,然后可以将这些自定义的地图和数据服务你自己的网站(Web)或移动应用程序(Mobile Web/Android/IOS)上。更多详情信息请参考《什么是mapbox?》

4.1、账号注册

  Mapbox官方地址:https://www.mapbox.com/。在注册Mapbox账号的时候,需要输入银行卡号等敏感信息,在知乎上找了一篇文章,可以避免输入自己真实的银行账户信息(测试时使用,不了解正式环境使用是否存在风险):传送门。
在这里插入图片描述

4.2、自定义地图

  注册Mapbox后,登录到Mapbox后,进入该页面,可以创建自定义的地图。
在这里插入图片描述
  创建好的地图样式如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  通过上述操作,我们可以获取自定义地图的accessToken和styleId等信息,这个在代码中需要用到。

  如果第一次创建地图,需要点击“New style”按钮,然后选择模板。
在这里插入图片描述
在这里插入图片描述
  然后,点击自定义按钮,进入地图编辑页面进行编辑,最后再发布即可(必须有修改才可以发布),如下所示:
在这里插入图片描述

4.3、Vue加载Mapbox地图方法
loadMapboxVectorMap () {
  this.vectorMap = this.viewer.imageryLayers.addImageryProvider(
    new Cesium.MapboxStyleImageryProvider({
      url: 'https://api.mapbox.com/styles/v1',
      username: '注册的账号名称',
      styleId: '自定义地图时获取的styleId',
      accessToken: '自定义地图时获取的AccessToken',
	  scaleFactor:true
    })
  )
  this.vectorMap.title = 'mapboxVectorMap'
  this.vectorMap.show = true
},

5、总结

  自此,我们已经实现了常用几种地图的加载,在实际应用过程中,可能还有一些其他具体的要求,我们可以查看《 Cesium 中文 API 文档 v1.72》了解更多的参数配置的细节和使用方法。在上述代码中涉及到的addImageryProvider()方法、WebMapTileServiceImageryProvider对象(天地图加载)、UrlTemplateImageryProvider对象(高德地图加载)、MapboxStyleImageryProvider对象(Mapbox地图加载)在该文档均有较详细的介绍。

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
你可以使用MapboxGL和Vue3来加载高德地图实例。首先,确保你已经安装了MapboxGL和Vue3的依赖。 接下来,你可以创建一个Vue组件来加载地图。在这个组件中,你需要先引入MapboxGL和高德地图的JavaScript库: ```javascript import mapboxgl from 'mapbox-gl'; import AMapLoader from '@amap/amap-jsapi-loader'; export default { mounted() { // 加载高德地图 AMapLoader.load({ key: 'your-amap-api-key', version: '2.0', plugins: ['AMap.Geocoder'] }).then(() => { // 初始化MapboxGL mapboxgl.accessToken = 'your-mapbox-access-token'; // 创建地图实例 const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v11', center: [lng, lat], zoom: 12 }); // 在地图上添加高德地图瓦片图层 const amapLayer = new AMap.TileLayer(); map.addLayer(amapLayer); // 在地图上添加其他图层、标记等 // ... }); } } ``` 在上面的代码中,你需要替换`your-amap-api-key`为你的高德地图API密钥,以及`your-mapbox-access-token`为你的Mapbox访问令牌。你还可以根据需要设置地图的中心点和缩放级别。 最后,将地图容器添加到你的Vue模板中: ```html <template> <div id="map"></div> </template> <script> import mapComponent from '@/components/MapComponent.vue'; export default { components: { mapComponent } } </script> ``` 通过这种方式,你可以在Vue组件中使用MapboxGL和高德地图加载地图实例。记得替换你的API密钥和访问令牌,以及根据需要自定义地图样式和添加其他图层。希望对你有帮助!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姠惢荇者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值