微信小程序中Map组件Marker中把Label文字信息通过按钮显示或隐藏

wxml页面按钮

html 复制代码
<button bindtap="toggleLabel">Toggle Label</button>

js

javascript 复制代码
data:{
	labelMarkerId: null  // 记录当前显示文本的标记的 id
},
//按钮切换显示
toggleLabel() {
  // 判断当前是否有显示的文本标记
  if (this.data.labelMarkerId !== null) {
    // 如果有,移除文本标记
    this.removeLabel();
  } else {
    let res = {
      latitude: this.data.lat,
      longitude: this.data.lng
    }
    this.getBallCourtInfoByPoint(res)
  }
},
//删除标注的字体
removeLabel() {
  const markers = this.data.markers.map(marker => {
    // 移除所有标记的文本信息
    delete marker.label;
    return marker;
  });

  this.setData({
    markers: markers,
    labelMarkerId: null
  });
},
//显示标注的字体 (我这里是请求数据,重新加载的label,反正只需要后面把labelMarkerId随便设置不为null就可以了)
getBallCourtInfoByPoint(res) {
  let that = this
  that.setData({
    markers: [],
    markersCut: []
  })
  let currentV = 9999
  if (this.data.currentValueShow != '不限距离') {
    currentV = that.data.currentValue * 1000
  }
  getBallCourtInfoByPoint(res.latitude, res.longitude,Number(currentV),2).then((res) => {
    res.forEach(element => {
      element['id'] = Number(element.id)
      element['markerId'] = Number(element.id)
      element['title'] = element.ballCourtName
      element['latitude'] = Number(element.lat)
      element['longitude'] = Number(element.lng)
      element['lat'] = Number(element.lat)
      element['lng'] = Number(element.lng)
      if (element.freeStatus === 0) {
        element['iconPath'] = "/images/cg.png"
        element['width'] = 45
        element['height'] = 45
        let label =  {
          content: '这里是文本\n哈哈',
          bgColor: '#FFF',
          fontSize: 12,
          borderRadius:10,
          anchorX: -40,
          anchorY: -3,
          padding: 5,
          hidden:false
        }
        element['label'] = label
      }else{
        element['iconPath'] = "/images/mfcg.png"
        element['width'] = 40
        element['height'] = 40
        let label =  {
          content: '这里是文本\n哈哈',
          bgColor: '#FFF',
          fontSize: 12,
          borderRadius:10,
          anchorX: -40,
          anchorY: -3,
          padding: 5
        }
        element['label'] = label
      }
      element['status'] = 1
    });
    that.setData({
      markers: res,
      markersCut: res,
      labelMarkerId: 0 //主要看这个,把这个设置成不为null就可以了,这个方法上面的代码完全可以按照你的来
    })
  });
},

默认显示

点击后隐藏

相关推荐
黑客老李12 小时前
web渗透实战 | js.map文件泄露导致的通杀漏洞
安全·web安全·小程序·黑客入门·渗透测试实战
游戏开发爱好者81 天前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
2501_915106321 天前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_915106321 天前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
宠友信息1 天前
2025社交+IM及时通讯社区APP仿小红书小程序
java·spring boot·小程序·uni-app·web app
“负拾捌”1 天前
python + uniapp 结合腾讯云实现实时语音识别功能(WebSocket)
python·websocket·微信小程序·uni-app·大模型·腾讯云·语音识别
换日线°2 天前
NFC标签打开微信小程序
前端·微信小程序
光影少年2 天前
AIGC + Taro / 小程序
小程序·aigc·taro
2501_915918412 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007472 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview