收藏
回答

map 中bindtap中点击地图中的任何一个点都可以吗?为啥这边不是?

<map id="map" longitude="{{longitude}}" circles="{{circles}}" show-location latitude="{{latitude}}" scale="14" bindmarkertap="handleMarkerTap" bindtap="tapMap" style="width:100%;height:90%;"></map>
circles:[
      {
        longitude: 113.324520,
        latitude: 23.099994,
        radius:500,
        strokeWidth:1,
        color:'#E41F18'
      }
    ],
 getDistance(lat1, lon1, lat2, lon2) {
    const R = 6371000;
    const toRad = (d) => d * Math.PI / 180;
    const dLat = toRad(lat2 - lat1);
    const dLon = toRad(lon2 - lon1);
    const a = Math.sin(dLat / 2) ** 2 +
              Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
              Math.sin(dLon / 2) ** 2;
    return R * (2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)));
  },


  isInCircle(currentLat, currentLon, circleLat, circleLon, radius) {
    const distance = this.getDistance(currentLat, currentLon, circleLat, circleLon);
    return distance <= radius;
  },
  tapMap(e){
    console.log(e,'点击地图');
    const tappedLocation = e.detail; // 获取被点击的标记点的位置信息(如果有的话)
    if (this.isInCircle(
      // 22.677173,114.330154,// 内
      tappedLocation.latitude,tappedLocation.longitude,
      this.data.circles[0].latitude, this.data.circles[0].longitude,
      this.data.circles[0].radius
    )) {
      // console.log('Point is within the circle');
       wx.showToast({
        title:'在范围内',
        icon:'none'
       })
      // 处理在圆内的点击事件,例如更新markers数组等。
    } else {
      wx.showToast({
        title:'很遗憾',
        icon:'none'
       })
      // console.log('Point is outside the circle');
      // 可以选择移除该标记或给出提示。
    }
  },
回答关注问题邀请回答
收藏

3 个回答

  • 小黎
    小黎
    发表于小程序端
    02-24

    不是啥啊,说清楚问题

    02-24
    有用 1
    回复 4
    • Eliauk
      Eliauk
      02-24
      02-24
      回复
    • 小黎
      小黎
      02-24回复Eliauk
      因为你点击到了poi点,可以在map上在添加bindpoitap='tapMap' 这个事件,基本地图的点击事件就全覆盖了
      02-24
      回复
    • Eliauk
      Eliauk
      02-25
      这样会两个事件同时触发
      02-25
      回复
    • 小黎
      小黎
      02-25回复Eliauk
      你试了么,我这边测试不会同时触发
      02-25
      回复
  • 顶风少年
    顶风少年
    05-09

    bindpoitap 事件回调里 重新调用 bindtap 就可以了 把event传过去

    05-09
    有用
    回复
  • 阿耐🦴
    阿耐🦴
    02-24

    刚试了 bindtap有回调

    你tapMap有触发吗

    02-24
    有用
    回复 1
    • Eliauk
      Eliauk
      发表于移动端
      02-24
      我图片上红色画线的不可以,只有空白区域才有回调
      02-24
      回复
登录 后发表内容