我的目标是使用 ESRI 的 ArcObject API for .NET 连接到 WMS 服务并在我的应用程序地图上显示一个图层。
这是我正在努力解决的代码部分:
...
String url = "some value";
String layerTitle = "another value";
...
PropertySet props = new PropertySet();
props.SetProperty("URL", url);
WMSConnectionName connectionName = new WMSConnectionName();
connectionName.ConnectionProperties = props;
WMSMapLayer mapLayer = new WMSMapLayer();
(mapLayer as IDataLayer).Connect(connectionName as IName);
IWMSGroupLayer groupLayer = (IWMSGroupLayer)mapLayer;
IWMSServiceDescription serviceDescription = groupLayer.WMSServiceDescription;
IWMSLayerDescription layerDescription = serviceDescription.get_LayerDescription(0);
groupLayer.CreateWMSLayer(layerDescription);
groupLayer.get_Layer(0).Visible = true;
ILayer layer = (ILayer)groupLayer;
layer.Name = "WxOverlays " + layerTitle;
layer.Visible = true;
在运行时我遇到:
System.Runtime.InteropServices.COMException (0x8000FFFF):提供的命令在 ESRI.ArcGIS.GISClient.IWMSServiceDescription.get_LayerDescription(Int32 索引)的命令池中不存在
google 搜索显示 ArcObject API 中的一些类似方法会引发相同的异常,因为它们在 C# 中不受支持。有没有人遇到过这个?有人看到解决方法吗?不幸的是,我被困在使用 C# 中,所以使用 Java 或可能从 ESRI 获得更好支持的东西是不可能的。