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. QT 中文显示问题

    在QT4 中,要显示中文,都是要这样写: #include <QTextCodec> QTextCodec::setCodecForTr(QTextCodec::codecForLocal ...

  2. C#委托和事件

    委托和事件都可以用来调用跟自己方法签名一样的方法,两者在使用中主要有以下区别: 委托和事件没有可比性,因为委托是类型,事件是对象: 委托可以在声明它的类外部进行调用,而事件只能在类的内部进行调用: 委 ...

  3. JSON对象转换问题

    今天调用别人接口遇到一个问题,原本约定的data格式为:JSON字符串,但本次返回了一个空字符串"", 大概是这样的 字符串类型的httpResult.data值为字result: ...

  4. 文件打包,下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件

    总结:                                                          使用PHP下载文件的操作需要给出四个header(),可以参考我的另一篇博文: ...

  5. mysql 链接失败(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES))

    mysql链接失败(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)) 修改: # ...

  6. 文档对象模型(DOM)中的结点属性

    在文档对象模型中,每个结点都是一个对象.DOM结点有三个重要的属性:nodeName .nodeValue和nodeType,分别表示结点名称.结点的值和结点的类型 一.nodeName,结点名称,只 ...

  7. 讯时网关IP对接PBX

    先配置呼入 1.在网关的中继线绑定号码 2.在路由表写入到PBX 路由到 pbx  IP     绑定的号码和路由的 fxo后面的数字要一致 3.在PBX 建一个sip中继,host为网关IP 4.创 ...

  8. XML创建与解析常用方法介绍

    XML解析方式介绍 1.DOM4J(Document Object Model for Java)      虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支.它合并了许多超 ...

  9. redis 常用配置

    参数说明 redis.conf 配置项说明如下: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式 ...

  10. chrome的常用快捷键和命令

    常见快捷键 F12 打开Chrome控制台 Ctrl+J 进入"下载内容"页面 Ctrl+H 查看"历史记录"页面 Ctrl+D 将此页加入书签 Ctrl+F ...