vue中引入高德地图并多点标注的实现步骤

 更新时间:2022年09月07日 10:07:58   作者:啊翔呀  
这篇文章主要介绍了vue中引入高德地图并多点标注,实现步骤是通过vue的方法引入地图,初始化地图,设置宽和高,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

vue中引入高德地图并多点标记

步骤:

  • 通过vue的方法引入地图
  • 初始化地图,设置宽和高
  • 信息窗口实例
  • 遍历生成多个标记点

首先在项目的public下的index.html中引入地图

<link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css"/>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=申请的key"></script>

上代码(注释)

<template>
  <div>
  //为地图设置宽和高
    <div id="container" style="width: 100%;height: 700px"></div>
  </div>
</template>
<script>
export default {
  data() {
    return {
    //假数据   经纬度
      lnglats: [
        [113.922282,35.332887],
	    [113.963101,35.318516],
	    [113.960801,35.306263],
	    [113.926809,35.301255]
      ],
    }
  },
  mounted() {
    this.carGPSIP()
  },
  methods: {
    carGPSIP() {
      var map = new AMap.Map("container", {resizeEnable: true});//初始化地图
      //信息窗口实例
      var infoWindow = new AMap.InfoWindow({offset: new AMap.Pixel(0, -30)});
      //遍历生成多个标记点
      for (var i = 0, marker; i < this.lnglats.length; i++) {
        var marker = new AMap.Marker({
          position: this.lnglats[i],//不同标记点的经纬度
          map: map
        });
        marker.content = '我是第' + (i + 1) + '个Marker';
        marker.on('click', markerClick);
        marker.emit('click', {target: marker});//默认初始化不出现信息窗体,打开初始化就出现信息窗体
      }
      function markerClick(e) {
        infoWindow.setContent(e.target.content);
        infoWindow.open(map, e.target.getPosition());
      }
      map.setFitView();
      }
    },
}
</script>
<style>
</style>

补充:下面看下VUE+vue-amap实现高德地图多个标记点展示

安装组件

npm install vue-amap --save

在main.js引入插件

import VueAMap from 'vue-amap'
Vue.use(VueAMap)
VueAMap.initAMapApiLoader({
  key: '在高德地图申请的key',
  plugin: [
    'AMap.DistrictSearch',
    'AMap.Autocomplete', // 输入提示插件
    'AMap.PlaceSearch', // POI搜索插件
    'AMap.Scale', // 右下角缩略图插件 比例尺
    'AMap.OverView', // 地图鹰眼插件
    'AMap.ToolBar', // 地图工具条
    'AMap.MapType', // 类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制
    'AMap.PolyEditor', // 编辑 折线多,边形
    'AMap.CircleEditor', // 圆形编辑器插件
    'AMap.Geolocation', // 定位控件,用来获取和展示用户主机所在的经纬度位置
    'AMap.Geocoder'
  ],
  v: '1.4.4',
  uiVersion: '1.0.11'
 
})

 在index.vue中运用

html部分代码

<template>
  <div>
     <el-amap
          vid="amapContainer"
          :amap-manager="amapManager"
          :events="events"
          class="amap-demo"
       >
      </el-amap>
   </div>
</template>

js部分代码

 
<script>
import { AMapManager, lazyAMapApiLoaderInstance } from 'vue-amap'
const amapManager = new AMapManager()
export default {
  data() {
    return { 
       //地图列表
      mapList: [],
      amapManager,
    }
 },
 
  //必须写在mounted方法中
 mounted() {
    lazyAMapApiLoaderInstance.load().then(() => {
      
      this.map = new AMap.Map('amapContainer', {
        center: [108.956673, 34.211891], //地图显示的中心位置
        zoom: 5, //地图缩放比例
        mapStyle: 'amap://styles/9477331003fd4f8bd683a2450bd58adb', //自定义地图皮肤,用的规划夜皮肤
      })
     //地图标记点方法
      this.markers()
    })
  },
 
 methods: {
   markers() {
   
      // 标记点未渲染完 login加载中
      const loading = this.$loading({
        lock: true,
        text: 'Loading',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.7)',
      })
        //地图列表 从后台获取
      let mapList = this.mapList
    
     // 循环渲染标记点
      for (var i = 0; i < mapList.length; i++) {
        
             // 获取的经纬度126.53,45.8
            let position = mapList[j].lng + ',' + mapList[j].lat
           //将字符串分割成数组形式 ["126.53", "45.8"]
            position = position.split(',')
      
            var text = new AMap.Text({
              text: '.',
              anchor: 'center', // 设置文本标记锚点
              draggable: false,
              cursor: 'pointer',
              angle: 10,
              style: {
                'width': '20px',
                'height': '20px',
                'border-radius': '50%', //设置为圆形
                'background-color': mapList[i].colorStyle, //标记点颜色
                'border-color': mapList[i].colorStyle, //标记点边框颜色
                'color':mapList[i].colorStyle, //文字颜色
                'opacity': '0.8', //透明度
              },
              position: position, //圆点位置 经纬度
               //鼠标放到圆点上显示的信息
              title: `
                项目名称:${mapList[i].proName}    
                 智能单元编号:${mapList[j].itNumber} `,
            })
            text.setMap(this.map)
            //关闭加载框
              setTimeout(() => {
              loading.close()
            }, 500)
        
      }
     
    },
//点击左下角的设备列表聚焦到标记点位置
  focusing(id) {
     // console.log(id) 获取列表的经纬度
      let mapList = this.mapList
      let arr = []
//循环地图数据列表 经纬度和左下角设备列表的经纬度相同 就赋值到arr
      for (var i = 0; i < mapList.length; i++) {
        
        if (mapList[i].projectId == id) {
          arr.push(mapList[i].lng + ',' + mapList[i].lat)
        }
      }
       // 聚焦到标记点位置的方法
      this.map.setZoomAndCenter(10, arr[0].split(','))
    },
}
</script>

会出现的问题

使用高德地图自定义皮肤展示不出来 必须在public下的index.html添加以下代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>bitbug_favicon.ico">
    <title>设备地图</title>
   <script>
      window._AMapSecurityConfig = {
            securityJsCode:'高德地图你申请的安全密钥',
        }        
   </script>
  <body>
      <script src="https://webapi.amap.com/maps?v=1.4.15&key=高德地图申请的key&plugin=AMap.Geocoder"></script>
      <script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
 
  </body>
</html>

到此这篇关于vue中引入高德地图并多点标注的文章就介绍到这了,更多相关vue高德地图多点标注内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue项目如何使用three.js实现vr360度全景图片预览

    vue项目如何使用three.js实现vr360度全景图片预览

    这篇文章主要介绍了vue项目如何使用three.js实现vr360度全景图片预览,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue3中$attrs的变化与inheritAttrs的使用详解

    vue3中$attrs的变化与inheritAttrs的使用详解

    $attrs现在包括class和style属性。 也就是说在vue3中$listeners不存在了,vue2中$listeners是单独存在的,在vue3 $attrs包括class和style属性, vue2中 $attrs 不包含class和style属性,这篇文章主要介绍了vue3中$attrs的变化与inheritAttrs的使用 ,需要的朋友可以参考下
    2022-10-10
  • Vue记住滚动条和实现下拉加载的完美方法

    Vue记住滚动条和实现下拉加载的完美方法

    这篇文章主要给大家介绍了关于Vue记住滚动条和实现下拉加载的完美方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • vue全局组件和局部组件的写法介绍

    vue全局组件和局部组件的写法介绍

    这篇文章主要介绍了vue全局组件和局部组件的写法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • vue里面父组件修改子组件样式的方法

    vue里面父组件修改子组件样式的方法

    下面小编就为大家分享一篇vue里面父组件修改子组件样式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • .eslintrc配置目录及配置项的使用方式

    .eslintrc配置目录及配置项的使用方式

    这篇文章主要介绍了.eslintrc配置目录及配置项的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Vue.js教程之axios与网络传输的学习实践

    Vue.js教程之axios与网络传输的学习实践

    这篇文章主要给大家介绍了Vue.js之axios与网络传输的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟随小编一起来学习学习吧。
    2017-04-04
  • vue echarts实现改变canvas长和宽自适应

    vue echarts实现改变canvas长和宽自适应

    这篇文章主要介绍了vue echarts实现改变canvas长和宽自适应问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue中,在本地缓存中读写数据的方法

    vue中,在本地缓存中读写数据的方法

    今天小编就为大家分享一篇vue中,在本地缓存中读写数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue-router 路由传参用法实例分析

    vue-router 路由传参用法实例分析

    这篇文章主要介绍了vue-router 路由传参用法,结合实例形式分析了vue-router 路由传参基本使用方法及操作注意事项,需要的朋友可以参考下
    2020-03-03

最新评论