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

ArcGIS Map API是否支持UWP应用位置聚类?求C# UWP实现代码

ArcGIS Map API在UWP应用中的位置聚类实现

问题1:ArcGIS Map API是否支持在UWP Windows应用中实现位置聚类?

当然支持!你需要用到ArcGIS Runtime SDK for .NET(这是ArcGIS针对UWP、WPF等.NET平台的官方SDK),它原生提供了位置聚类功能,不管是UWP桌面应用还是移动应用,都能轻松实现点要素的聚类展示。

问题2:C# UWP移动应用中能否实现该需求?以及实现代码

完全可以实现!下面是一个完整的示例代码,包含从地图初始化到聚类配置的核心步骤:

步骤1:在XAML中添加Map控件

首先,在你的UWP页面的XAML里引入ArcGIS的MapView控件:

<Page
    x:Class="UWPArcGISClustering.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:esri="using:Esri.ArcGISRuntime.UI.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <esri:MapView x:Name="MyMapView" />
    </Grid>
</Page>

步骤2:C#后台代码实现聚类逻辑

在对应的.cs文件中,我们会创建要素图层、配置聚类规则,并将图层添加到地图中:

using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.Symbology;
using Esri.ArcGISRuntime.UI;
using System;
using Windows.UI.Xaml.Controls;

namespace UWPArcGISClustering
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            InitializeMapWithClustering();
        }

        private async void InitializeMapWithClustering()
        {
            // 初始化地图,使用ArcGIS在线底图
            MyMapView.Map = new Map(BasemapStyle.ArcGISStreets);

            // 加载示例要素服务(可替换为你自己的位置数据源,比如本地内存表、数据库表)
            var featureTable = new ServiceFeatureTable(new Uri("https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Redlands_Hospitals/FeatureServer/0"));
            
            // 创建要素图层
            var featureLayer = new FeatureLayer(featureTable);

            // 配置聚类规则
            var clusterDefinition = new ClusterDefinition()
            {
                // 设置聚类距离(单位:米)
                Distance = 1000,
                // 设置聚类标签(显示聚类内的点数量)
                LabelExpression = new ArcadeExpression("$feature.cluster_count"),
                // 设置聚类点的样式
                Renderer = new SimpleRenderer()
                {
                    Symbol = new SimpleMarkerSymbol()
                    {
                        Color = Windows.UI.Colors.Orange,
                        Size = 24,
                        Style = SimpleMarkerSymbolStyle.Circle
                    }
                }
            };

            // 为图层启用聚类
            featureLayer.ClusterDefinition = clusterDefinition;

            // 将图层添加到地图
            MyMapView.Map.OperationalLayers.Add(featureLayer);

            // 缩放到要素所在的范围
            await MyMapView.SetViewpointGeometryAsync(await featureTable.ExtentAsync, 50);
        }
    }
}

关键注意事项:

  • 先通过NuGet安装Esri.ArcGISRuntime.UWP包(建议选择最新稳定版本)
  • 示例中的要素服务只是演示用,你可以替换成自己的位置数据(比如从API获取的点集合,用MemoryFeatureTable存储)
  • 可以根据需求调整聚类距离、符号颜色/大小、标签格式等参数

内容的提问来源于stack exchange,提问作者Naveen Dvg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:34:50