1.书签

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (txtBookmark.Text == "")
{
button1.Enabled = false;
}
else
{
button1.Enabled = true;
}
}

//确定
private void button1_Click(object sender, EventArgs e)
{
m_bookmark = txtBookmark.Text;
txtBookmark.Text = "";
m_check = 1;
this.Close();
}

//取消
private void button2_Click(object sender, EventArgs e)
{
txtBookmark.Text = "";
m_check = 0;
this.Close();
}

具体源码

namespace WindowsFormsApplication1
{
public partial class FrmBookmark : Form
{
private string m_bookmark; //书签名
private int m_check; //是否创建书签
public FrmBookmark()
{
InitializeComponent();
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (txtBookmark.Text == "")
{
button1.Enabled = false;
}
else
{
button1.Enabled = true;
}
}
//设置书签名为只读
public string Bookmark
{
get { return m_bookmark; }
}

//是否创建书签变量为只读
public int Check
{
get { return m_check; }
}
//确定
private void button1_Click(object sender, EventArgs e)
{
m_bookmark = txtBookmark.Text;
txtBookmark.Text = "";
m_check = 1;
this.Close();
}
//取消
private void button2_Click(object sender, EventArgs e)
{
txtBookmark.Text = "";
m_check = 0;
this.Close();
}

}

#region 添加书签
private void barButtonItem12_ItemClick(object sender, ItemClickEventArgs e)
{
//ICommand pCmmd;
//ITool pTool;
FrmBookmark frmBookMark = new FrmBookmark();
frmBookMark.ShowDialog();
string pName = string.Empty;
int check = frmBookMark.Check;

if (check == 1)
{
pName = frmBookMark.Bookmark;
}
if (string.IsNullOrEmpty(pName)) return;

//书签进行重名判断
IMapBookmarks mapBookmarks = axMapControl1.Map as IMapBookmarks;
IEnumSpatialBookmark enumSpatialBookmarks = mapBookmarks.Bookmarks;
enumSpatialBookmarks.Reset();
ISpatialBookmark pSpatialBookmark;

while ((pSpatialBookmark = enumSpatialBookmarks.Next()) != null)
{
if (pName == pSpatialBookmark.Name)
{
DialogResult dr = MessageBox.Show("此书签名已存在!是否替换?", "提示", MessageBoxButtons.YesNoCancel);
if (dr == DialogResult.Yes)
{
mapBookmarks.RemoveBookmark(pSpatialBookmark);
}
else if (dr == DialogResult.No)
{
frmBookMark.ShowDialog();
}
else
{
return;
}
}
}

//获取当前地图的对象
IActiveView pActiveView = axMapControl1.Map as IActiveView;
//创建一个新的书签并设置其位置范围为当前视图的范围
IAOIBookmark pBookmark = new AOIBookmarkClass();
pBookmark.Location = pActiveView.Extent;
//获得书签名
pBookmark.Name = pName;
//通过IMapBookmarks接口访问当前地图书签集,添加书签到地图的书签集中
IMapBookmarks pMapBookmarks = axMapControl1.Map as IMapBookmarks;
pMapBookmarks.AddBookmark(pBookmark);

}
#endregion

2.管理书签

具体源码

namespace WindowsFormsApplication1
{
public partial class FrmManageBookmark : Form
{
private IMap _currentMap = null;
Dictionary<string, ISpatialBookmark> pDictionary = new Dictionary<string, ISpatialBookmark>();
IMapBookmarks mapBookmarks = null;
public FrmManageBookmark(IMap pMap)
{
InitializeComponent();
_currentMap = pMap; //获取当前地图
InitControl();
}

//获取空间书签,对tlstBookMark进行初始化
private void InitControl()
{
mapBookmarks = _currentMap as IMapBookmarks;
IEnumSpatialBookmark enumSpatialBookmarks = mapBookmarks.Bookmarks;
enumSpatialBookmarks.Reset();
ISpatialBookmark pSpatialBookmark = enumSpatialBookmarks.Next();

string sBookMarkName = string.Empty;
while (pSpatialBookmark != null)
{
sBookMarkName = pSpatialBookmark.Name;
//增加树节点
treeView1.Nodes.Add(sBookMarkName);
//添加到数据字典
pDictionary.Add(sBookMarkName, pSpatialBookmark);
pSpatialBookmark = enumSpatialBookmarks.Next();
}
}
public FrmManageBookmark()
{
InitializeComponent();
}
//定位
private void button1_Click(object sender, EventArgs e)
{
TreeNode pSelectedNode = treeView1.SelectedNode;
//获得选中的书签对象
ISpatialBookmark pSpatialBM = pDictionary[pSelectedNode.Text];
//缩放到选中书签的视图范围
pSpatialBM.ZoomTo(_currentMap);
IActiveView pActiveView = _currentMap as IActiveView;
pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
}
//删除书签
private void button2_Click(object sender, EventArgs e)
{
TreeNode pSelectedNode = treeView1.SelectedNode;
ISpatialBookmark pSpatialBookmark = pDictionary[pSelectedNode.Text];
//删除选中的书签对象
mapBookmarks.RemoveBookmark(pSpatialBookmark);
//删除字典中数据
pDictionary.Remove(pSelectedNode.Text);
//删除树节点
treeView1.Nodes.Remove(pSelectedNode);
treeView1.Refresh();
}

private void button3_Click(object sender, EventArgs e)
{
Close();
}
private void tlstBookMark_MouseDoubleClick(object sender, MouseEventArgs e)
{
//调用定位执行命令
button1.PerformClick();
}

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{

}
}

#region 管理书签
private void barButtonItem13_ItemClick(object sender, ItemClickEventArgs e)
{
try
{
FrmManageBookmark frmManageBookMark = new FrmManageBookmark(axMapControl1.Map);
frmManageBookMark.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
#endregion

end:地图缩放

#region 地图浏览放大
private void barButtonItem8_ItemClick(object sender, ItemClickEventArgs e)
{
IEnvelope pEnvelope;
pEnvelope = axMapControl1.Extent;
pEnvelope.Expand(0.5, 0.5, true);//放大2倍
axMapControl1.Extent = pEnvelope;
axMapControl1.ActiveView.Refresh();
}
#endregion
#region 缩小
private void barButtonItem9_ItemClick(object sender, ItemClickEventArgs e)
{
IActiveView pActiveView = axMapControl1.ActiveView;
IPoint centerPoint = new PointClass();
centerPoint.PutCoords((pActiveView.Extent.XMin + pActiveView.Extent.XMax) / 2, (pActiveView.Extent.YMin + pActiveView.Extent.YMax) / 2);
IEnvelope envelope = pActiveView.Extent;
envelope.Expand(1.5, 1.5, true);//和放大区别在于Expand函数参数不同
pActiveView.Extent.CenterAt(centerPoint);
pActiveView.Extent = envelope;
pActiveView.Refresh();

}
#endregion

4.AE中的缩放,书签的更多相关文章

  1. [转] AE中如何由IFeature 如何获取所对应的FeatureClass

    转载的原文 AE中如何由IFeature 如何获取所对应的FeatureClass   先获取FeatureClass,然后遍历Map中所有的FeatureLayer,然后比较 FeatureClas ...

  2. OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图

    读取bmp等图片格式中的像素还有难度,就先用这个棋盘图象素来弄了 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退 ...

  3. C# winform中 窗体缩放自适应的方法(不同电脑/不同分辨率)

    C# winform中 窗体缩放自适应的方法(不同电脑/不同分辨率)   窗体缩放是一个困扰我多时的问题,为了解决这个问题,我从网上找了很多相关的资料,很多人说用Anchor和Dock属性,但是我试了 ...

  4. AE常用代码(标注要素、AE中画带箭头的线、如何获得投影坐标、参考坐标、投影方式、FeatureCount注意事项)

    手上的电脑已经用了将近三年了,想入手一台Surface Pro,所以计划着把电脑上的资料整理下,部分资料打算发到博客上来,资料有同事.也有自己的.也有来自网络的,来源途径太多,也没法详细注明,请见谅! ...

  5. AE中Identify查询工具的实现

    原文 AE中Identify查询工具的实现 主要实现点击查询并闪烁显示,并把查询要素的信息通过DataGridView显示出来,主要用到的接口: IIdentity.IArray.IIdentifyO ...

  6. AE中Shapefile文件添加到SDE数据集

    linder_lee 原文 AE中Shapefile文件添加到SDE数据集(c#) 主要完成用C#,通过AE将本地Shapefile文件导入到SDE的指定数据集下面. 首先说下思路: (1) 通过Op ...

  7. AE中地图查询方式

    樱木 原文 AE中地图查询方式 地图查询主要有两种查询:空间查询和属性查询 所用到知识点: 1  Cursor(游标)对象 本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者 ...

  8. AE中网络分析的实现 的各个类之间的关系

    原文AE中网络分析的实现 的各个类之间的关系 1.     创建网络数据集 在ArcCatalog中勾选网络分析模块,新建个人地理信息数据库—>新建要素数据集—>批量导入要素—>创建 ...

  9. AE中实现Control中的各种图形工具的方法

    添加命名空间 using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Controls; A类:前面有Controls 后面有tool的工具都可以用同一类的代码实现( ...

随机推荐

  1. c#控制台調用SSIS包互传值

    有时候不仅仅需要在内部执行package包,多数情况下,是需要在外部进行调用,比如,需要一个批处理或者控制台程序进行外部调用SSIS包,而往往这个包所配置的连接字符串是经过加密处理的,所以当外部调用S ...

  2. Jersey 2 + Maven + Tomcat + IntelliJ IDEA 搭建RESTful服务

    本文参考以下内容: [1] Starting out with Jersey & Apache Tomcat using IntelliJ [2] [Jersey]IntelliJ IDEA ...

  3. oracle 数据库Cmd命令导入导出

    imp 导入数据库:       1.直接导入数据表:   imp username/passwork@orcl file=d:/AA.dmp          eg: imp 用户名/密码@orcl ...

  4. command 'x86_64-linux-gnu-gcc' failed with exit status 1错误及解决方案

    Ubuntu16.04安装Scrapy(pip install Scrapy)时提示错误如下: Failed building wheel for cryptography Running setup ...

  5. 如何使用xshell远程连接ubuntu

    在Ubuntu上安装ssh就可以使用xshell登录了,安装步骤: 1,sudo apt-get install openssh-server 2,然后启动ssh sudo /etc/init.d/s ...

  6. Cheatsheet: 2016 11.01 ~ 11.30

    Web Getting Started With Vapor: A Swift Web Framework Front-end vs Back-end vs Network Performance S ...

  7. My first python script for work

    I write it yesterday to watch the NE process(rcpfd,cfgd) automatically, then i will write a window t ...

  8. 在C#中读取枚举值的描述属性

    枚举: public enum EnumLanugage { [System.ComponentModel.Description("中文")] Chinese, English ...

  9. 搞清css的单位 px,em,rem的区别

    前言:现在上大街一眼望去,基本上90%的人都拿着手机,走路,逛街,吃东西都不停着,所以对于我们这种前端开发的程序猿来说,让网页适应于移动端可以说是必须要满足的.所以最近也是一直在学习和实践.然后就接触 ...

  10. (译)关于async与await的FAQ

    传送门:异步编程系列目录…… 环境:VS2012(尽管System.Threading.Tasks在.net4.0就引入,在.net4.5中为其增加了更丰富的API及性能提升,另外关键字”async” ...