ArcGISRuntime之基础篇

在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" };
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章