在vue项目中使用高德地图
1.安装高德地图插件
npm install vue-amap --save
2.申请高德地图账号和key
官网地址:高德开放平台 | 高德地图API
3.在main.js中引入
// 引入vue-amap
import VueAMap from 'vue-amap';
// 初始化vue-amap
Vue.use(VueAMap);
VueAMap.initAMapApiLoader({
key: 'c8b20507506bf9ec5e63f9b7a6e0eb53',
plugin: [
"AMap.Autocomplete", //输入提示插件
"AMap.PlaceSearch", //POI搜索插件
"AMap.Scale", //右下角缩略图插件 比例尺
"AMap.OverView", //地图鹰眼插件
"AMap.ToolBar", //地图工具条
"AMap.MapType", //类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
"AMap.PolyEditor", //编辑 折线多,边形
"AMap.CircleEditor", //圆形编辑器插件
"AMap.Geolocation" //定位控件,用来获取和展示用户主机所在的经纬度位置
],
v: '1.4.4'
});
4.创建存放地图的容器
<div class="box">
<div class="mapBox" id="myMap"></div>
<div class="btn" @click="screenFull">放大</div>
</div>
5.初始化地图
//初始化地图容器
initMap(){
// console.log("初始化地图容器")
this.myMap = new AMap.Map('myMap',{
zoom: 10, //设置地图显示的缩放级别
// center: [116.397428, 39.90923],//设置地图中心点坐标
layers: [new AMap.TileLayer()], //设置图层,可设置成包含一个或多个图层的数组
// mapStyle: 'amap://styles/whitesmoke', //设置地图的显示样式
viewMode: '3D', //设置地图模式
});
// console.log("创建地图容器end.....")
},
6.渲染数据,标记坐标点
//获取位置信息
point() {
//接口请求数据
this.$api.amap.getLocation().then((res) => {
if(res.data.status == 200) {
this.pointMarker = res.data.data.list;
console.log(this.pointMarker)
// console.log("开始创建点了")
// 根据状态在地图上标记点
this.pointMarker.forEach((item) => {
if(item.status===1){
item.status="在线"
this.icons=require('../../../assets/icons/3.png')//自定义图标
}else if(item.status===0){
item.status="离线"
this.icons=require('../../../assets/icons/2.png')
}
if (item.longitude != null && item.latitude != null) {
var myMarker = new AMap.Marker({
position: [Number(item.longitude), Number(item.latitude)],
icon: new AMap.Icon({
image: this.icons,
size: new AMap.Size(52, 52,), //图标大小
imageSize: new AMap.Size(26,38)
})
});
myMarker.data = item;
myMarker.on("click", this.markerClick);
this.myMap.add(myMarker);
}
});
// console.log("创建点完成了。。。。")
}else{
this.$message(res.data.message);
}
});
},
7.坐标点击显示位置信息
//位置信息 点击事件
markerClick(e){
var a = e.target.data;
console.log(e);
var infoWindow = new AMap.InfoWindow({
anchor: 'top-center',
// isCustom:true,
// content: "这是信息窗体!获取到数据吧"+a.longitude+a.deviceName+a.status
content: `
<div class="locations">
城市名称:${a.deviceName}<br/>
详细地址:${a.tenantName}
</div>`,
closeWhenClickMap: true,
offset: new AMap.Pixel(3, 5)
});
infoWindow.open(this.myMap,[Number(a.longitude),Number(a.latitude)]);
},
8.全屏显示地图
screenFull(){
let element = document.getElementById('myMap');//设置后就是 让id==box的容器全屏
if (this.changeScreen) {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
} else {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullScreen) {
element.webkitRequestFullScreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.msRequestFullscreen) {
// IE11
element.msRequestFullscreen();
}
}
this.changeScreen = this.changeScreen;
},