无法在谷歌地图markerclusterer中应用自定义图标进行聚类,因为无法提供位置数据

Posted

技术标签:

【中文标题】无法在谷歌地图markerclusterer中应用自定义图标进行聚类,因为无法提供位置数据【英文标题】:Unable to apply custom icons for clustering in google maps markerclusterer because unable to provide position data 【发布时间】:2021-12-29 08:31:23 【问题描述】:

此实用程序的文档对我来说毫无意义。根据this 和this,您可以自定义集群图标,首先通过MarkerClustererrenderer 属性将集群图标转换为标记,然后像使用普通标记一样应用图标样式。但是,new google.maps.Marker 需要 position 属性才能工作 - 一个“我无权访问的属性”。我可以访问各个标记位置的各个位置,但使用标记聚类功能的全部意义在于为您计算一个中点。

如果我不知道位置,如何将集群渲染到正确的位置?我可以访问stats 属性上的_position 属性,但这会引发错误:

Cannot read properties of undefined (reading 'addListener')

我真的不知道该怎么做,因为那里似乎没有很多可靠的例子。据我所知,我正在遵循their github 中列出的示例。

private createClusteredMarkerMap() 
  new this._GoogleMaps.load((google) => 
    let map = new google.maps.Map(this._map, mapOptions);
    const markers = this._locations.map(( lat, long ) => 
      // loop and extract lat/lng
    );

    new markerClusterer.MarkerClusterer(
      map,
      markers,
      renderer: 
        render: (clusters, stats) => this.testRenderer(clusters, stats) // trying to edit the icons here
      
    );
  );


private testRenderer(clusters, stats) 
  const svg = // create svg here
  return new google.maps.Marker(
// position is required here but I don't have that value
    icon: 
      url: `data:image/svg+xml;base64,$svg`,
      scaledSize: new google.maps.Size(45, 45),
    ,
    label: 
      text: String(stats.count),
      color: "rgba(255,255,255,0.9)",
      fontSize: "12px",
    ,
  );

【问题讨论】:

【参考方案1】:

render 方法中缺少return 语句。全场击掌。

【讨论】:

以上是关于无法在谷歌地图markerclusterer中应用自定义图标进行聚类,因为无法提供位置数据的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图:在markerclusterer上方渲染标记

我们如何在谷歌地图中为多边形应用可编辑标记

无法单击标记 - 谷歌地图集群Android,无法在谷歌地图中显示信息窗口

无法在谷歌地图中添加多个标记(颤振)

无法在谷歌地图上看到多个标记

在谷歌地图android中使用gps移动标记