4.AE中的缩放,书签
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中的缩放,书签的更多相关文章
- [转] AE中如何由IFeature 如何获取所对应的FeatureClass
转载的原文 AE中如何由IFeature 如何获取所对应的FeatureClass 先获取FeatureClass,然后遍历Map中所有的FeatureLayer,然后比较 FeatureClas ...
- OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图
读取bmp等图片格式中的像素还有难度,就先用这个棋盘图象素来弄了 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退 ...
- C# winform中 窗体缩放自适应的方法(不同电脑/不同分辨率)
C# winform中 窗体缩放自适应的方法(不同电脑/不同分辨率) 窗体缩放是一个困扰我多时的问题,为了解决这个问题,我从网上找了很多相关的资料,很多人说用Anchor和Dock属性,但是我试了 ...
- AE常用代码(标注要素、AE中画带箭头的线、如何获得投影坐标、参考坐标、投影方式、FeatureCount注意事项)
手上的电脑已经用了将近三年了,想入手一台Surface Pro,所以计划着把电脑上的资料整理下,部分资料打算发到博客上来,资料有同事.也有自己的.也有来自网络的,来源途径太多,也没法详细注明,请见谅! ...
- AE中Identify查询工具的实现
原文 AE中Identify查询工具的实现 主要实现点击查询并闪烁显示,并把查询要素的信息通过DataGridView显示出来,主要用到的接口: IIdentity.IArray.IIdentifyO ...
- AE中Shapefile文件添加到SDE数据集
linder_lee 原文 AE中Shapefile文件添加到SDE数据集(c#) 主要完成用C#,通过AE将本地Shapefile文件导入到SDE的指定数据集下面. 首先说下思路: (1) 通过Op ...
- AE中地图查询方式
樱木 原文 AE中地图查询方式 地图查询主要有两种查询:空间查询和属性查询 所用到知识点: 1 Cursor(游标)对象 本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者 ...
- AE中网络分析的实现 的各个类之间的关系
原文AE中网络分析的实现 的各个类之间的关系 1. 创建网络数据集 在ArcCatalog中勾选网络分析模块,新建个人地理信息数据库—>新建要素数据集—>批量导入要素—>创建 ...
- AE中实现Control中的各种图形工具的方法
添加命名空间 using ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Controls; A类:前面有Controls 后面有tool的工具都可以用同一类的代码实现( ...
随机推荐
- JNI ReferenceTable overflow
今天在小米设备上遇到如下问题 10-15 17:04:36.899: W/dalvikvm(2767): ReferenceTable overflow (max=512) 10-15 17:04:3 ...
- Android 开发命令行完全攻略
作为命令行的爱好者,我想写这个主题已经有好一段时间了.除了显得很酷之外,命令行的使用能够提高我们的开发效率,因为相比通过鼠标点击一系列的菜单选项,使用键盘输入几个字符并点击 TAB 健显然会快很多. ...
- PHP 微信分享
share.php <?php //公众号设置一下 JS接口安全域名,不要http,www的一级域名,比如http://www.baidu.com域名下的某个路径要分享,js安全域名中只需填上 ...
- 动画黄金搭档:CADisplayLink & CAShapeLayer
我们在开发中有时会遇到一些看似非常复杂的动画,不知该如何下手,今天的这篇文章中我会讲到如何利用CADisplayLink和CAShapeLayer来构建一些复杂的动画,希望能在你下次构建动画中,给你一 ...
- 使用FIR.im发布自己的移动端APP
一次很偶然的机会知道FIR.im,这家公司主要的产品就是帮助开发者方便便捷地发布iOS或者Android应用的.今天我就聊聊如何在FIR.im中发布自己的APP,然后让加入UUID的设备通过网页直接下 ...
- FTP命令
linux下常用FTP命令 1. 连接ftp服务器 1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 ...
- CSS样式表(三)
前端人员在学习开发过程中常用的CSS样式总结: [margin] margin 检索或设置对象四边的外延边距 margin-top 检索或设置对象顶边的外延边距 margin-right 检索或设置对 ...
- 一看便知_配置linux 网络配置的几种方法
一. - setup 进入设置 - /etc/rc.d/init.d/network restart 运行完才会生效刚才的修改 二.命令设置 [临时生效]- i ...
- Element is not currently interactable and may not be manipulated
Element is not currently interactable and may not be manipulated:元素当前不可交互,并且可能无法操作. 解决方法: 调用该方法,智能等待 ...
- Using GET_APPLICATION_PROPERTY in Oracle D2k Forms
Using GET_APPLICATION_PROPERTY in Oracle D2k Forms DescriptionReturns information about the current ...