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. FolderSync PC 电脑 FTP 同步方法

    1.PC上用IIS搭建一个FTP即可,用电脑上的FTP软件测试通过即可(有可能在FTP软件帐号管理中,要选 “主动”模式) 2.FolderSync 建立FTP帐户后,要选“旧版库”(帐户页面最下方) ...

  2. Raytracer

    http://www.cnblogs.com/miloyip/archive/2010/03/29/1698953.html http://www.scratchapixel.com/lessons/ ...

  3. SQL Server 在task manager里面显示CPU 使用率过高

    发现一篇好文章 https://mssqlwiki.com/2012/10/04/troubleshooting-sql-server-high-cpu-usage/

  4. size_t 和 size_type的区别

    为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局定义的类型:size_type是STL类中定义的类型属 ...

  5. YTU 3026: 中序线索化二叉树

    原文链接:https://www.dreamwings.cn/ytu3026/2896.html 3026: 中序线索化二叉树 时间限制: 1 Sec  内存限制: 128 MB 提交: 9  解决: ...

  6. 树上倍增LCA模版

    void dfs(int u){ ;i = edge.next){ int to = dege[i].to; ]) continue; d[to] = d[u]+; dis[to] = dis[u]+ ...

  7. php编译安装报错:make: *** [sapi/cli/php] Error 1 解决办法

    ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':/ext/iconv/iconv.c:2491: undefin ...

  8. hibernate对象的三种状态

    对于hibernate,我想不在这里讲解了,我们就直接进入主题 在这里我将要说的是"hibernate对象的三种状态",对象是我们十分熟悉的,对吧!而对于对象它有三种状态 分别是瞬 ...

  9. vchar2和nvchar2

    Oracle中varchar2 nvarchar2 VARCHAR2(size),可变长度的字符串,其最大长度为 size 个字节.size 的最大值是 4000,而最小值是 1.您必须指定一个 VA ...

  10. Element is not currently interactable and may not be manipulated

    Element is not currently interactable and may not be manipulated:元素当前不可交互,并且可能无法操作. 解决方法: 调用该方法,智能等待 ...