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