vue中高德地图初始化及添加标准图层、实时路况图层、卫星图、卫星和路网、楼块图层

本文详细介绍了如何使用高德地图API在JavaScript环境下进行地图图层的管理,包括添加标准图层、实时路况图层、卫星图层、卫星与路网图层、楼块图层以及移除这些图层的方法,提供了简洁和完整的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高德地图API示例:JS API 示例 | 高德地图API

高德地图API手册:参考手册-地图 JS API v2.0 | 高德地图API

1.在public的index.html中引入高德地图:

<!-- 高德API -->
		<script
			language="javascript"
			src="https://webapi.amap.com/maps?v=1.4.15&key=42a2fe4f3d2084e7e90a24917d019faf&plugin=Map3D,AMap.DistrictLayer,AMap.Scale,AMap.ToolBar,AMap.MarkerClusterer,AMap.Driving,AMap.MouseTool,AMap.Geocoder"
		></script>
		<script type="text/javascript" src="https://a.amap.com/jsapi_demos/static/demo-center/data/china-pp.js"></script>
		<script src="http://a.amap.com/jsapi_demos/static/china.js"></script>
		
		<script src="https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.js"></script>

2.vue文件中为相应添加图层的按钮,首先用import中引入相关方法

3.在js文件中:相关图层添加方法(该方式适用于少量方法的使用)

let map; // 初始化时的地球容器

// 隐藏地球
function hiddenEarth () {
	let hidden = document.querySelector('#earthPanel')
	hidden.style.display = 'none'
}
// 添加地球
function addEarth () {
	let add = document.querySelector('#earthPanel')
	add.style.display = 'block'
}

// 高德地图初始化
function MapInit (el) {
	map = new AMap.Map("gaodeContainer", {  //设置地图容器id
		viewMode: "3D",    //是否为3D地图模式
		zoom: 10,           //初始化地图级别
		center: [114.514859, 38.042306], //初始化地图中心点位置
	});

}

// 添加标准图层
function addNormLayer () {
	hiddenEarth()
	var map = new AMap.Map('gaodeContainer', {
		center: [114.514859, 38.042306],
		layers: [//只显示默认图层的时候,layers可以缺省
			new AMap.TileLayer()//高德默认标准图层
		],
		zoom: 13
	});
}

// 移除标准图层
function removeNormLayer () {
	addEarth()
}


// 实时路况图层
function addLiveLayer () {
	// 隐藏地球
	hiddenEarth()
	// 地图初始化
	MapInit('gaodeContainer')
	// 添加实时路况图层
	var trafficLayer = new AMap.TileLayer.Traffic({
		center: [114.514859, 38.042306],
		zoom: 1,
		zIndex: 10,
	});
	trafficLayer.setMap(map);

}

// 移除实时路况图层
function removeLiveLayer () {
	// 添加地球
	MapInit('gaodeContainer')
}

// 添加卫星图
function addSatellite () {
	hiddenEarth()
	var satellite = new AMap.Map('gaodeContainer', {
		center: [114.514859, 38.042306],
		layers: [new AMap.TileLayer.Satellite()],
		zoom: 13
	});

}

// 移除卫星图
function removeSatellite () {
	MapInit('gaodeContainer')
}

// 添加卫星和路网
function addSatelliteAndRoadNet () {
	hiddenEarth()
	var map = new AMap.Map('gaodeContainer', {
		center: [114.514859, 38.042306],
		layers: [
			// 卫星
			new AMap.TileLayer.Satellite(),
			// 路网
			new AMap.TileLayer.RoadNet()
		],
		zoom: 13
	});

}

// 移除卫星和路网
function removeSatelliteAndRoadNet () {
	MapInit('gaodeContainer')
}

// 添加楼块图层
function addBlock () {
	hiddenEarth()
	var map = new AMap.Map('gaodeContainer', {
		center: [114.514859, 38.042306],
		viewMode: '3D',
		pitch: 60,
		rotation: -35,
		// 隐藏默认楼块
		features: ['bg', 'road', 'point'],
		mapStyle: 'amap://styles/light',
		layers: [
			// 高德默认标准图层
			new AMap.TileLayer.Satellite(),
			// 楼块图层
			new AMap.Buildings({
				zooms: [16, 18],
				zIndex: 10,
				heightFactor: 2//2倍于默认高度,3D下有效
			})
		],
		zoom: 16
	});
}

// 移除楼块图层
function removeBlock () {
	MapInit('gaodeContainer')
}


export { addNormLayer, removeNormLayer, addLiveLayer, removeLiveLayer, addSatellite, removeSatellite, addSatelliteAndRoadNet, removeSatelliteAndRoadNet, addBlock, removeBlock };

4.在js文件中:添加图层的方法简洁版,有些可以合并到一个方法中调用,和上面的js文件功能相同。

let map; // 初始化时的地球容器
let trafficLayer; // 实时路况图层

// 隐藏地球
function hiddenEarth () {
	let hidden = document.querySelector('#earthPanel')
	hidden.style.display = 'none'
}
// 添加地球
function addEarth () {
	let add = document.querySelector('#earthPanel')
	add.style.display = 'block'
}

// 高德地图初始化
function MapInit (el) {
	map = new AMap.Map("gaodeContainer", {  //设置地图容器id
		viewMode: "3D",    //是否为3D地图模式
		zoom: 10,           //初始化地图级别
		center: [114.514859, 38.042306], //初始化地图中心点位置
	});
}

// 添加图层
function addMapLayer (el) {
	// 隐藏地球
	hiddenEarth()
	// 地图初始化
	MapInit('gaodeContainer')

	switch (el) {
		case 'gdnormlayer': {
			// 添加标准图层
			map.add(new AMap.TileLayer())
			break
		}
		case 'gdsatellite': {
			// 添加卫星图
			map.add(new AMap.TileLayer.Satellite())
			break
		}
		case 'gdsatelliteandroladnet': {
			// 添加卫星和路网
			map.add(new AMap.TileLayer.Satellite())
			map.add(new AMap.TileLayer.RoadNet())
			break
		}
	}
}

// 移除图层
function removeLayer (el) {
	if (el == 'gdnormlayer') {
		addEarth()
	} else { MapInit('gaodeContainer') }

}

// 添加实时路况
function addLiveLayer () {
	hiddenEarth()
	MapInit('gaodeContainer')
	trafficLayer = new AMap.TileLayer.Traffic({
		zIndex: 10
	});

	trafficLayer.setMap(map);
}


// 添加楼块图层
function addBlockLayer () {
	hiddenEarth()
	var map = new AMap.Map('gaodeContainer', {
		center: [114.514859, 38.042306],
		viewMode: '3D',
		pitch: 60,
		rotation: -35,
		// 隐藏默认楼块
		features: ['bg', 'road', 'point'],
		mapStyle: 'amap://styles/light',
		layers: [
			// 高德默认标准图层
			new AMap.TileLayer.Satellite(),
			// 楼块图层
			new AMap.Buildings({
				zooms: [16, 18],
				zIndex: 10,
				heightFactor: 2 // 2倍于默认高度,3D下有效
			})
		],
		zoom: 16
	});
}



export { addLiveLayer, addMapLayer, removeLayer, addBlockLayer };

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值