地图是ArcGIS Pro中的基础起点,也是大多数工程的基础。主要用于显示表示空间数据的图层。
一、地图(Map)的基本操作示例
1、获取当前地图
var map = MapView.Active.Map;
2、获取一级图层
var lys = map.Layers;
用于获取地图中的单一图层,以及图层组。但不包括图层组下面的图层。
3、获取所有图层
var lys = map.GetLayersAsFlattenedList();
【GetLayersAsFlattenedList()】方法用于获取地图中的所有图层。
4、获取单一类型的图层
var lys = map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
在【GetLayersAsFlattenedList()】方法加上【OfType】则会对获取的图层按类型进行筛选。如【FeatureLayer】代表要素图层,【GroupLayer】代表图层组等。
5、获取独立表
var lys = map.GetStandaloneTablesAsFlattenedList();
【GetLayersAsFlattenedList()】方法用于获取地图中的所有独立表。
6、查找图层
var lys = map.FindLayers(LayerName);
【FindLayers(LayerName)】方法用于按图层名查找相应图层,注意这里的LayerName不支持模糊查找。
7、获取坐标系
var sr = map.SpatialReference;
Map的【SpatialReference】属性返回地图的坐标系。
8、移动图层
// 获取当前地图
var map = MapView.Active.Map;
// 获取第一个图层
var ly = map.GetLayersAsFlattenedList();
// 移动到最后的位置
QueuedTask.Run(async () =>
{
map.MoveLayer(ly[0], -1);
});
【MoveLayer(Layer, index)】方法用于按标签位置移动图层的位置。
这里演示的是将地图中的第1个图层移动到最后的位置。
9、移除所有图层
// 获取当前地图
var map = MapView.Active.Map;
// 获取所有图层
var lys = map.GetLayersAsFlattenedList();
// 移除所有图层
QueuedTask.Run(async () =>
{
map.RemoveLayers(lys);
});
【RemoveLayers(lys)】方法用于移除图层列表。
【RemoveLayer(ly)】方法用于移除单一图层。
这里演示的是用【RemoveLayers(lys)】方法移除地图中的所有图层。
10、将要素添加到当前地图
// 获取当前地图
var map = MapView.Active.Map;
//打开对话框
OpenItemDialog openDlg = new OpenItemDialog()
{
Title = "选择要素", //打开对话框标题
Filter = ItemFilters.FeatureClasses_All, //类型筛选
};
//打开对话框
bool? ok = openDlg.ShowDialog();
//如果没有选择内容,则返回
if (!ok.HasValue)
return;
// 获取返回的要素路径
var fc = openDlg.Items.First().Path;
// 按返回的要素路径将要素添加到当前地图中
Uri uri = new Uri(fc);
QueuedTask.Run(async () =>
{
LayerFactory.Instance.CreateLayer(uri,map);
});
【LayerFactory.Instance.CreateLayer()】方法用于将要素添加到当前地图。
需要先将路径转换成Uri。
11、保存地图
// 获取当前地图
var map = MapView.Active.Map;
//打开对话框
SaveItemDialog saveDlg = new SaveItemDialog()
{
Title = "保存地图为", //打开对话框标题
Filter = ItemFilters.Maps_All, //类型筛选
};
//打开对话框
bool? ok = saveDlg.ShowDialog();
//如果没有选择内容,则返回
if (!ok.HasValue)
return;
// 按返回的工程路径保存地图
QueuedTask.Run(async () =>
{
map.SaveAsFile(saveDlg.FilePath, true);
});
【SaveAsFile()】方法用于将地图保存为地图文件。
二、工程文件分享
最后,放上工程文件的链接:
MapManagerhttps://pan.baidu.com/s/1JqITwFtqSFjww5JTOM0RZQ?pwd=4myr