高德地图覆盖物绑定事件无法传参

412 阅读1分钟

高德地图覆盖物绑定事件无法传参

在给高德地图生成的点覆盖物绑定事件时,本想通过 marker.on('click', this.getRoute(id))的形式来实现单击事件绑定加传参。但是忽略了on绑定事件时,第二个参数是函数名称,不能加括号。 正确形式是 marker.on('click', this.getRoute) 为了获取点击的对象,给对象循环时加上自定义属性,再在点击绑定的方法里通过获取自定义属性的方法来获取对象属性

// 根据停车场数据生成停车场覆盖点
    createParkingMarker() {
      this.parkings.forEach((item) => {
        var marker = new AMap.Marker({
          icon: 'https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png',
          position: item.position,
          // label: item.label
          content: item.content,
          //绑定自定义属性
          extData: item
        })
        marker.setLabel({
          offset: new AMap.Pixel(-50, -8), //设置文本标注偏移量
          content: `<div class='info'>${item.carsNumber}</div>`, //设置文本标注内容
          direction: 'right' //设置文本标注方位
        })
        //给点绑定点击事件
        marker.on('click', this.getRoute)
        this.map.add([marker])
      })
    },
    // 获取两点之间步行路径
    getRoute(e) {
      // getExtData获取点击对象的自定义属性
      console.log(e.target.getExtData())
    }