高德地图JSAPIvue项目的使用

本文介绍了在项目中使用高德地图JSAPI时的关键步骤,包括如何正确引用、初始化地图、添加和删除点标记以及规划路径。在初始化地图时需注意设置秘钥和版本,添加点标记时可自定义图标和事件,规划路径则涉及多始点到单一终点的步行导航。在操作过程中,作者分享了一些避免常见错误的方法。
摘要由CSDN通过智能技术生成

最近在项目中使用高德地图JSAPI,遇到一些问题整理一下做个总和记录,希望能帮到看到文章的大家

1)关于引用

    npm i @amap/amap-jsapi-loader --save 然后创建好地图容器后引入地图

    注意避坑的点: (1)使用loca可视化的时候地图模式一定换成3d以及指定版本号(2)记得设置秘钥,这里是按官网的,初始话完成后直接在生命周期调用即可

window._AMapSecurityConfig = {
    securityJsCode: "",//秘钥
}
//初始化地图
initMap(){
    AMapLoader.load({
    key: "", // 申请好的Web端开发者Key,首次调用 load 时必填
    version:"2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
    plugins:['AMap.Walking'],// 需要使用的的插件列表,如比例尺'AMap.Scale'等
    Loca:{ 
      version: '2.0.0'
    },
  }).then((AMap)=>{
      this.map = new AMap.Map("map",{  //设置地图容器id
        resizeEnable: true,
        viewMode:"3D",    //是否为3D地图模式
        zoom:13,           //初始化地图级别
        mapStyle: 'amap://styles/darkblue',//地图初始样式,这里选择的是深蓝色
        center:[xxxx, xxxxx], //初始化地图中心点位置
      });
      this.loca = new Loca.Container({
        map: this.map
      );
  }).catch(e=>{
      console.log(e);
  })
}
2)添加点标记

添加点标记时可以事先把labelsarr在data里面存起来方便之后的删除,这里我并没有这样做,点标记携带数据的话可以在new AMap.Marker的时候直接加一个自定义属性扔里面,也可以在之后直接绑上去

      //循环添加点标记数组
      labelsfn(arr = [],str){
        let labelsarr = [] //这个就是存点标记数据的数组
        arr.forEach((item,i)=>{ //这里是传了一堆坐标,直接循环去建立点标记数据
          let icon = new AMap.Icon({
              // 图标尺寸
              size: new AMap.Size(40,40),
              // 图标的取图地址
              image: `图片地址`,
              // 图标所用图片大小
              imageSize: new AMap.Size(40, 40),
          });
          let marker = new AMap.Marker({
              anchor: 'bottom-center', //设置锚点
              offset: new AMap.Pixel(0,8), //设置偏移量
              icon: icon,
              position:[item.longitude || 0,item.latitude || 0] // 位置
          })
          marker.content = ""
          marker.emit('click', {target: marker});
          marker.on('click', "这里是事件函数"); // 点标记添加事件
          labelsarr.push(marker)//最后把点标记数据push进数组
        })
        this.map.add(labelsarr);// 添加到地图
      },

注意避坑的点:(1):点标记点击出来的对话框,因为是在marker.contrnt这里写的对话框内容,如果要绑定事件,可以使用这个方法,但是只能传一个参数,还不能是对象,有大佬可以给指点指点

  created(){
    let thet = this
    window.events = (item)=>{
      //事件
    }
  },
3)删除点标记

上面说过在地图上添加点标记前可以把labelsarr存在data里这里就可以用到

//删除点标记
removelabel(){
    this.map.remove("存起来的点标记数据");
},
4)规划路径

通常规划路径是一个终点一个始点,但是该项目是多个始点一个终点,所以我是这么写的,

//规划路径
routewking(starting,end){ //传一个终点,一个其他坐标数组
     starting.forEach((item,index)=>{
       //步行导航
       let walking = new AMap.Walking({
           map: this.map,
           hideMarkers: true,
           autoFitView: false
       }); 
       //根据起终点坐标规划步行路线
       walking.search([item.longitude,item.latitude], end, function(status, result) {
          if (status === 'complete') {
            //console.log('步行路线数据查询成功');
          } else {
            //console.log('步行路线数据查询失败' + result);
          } 
       });
       this.maparr.push(walking) //把规划好的路径存在data里
     })
},

注意避坑的来了,当我使用这个生成路径后之后的删除就出问题了,思来想去就是在push的时候他只保留了一条路径,删除时就删不干净,所以我先把数据存起来,之后在删除的时候就可以循环删除

      //删除路径
      removewking(){
          this.maparr.forEach((item)=>{
            item.clear()
          })
      },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值