收藏
回答

map 里面自定义聚合簇样式使用不了?

基础库2.19.1

ios 10

微信版本 8.0.16

代码片段:https://developers.weixin.qq.com/s/Qx3hiMm77RvU


官方开发文档里map的自定义聚合簇是这样写的:

============================================

示例代码

在开发者工具中预览效果

需注意的是:

  1. 地图上的 marker 分为普通的 marker 与参与聚合的 marker,参与聚合时需指定属性 joinCluster 为 true;
  2. 自定义聚合簇样式时,同样通过 MapContext.addMarkers 进行绘制,此时需携带 clusterId。

=============================================

上面的红色部分官方并没有描述清楚怎么携带,我试了几种方式都无法正确自定义聚合样式。请官方检查下是否有错或者补充下开发文档,多谢多谢。



最后一次编辑于  2021-12-24
回答关注问题邀请回答
收藏

3 个回答

  • ʚɞflyʚɞ
    ʚɞflyʚɞ
    2022-03-18
    changeOnClusters 是什么内容呢
    
    2022-03-18
    有用
    回复
  • 魔趣~百鬼丸
    魔趣~百鬼丸
    2021-12-25

    问题还没搞定,官方有人吗?

    2021-12-25
    有用
    回复
  • 曹孟良
    曹孟良
    2021-12-24

    参考下我写的这部分代码,来实现聚合簇

    this.mapCtx = wx.createMapContext('map')
    this.clusterFunc()
    

    首先获取map上下文


      /**
       * 点聚合
       */
      clusterFunc() {
        var that = this
        this.mapCtx.initMarkerCluster({
          enableDefaultStyle: false,//启用默认的聚合样式
          zoomOnClick: true,//点击已经聚合的标记点时是否实现聚合分离
          gridSize: 200,//聚合算法的可聚合距离,即距离小于该值的点会聚合至一起,以像素为单位
          complete(res) {
            console.log('点聚合初始化', res)
          }
        })
        this.mapCtx.on('markerClusterCreate'res => {
          console.log('聚合触发:', res.clusters)
          that.changeOnCluster(res.clusters)
          var clusters = res.clusters
          var markers = clusters.map(cluster => {
            const {
              center,
              clusterId,
              markerIds
            } = cluster
            return {
              ...center,
              canshow: true,
              width: 20,
              height: 20,
              clusterId, // 必须
              iconPath: '/images/place4.png',
              label: {
                content: '这里活跃着' + markerIds.length + '位朋友',
                color: '#3CB371',
                fontSize: 12,
                borderRadius: 30,
                borderWidth: 1,
                borderColor: '#dddddd',
                bgColor: '#ffffffbb',
                padding: 10,
                anchorX: -60,
                anchorY: -60,
              }
            }
          })
          this.mapCtx.addMarkers({
            markers,
            clear: false,//只改动了新增的聚合点,所以不用删除其他点
            complete(res) {
              console.log('clusterCreate addMarkers', res)
            }
          })
        })
      },
    


    然后再往地图里面推送markers

              markers.push(
                {
                  iconPath'/images/place4.png',
                  id: o,
                  joinCluster: true,//是否参与聚合
                  latitude: alumnusList[o].position.latitude,
                  longitude: alumnusList[o].position.longitude,
                  width20,
                  height20,
                  name: alumnusList[o].name,
                  gender: alumnusList[o].gender,
                 customCallout: {
                    display'ALWAYS'
                  }
                }
              )
    


    最后这步需要把参与聚合的点,push的时候写为joinCluster为true

    2021-12-24
    有用
    回复 8
    • 魔趣~百鬼丸
      魔趣~百鬼丸
      2021-12-24
      谢谢,不过最后一步markers.push的markers是data里的markers吗?我这里按你改的没效果
      2021-12-24
      回复
    • 魔趣~百鬼丸
      魔趣~百鬼丸
      2021-12-24
      能帮我改下我的代码片段吗?我是希望聚合后,聚合点上面出现自定义的callout 
      https://developers.weixin.qq.com/s/TaK9LMmO7XvR
      2021-12-24
      回复
    • 曹孟良
      曹孟良
      2021-12-24回复魔趣~百鬼丸
      是的,push完以后,你要setData,你set了没
      2021-12-24
      回复
    • 曹孟良
      曹孟良
      2021-12-24回复魔趣~百鬼丸
      就是setData这个markers。如果你改了没效果,你跟我说下,我下班了回去看看
      2021-12-24
      回复
    • 魔趣~百鬼丸
      魔趣~百鬼丸
      2021-12-24
      如果加到data的markers里,那不就是多加了marker点位吗?聚合数量不是也意外增加了吗?
      2021-12-24
      回复
    查看更多(3)
登录 后发表内容