收藏
回答

map组件点击多个标记点marker,怎样隐藏上一个气泡,只显示当前点击的?

嵌套cover-view 使用wx:if无效,求大佬提供思路

回答关注问题邀请回答
收藏

2 个回答

  • 咸鱼三月°
    咸鱼三月°
    2022-03-08

    我试用uniapp写的 估计应该差不多

    这是点击标记事件的函数

    markerHandle(e) {
    				let marker;
    				this.markers.forEach((item)=>{
    					if(item.id!=e.detail.markerId){
    						item.customCallout.display = "NONE"
    					}else{
    						marker = item;
    					}
    				})
    				if(marker.customCallout.display!="ALWAYS"){
    					marker.customCallout.display = "ALWAYS"
    				}else{
    					marker.customCallout.display = "NONE"
    				}
    			},
    
    2022-03-08
    有用 1
    回复 1
    • 欧阳
      欧阳
      2022-04-06
      可以的,就是每次点击都有遍历一遍,当然可以判断一下是否是iOS系统,因为iOS系统不需要这个逻辑,只针对Android即可(Android系统会有这个问题)!
      2022-04-06
      回复
  • weiweiyishen1
    weiweiyishen1
    01-08

    点标记 按上面的方法气泡框 和聚合会有冲突,对于这个问题我也琢磨了很久,发现一个省事的方法,就是开始所有marker都不加气泡框, 点击marker点时,加一个带气泡框的marker 和要点击的marker 经纬度相同, 但markerId 固定 如 state.markers.length+1,并且不参与聚合。当然每次加新的,需要先删除这个固定marker 点,

    allmap.removeMarkers({

    markerIds: [state.markers.length+1]

    })

    let markerT = JSON.parse(JSON.stringify(点击maker))

    markerT.callout = {

    content: “xxxxx”,

    borderRadius: 4,

    display: "ALWAYS",

    color:"#00BA31",

    borderColor:"#00BA31",

    bgColor: "#ffffff",

    padding: 4,

    textAlign: "center"

    }

    markerT.id = state.markers.length+1//尾部加一个新的markerId 的marker点

    markerT.joinCluster= false

    allmap.addMarkers({markers: [markerT],

    clear: false})

    01-08
    有用
    回复
登录 后发表内容