ArcGIS中书签是保存特定视图范围的快捷方式。使用书签保存关注的视图范围,可在需要时快速定位、查看与浏览。书签功能主要用到IMapBookmarks、ISpatialBookmark和IAOIBookmark三个接口。

通过IMapBookmarks接口的Bookmarks属性可以得到地图文档中已经存在的所有书签对象,通过该接口的AddBookmark和RemoveBookmark方法可以对书签进行添加和删除。

ISpatialBookmark接口定义所有空间书签的共同功能,特别是书签的Name属性和ZoomTo方法。Name属性定义了书签的名字,通过ZoomTo方法可跳转到书签位置点。

IAOIBookmark接口继承自ISpatialBookmark接口,新增了Location属性,用于存储地图中感兴趣的范围。


 

1、添加书签

新建一个窗体用于设置书签名称,窗体界面如图:

ArcGIS Engine开发之书签加载

实现:

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;
            }
        }
View Code

相关文章: