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

如何在C# Winform应用中集成自定义ArcGIS web地图

ArcGIS Web地图Winform接入方案解答

首先明确:该需求完全可在纯Winform平台实现,无需强制切换为WPF开发,你调研到的Winform嵌入WPF控件仅为可选实现路径之一,并非唯一方案。

实现路径说明

1. 纯Winform原生实现(推荐,无需跨框架兼容)

使用Esri官方提供的ArcGIS Runtime SDK for .NET的原生Winform支持即可实现,步骤如下:

  • 通过NuGet安装官方包 Esri.ArcGISRuntime.WinForms
  • 应用启动阶段配置全局API密钥:
    Esri.ArcGISRuntime.ArcGISRuntimeEnvironment.ApiKey = "你的ArcGIS API密钥";
    
  • 从工具箱拖入MapView控件到Winform窗体,加载自定义Web地图可根据你的资源类型选择对应加载逻辑:
    • 若为已发布的Portal WebMap:直接通过Map.FromPortalItemAsync()方法加载你的自定义Web地图地址,赋值给MapView.Map属性即可
    • 若为独立的ArcGIS REST服务(切片服务、要素服务等):创建对应图层实例添加到Map的图层集合中即可
  • 身份凭证除了全局配置API密钥外,若需其他权限验证,可通过AuthenticationManager类配置对应凭证即可。

2. 基于现有GMap.NET组件扩展实现

如果不想引入新的SDK,可通过扩展GMap的自定义地图提供器实现自定义ArcGIS Web地图加载:

  • 继承GMapProvider基类实现自定义地图提供器,重写GetTileUrl方法,填入你的ArcGIS自定义服务的切片请求模板(通用模板格式为{你的服务地址}/tile/{z}/{y}/{x},按照GMap的参数规则替换对应层级、行列号参数即可)
  • 身份凭证配置可直接在切片请求URL后拼接?token=你的API密钥,也可拦截GMap的HTTP请求添加对应Authorization请求头
  • 自定义提供器实现完成后,即可像调用官方底图一样赋值给Map.MapProvider完成加载

3. Winform嵌入WPF控件方案(低改造成本可选)

如果已有可运行的WPF端ArcGIS地图实现代码,该方案改造成本最低:

  • 为Winform项目添加System.Windows.Forms.Integration等WPF互操作依赖引用
  • 创建WPF用户控件,将现有WPF端ArcGIS地图逻辑迁移到该控件中
  • 在Winform窗体中添加ElementHost容器控件,将WPF地图用户控件赋值给ElementHost.Child属性即可实现无缝嵌入,无需全项目重构为WPF。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:24:02