ArcGIS中书签是保存特定视图范围的快捷方式。使用书签保存关注的视图范围,可在需要时快速定位、查看与浏览。书签功能主要用到IMapBookmarks、ISpatialBookmark和IAOIBookmark三个接口。
通过IMapBookmarks接口的Bookmarks属性可以得到地图文档中已经存在的所有书签对象,通过该接口的AddBookmark和RemoveBookmark方法可以对书签进行添加和删除。
ISpatialBookmark接口定义所有空间书签的共同功能,特别是书签的Name属性和ZoomTo方法。Name属性定义了书签的名字,通过ZoomTo方法可跳转到书签位置点。
IAOIBookmark接口继承自ISpatialBookmark接口,新增了Location属性,用于存储地图中感兴趣的范围。
1、添加书签
新建一个窗体用于设置书签名称,窗体界面如图:
实现:
public partial class FormBookMarks : DevExpress.XtraEditors.XtraForm { /// <summary> /// 定义全局变量 /// </summary> /// private string m_bookmark;//书签名 private int m_check;//是否创建书签 public FormBookMarks() { InitializeComponent(); } private void FormBookMarks_Load(object sender, EventArgs e) { //设置确定按钮一开始的不可用性 btnOk.Enabled = false; } /// <summary> /// 确定按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOk_Click(object sender, EventArgs e) { m_bookmark = txtBookMarks.Text; txtBookMarks.Text = ""; m_check = 1; this.Close(); } //取消按钮 private void btnCel_Click(object sender, EventArgs e) { txtBookMarks.Text = ""; m_check = 0; this.Close(); } //设置书签为只读 public string Bookmark { get { return m_bookmark; } } //是否创建书签变量为只读 public int Check { get { return m_check; } } /// <summary> /// 在TextBox中文本改变事件中设置按钮的可用性 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void txtBookMarks_TextChanged(object sender, EventArgs e) { if (txtBookMarks.Text == "") { btnOk.Enabled = false; } else { btnOk.Enabled = true; } }