You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Maps聚类SymbolLayer点击时eventArgs.shapes为空的问题咨询

Azure Maps聚类点击事件Shapes为空问题解析

核心原因

Azure Maps中Shapes和Features字段的行为逻辑存在明确差异:

  • 非聚类点:Shapes返回数据源中实际存储的图形对象,Features为空——因为非聚类点的属性直接绑定在Shape实例上。
  • 聚类点:Features返回地图动态生成的聚合特征(包含point_count、cluster_id等属性),Shapes为空——因为聚类点并非数据源中存在的真实图形,是地图基于聚类规则临时渲染的标记,不存在对应的原始Shape对象。

官方示例的处理逻辑

官方示例中看似依赖Shapes获取内容,本质是通过聚类特征的cluster_id关联到数据源,进而获取子点集合,而非直接依赖Shapes字段。你无需额外配置来填充Shapes,正确的做法是通过Features获取聚类特征后,调用数据源API获取子点:

实现代码示例

// 点击事件处理方法
private async void HandleMapClick(MapMouseEventArgs e)
{
    if (e.Features?.Count > 0)
    {
        var clusterFeature = e.Features.First();
        // 验证是否为聚类点
        if (clusterFeature.Properties.ContainsKey("cluster") && (bool)clusterFeature.Properties["cluster"])
        {
            var clusterId = clusterFeature.Properties["cluster_id"].ToString();
            // 获取对应数据源实例
            var dataSource = await _mapControl.GetDataSourceAsync("your-cluster-datasource-id");
            // 获取聚类包含的所有子点图形
            var childShapes = await dataSource.GetClusterChildrenAsync(clusterId);
            
            // 后续处理子点数据,比如弹窗展示等
        }
    }
}

补充说明

若你需要在点击聚类点时直接获取子点的图形集合,上述方法是Azure Maps推荐的标准流程,无需修改地图或组件的默认设置。组件传递的eventArgs完全遵循Azure Maps原生事件的返回逻辑,不存在数据丢失问题。

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 06:22:43