AE - 01.空间书签的创建及调用
AE - 01.空间书签的创建及调用
流程图
引用类库及接口描述
- 引用类库:
using ESRI.ArcGIS.Carto;
- 接口:
1. IMapBookmarks接口:Bookmarks属性可以得到地图文档中已经存在的所有书签对象,通过该接口的AddBookmark和RemoveBookmark方法可以对书签进行添加和删除。
2. ISpatialBookmark接口:定义所有空间书签的共同功能,特别是书签的Name属性和ZoomTo方法。Name属性定义了书签的名字,通过ZoomTo方法可跳转到书签位置点。
3. IAOIBookmark接口:继承自ISpatialBookmark接口,新增了Location属性,存储地图中感兴趣范围。
步骤
步骤1: 添加控件
步骤2: 给控件添加事件,设置删除Button的可见性
步骤3: 封装功能
步骤4: 运行实现
代码
七、代码
创建书签
/// <summary> /// 创建书签 /// </summary> public Boolean CreatBookmark(string sBookmarkName) { Console.WriteLine(sBookmarkName); IAOIBookmark aoiBookmark = new AOIBookmark(); if (aoiBookmark != null) { aoiBookmark.Location = mapControl.ActiveView.Extent; aoiBookmark.Name = sBookmarkName; } IMapBookmarks bookmarks = mapControl.Map as IMapBookmarks; if (bookmarks != null) { bookmarks.AddBookmark(aoiBookmark); cmb_Bookmark.Items.Add(aoiBookmark.Name); return true; } return false; }
监听结束书签列表
/// <summary> /// 监听结束书签列表 /// </summary> public Boolean oneBookmark(string name) { IMapBookmarks bookmarks = mapControl.Map as IMapBookmarks; IEnumSpatialBookmark enumSpatialBookmark = bookmarks.Bookmarks; enumSpatialBookmark.Reset(); ISpatialBookmark spatialBookmark = enumSpatialBookmark.Next(); while (spatialBookmark != null) { if (name == spatialBookmark.Name) { return false; } spatialBookmark = enumSpatialBookmark.Next(); } return true; }
选中书签列表item
private void cmb_Bookmark_SelectedIndexChanged(object sender, EventArgs e)
{IMapBookmarks bookmarks = mapControl.Map as IMapBookmarks; IEnumSpatialBookmark enumSpatialBookmark = bookmarks.Bookmarks; enumSpatialBookmark.Reset(); ISpatialBookmark spatialBookmark = enumSpatialBookmark.Next(); while (spatialBookmark != null) { string index = cmb_Bookmark.SelectedIndex.ToString(); string bm_name = cmb_Bookmark.Items[Convert.ToInt32(index)].ToString(); //Console.WriteLine(bm_name + " "+ spatialBookmark.Name); if (bm_name == spatialBookmark.Name) { spatialBookmark.ZoomTo((IMap)mapControl.ActiveView); mapControl.ActiveView.Refresh(); break; } spatialBookmark = enumSpatialBookmark.Next(); } btn_bmDEL.Visible = true; but_addbm.Visible = false;
}
添加书签
private void but_addbm_Click(object sender, EventArgs e) { addBookmark add = new addBookmark(this); add.Show(); }
删除书签
private void btn_bmDEL_Click(object sender, EventArgs e) { cmb_Bookmark.Items.Remove(cmb_Bookmark.SelectedItem); cmb_Bookmark.Text = ""; if (cmb_Bookmark.Items.Count == 0) cmb_Bookmark.Text = "无书签"; btn_bmDEL.Visible = false; but_addbm.Visible = true; }
原文作者: 冯亚杰(DanBoard·Feng)
原文链接: http://danbo3110.github.io/2019/11/25/AE - 01.空间书签的创建及调用/
版权声明: 转载请注明出处(必须保留作者署名及链接)