ArcGISRuntime之基础篇

博客介绍了Esri.ArcGISRuntime中的MapView和SceneView,分别作为2D和3D地图展示容器,二者继承自GeoView基类。还说明了MapView结构,以及Map包含的各类图层,如切片数据图层、矢量切片数据等,同时列举了可加载的地图类型及相关注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Runtime里面,Esri.ArcGISRuntime.只有两个东西,MapView和SceneView.
一般的,MapView类作为2D地图的展示容器,SceneView类作为3D地图的展示容器,这两个类继承于同一个类叫GeoView的基类。
MapVIew的结构如下图,分成了地图内容和绘制图层两个部分:
网上找的

所以基础图层和业务图层需要先加到Map类里面,然后再加到MapView上面去。而Map又分为各种Layer.
常见的如下

  • 切片数据图层(ArcGISTiledLayer)
  • 矢量切片数据(ArcGISVectorTiledLayer)
  • 要素图层(FeatureLayer)
  • 动态地图图层(ArcGISMapImageLayer和ArcGISMapImageSublayer)
  • 移动地图数据包含的图层

加载.tpk格式影像,

TileCache _tileCache = new TileCache(myMpkFilePath);//文件的地址,
await _tileCache.LoadAsync();
mapView.Map.OperationalLayers.Add(new ArcGISTiledLayer(_tileCache));

加载shp格式文件

ShapefileFeatureTable myShapefile = await ShapefileFeatureTable.OpenAsync(shpPath);                                   
FeatureLayer newFeatureLayer = new FeatureLayer(myShapefile);
mapView.Map.OperationalLayers.Add(newFeatureLayer);

加载kml格式文件

KmlLayer kmlLayer = new KmlLayer(new Uri(kmlPath));
mapView.Map.OperationalLayers.Add(kmlLayer);

加载离线地图包mmpk

MobileMapPackage myMapPackage = await MobileMapPackage.OpenAsync(fullpath);
if (myMapPackage.Maps.Count > 0)
{
   mapView.Map = myMapPackage.Maps.First();
}

加载ArcGIS在线地图

Map myMap = new Map();
Uri serviceUri = new Uri( fullpath);
 ArcGISMapImageLayer imageLayer = new ArcGISMapImageLayer(serviceUri);
myMap.Basemap.BaseLayers.Add(imageLayer);
mapView.Map = myMap;

加载Google地图

string _googlelateUri = "http://{subDomain}.google.cn/vt/lyrs=s&z={level}&x={col}&y={row}";
List<string> _googleLayerSubdomains = new List<string> { "mt2", "mt3", "mt0", "mt1" };
WebTiledLayer myMapBaseLayer = new WebTiledLayer(_googlelateUri, _googleLayerSubdomains);
myMapBaseLayer.Name = "谷歌影像";
await myMapBaseLayer.LoadAsync();
myMapBaseLayer.Attribution = "fire in the hole";
Basemap layerBasemap = new Basemap(myMapBaseLayer);
Map myMap = new Map(layerBasemap);
mapView.Map = myMap;

加载高德或者百度地图的在线地图也可以,但是有偏移。

string _googlelateUri = "https://ss{subDomain}.bdstatic.com/8bo_dTSlR1gBo1vgoIiO_jowehsv/starpic/?qt=satepc&u=x={col};y={row};z={level};v=009;type=sate&fm=46&app=webearth2&v=009&udt=20190312";
List<string> _googleLayerSubdomains = new List<string> { "0", "1", "2", "3" };
string _googlelateUri = "http://webst0{subDomain}.is.autonavi.com/appmaptile?style=6&x={col}&y={row}&z={level}";
                                List<string> _googleLayerSubdomains = new List<string> { "1", "2", "3", "4" };

加载天地图也可以的
只不过天地图需要加Key,这个需要去官网申请、下面的代码是虚拟的没用,

 string _TDTlelateUri = "http://t{subDomain}.tianditu.com/DataServer?T=cia_w&x={col}&y={row}&l={level}&tk=41e32d9cb4730dbe7322eb1dba1181be";
                                List<string> _TDTLayerSubdomains = new List<string> { "0", "1", "2", "3", "4", "5", "6", "7" };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值