当前位置:   article > 正文

在vue项目中使用高德地图_vue 高德地图

vue 高德地图

1.安装高德地图插件

npm install vue-amap --save

2.申请高德地图账号和key

官网地址:高德开放平台 | 高德地图API

3.在main.js中引入

  1. // 引入vue-amap
  2. import VueAMap from 'vue-amap';
  3. // 初始化vue-amap
  4. Vue.use(VueAMap);
  5. VueAMap.initAMapApiLoader({
  6. key: 'c8b20507506bf9ec5e63f9b7a6e0eb53',
  7. plugin: [
  8. "AMap.Autocomplete", //输入提示插件
  9. "AMap.PlaceSearch", //POI搜索插件
  10. "AMap.Scale", //右下角缩略图插件 比例尺
  11. "AMap.OverView", //地图鹰眼插件
  12. "AMap.ToolBar", //地图工具条
  13. "AMap.MapType", //类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
  14. "AMap.PolyEditor", //编辑 折线多,边形
  15. "AMap.CircleEditor", //圆形编辑器插件
  16. "AMap.Geolocation" //定位控件,用来获取和展示用户主机所在的经纬度位置
  17. ],
  18. v: '1.4.4'
  19. });

4.创建存放地图的容器

  1. <div class="box">
  2. <div class="mapBox" id="myMap"></div>
  3. <div class="btn" @click="screenFull">放大</div>
  4. </div>

5.初始化地图

  1. //初始化地图容器
  2. initMap(){
  3. // console.log("初始化地图容器")
  4. this.myMap = new AMap.Map('myMap',{
  5. zoom: 10, //设置地图显示的缩放级别
  6. // center: [116.397428, 39.90923],//设置地图中心点坐标
  7. layers: [new AMap.TileLayer()], //设置图层,可设置成包含一个或多个图层的数组
  8. // mapStyle: 'amap://styles/whitesmoke', //设置地图的显示样式
  9. viewMode: '3D', //设置地图模式
  10. });
  11. // console.log("创建地图容器end.....")
  12. },

6.渲染数据,标记坐标点

  1. //获取位置信息
  2. point() {
  3. //接口请求数据
  4. this.$api.amap.getLocation().then((res) => {
  5. if(res.data.status == 200) {
  6. this.pointMarker = res.data.data.list;
  7. console.log(this.pointMarker)
  8. // console.log("开始创建点了")
  9. // 根据状态在地图上标记点
  10. this.pointMarker.forEach((item) => {
  11. if(item.status===1){
  12. item.status="在线"
  13. this.icons=require('../../../assets/icons/3.png')//自定义图标
  14. }else if(item.status===0){
  15. item.status="离线"
  16. this.icons=require('../../../assets/icons/2.png')
  17. }
  18. if (item.longitude != null && item.latitude != null) {
  19. var myMarker = new AMap.Marker({
  20. position: [Number(item.longitude), Number(item.latitude)],
  21. icon: new AMap.Icon({
  22. image: this.icons,
  23. size: new AMap.Size(52, 52,), //图标大小
  24. imageSize: new AMap.Size(26,38)
  25. })
  26. });
  27. myMarker.data = item;
  28. myMarker.on("click", this.markerClick);
  29. this.myMap.add(myMarker);
  30. }
  31. });
  32. // console.log("创建点完成了。。。。")
  33. }else{
  34. this.$message(res.data.message);
  35. }
  36. });
  37. },

7.坐标点击显示位置信息

  1. //位置信息 点击事件
  2. markerClick(e){
  3. var a = e.target.data;
  4. console.log(e);
  5. var infoWindow = new AMap.InfoWindow({
  6. anchor: 'top-center',
  7. // isCustom:true,
  8. // content: "这是信息窗体!获取到数据吧"+a.longitude+a.deviceName+a.status
  9. content: `
  10. <div class="locations">
  11. 城市名称:${a.deviceName}<br/>
  12. 详细地址:${a.tenantName}
  13. </div>`,
  14. closeWhenClickMap: true,
  15. offset: new AMap.Pixel(3, 5)
  16. });
  17. infoWindow.open(this.myMap,[Number(a.longitude),Number(a.latitude)]);
  18. },

8.全屏显示地图

  1. screenFull(){
  2. let element = document.getElementById('myMap');//设置后就是 让id==box的容器全屏
  3. if (this.changeScreen) {
  4. if (document.exitFullscreen) {
  5. document.exitFullscreen();
  6. } else if (document.webkitCancelFullScreen) {
  7. document.webkitCancelFullScreen();
  8. } else if (document.mozCancelFullScreen) {
  9. document.mozCancelFullScreen();
  10. } else if (document.msExitFullscreen) {
  11. document.msExitFullscreen();
  12. }
  13. } else {
  14. if (element.requestFullscreen) {
  15. element.requestFullscreen();
  16. } else if (element.webkitRequestFullScreen) {
  17. element.webkitRequestFullScreen();
  18. } else if (element.mozRequestFullScreen) {
  19. element.mozRequestFullScreen();
  20. } else if (element.msRequestFullscreen) {
  21. // IE11
  22. element.msRequestFullscreen();
  23. }
  24. }
  25. this.changeScreen = this.changeScreen;
  26. },

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/424966?site
推荐阅读
相关标签
  

闽ICP备14008679号