目录
先上图
1.npm引入插件(高德地图官方推荐)
2.页面中引入使用
3.地图初始化
4.标记marker的添加和删除
先上图
1.npm引入插件(高德地图官方推荐)
npm install @amap/amap-jsapi-loader
2.页面中引入使用
import AMapLoader from '@amap/amap-jsapi-loader';
AMapLoader.load({
key: "yourkey",
version: "2.0",
// resizeEnable: true,
plugins: [
'AMap.PathSimplifier','AMap.Geocoder', 'AMap.MouseTool', 'AMap.PolyEditor', 'AMap.CircleEditor', 'AMap.AutoComplete',
'AMap.PlaceSearch'
]
}).then(() => {
console.log('地图加载成功');
}).catch(err => {
console.log('地图加载失败');
})
如果有多个页面使用到地图,可以在main.js中引入,即可全局注册AMapLoader
key的获取,进入高德地图开发平台--控制台,复制自己的key
全局配置安全密钥(获取方式同上)
window._AMapSecurityConfig = {
securityJsCode: 'yourCode' //* 安全密钥
}
plugins用于配置使用的插件,可自行按需配置
3.地图初始化
<div id="mapContainer"></div>
onMounted(()=>{
initMap()
)
let map = null
const initMap = () => {
try {
map = new AMap.Map("mapContainer", {
resizeEnable: true,
zoom: 5,
mapStyle: "amap://styles/darkblue",//地图主题(可选)
center: [116.478935, 39.997761], //初始化地图中心点位置
});
} catch (err) {
ElMessage.error('地图加载失败')
}
}
经过AMapLoader.load初始化后,便可以如上所述直接使用AMap对象
4.标记marker的添加和删除
①获取关于marker的数据,至少有经纬度,若有多个marker,需有一个参数用来标记,从而区分不同的marker
例如:
[{
id: 1,
long: 117.2563,
lat: 31.1555
},
{
id: 2,
long: 115.2563,
lat: 34.1555
},
......
]
②绘制marker图标
创建图标并设置尺寸样式
const onlineIcon = new aMap.value.Icon({
size: new aMap.value.Size(75, 133), // 图标大小
image: require('../assets/other/onlinedev.png'),
// 自定义图片路径,需确保图片可访问
imageOffset: new aMap.value.Pixel(0, 0), // 图像相对于点的位置偏移
});
③添加marker图标和文字,并绑定图标的点击事件(多个)
let markers = reactive({})
let markerList = []
//addArr.value为marker的数据
addArr.value.map(device => {
var marker = new aMap.value.Marker({
icon: onlineIcon,
position: [device.lang, device.lat],
anchor: 'bottom-center'
});
// 图标下的文字
marker.setLabel({
direction: 'bottom',
offset: new aMap.value.Pixel(0, 10), //设置文本标注偏移量
content: `<div class="labeltext"
style="backgroundcolor:#21C754'}">{{device.ID}}</div>`, //设置文本标注内容
});
//如果markers没有包含 则新增
if (!markers[device.ID]) {
markers[device.ID] = marker
map.add(marker);
markerList.push(marker)
// 标记点添加点击事件
markers[device.ID].on('click', function() {
console.log('点击了' + device.ID);
})
}
})
//地图实例上添加
map.setFitView(markerList, true, [150, 60, 60, 60], 15);
参数说明
markers:用于存储已添加的marker的标记和实例
markersList:marker实例,用于批量添加
map.setFitView的第三个参数[150,60,60,60]控制上下左右的距离,防止边缘被遮挡
④删除marker
获取到要删除的marker的ID信息,此处用上之前定义的
markInfo.map(device => {
map.remove(markers[device.deviceID])
delete markers[device.deviceID]
})
以上就是本期文章全部内容,如需了解更多高德地图使用
可参考主页专栏其他文章