针对ArcEngine项目需要,开始由JAVA转向C#开发,最近狂乱的google加baidu,再加上esrichina做升级,搜索出来的内容全部无法进入他的论坛查看,还好有baidu快照,帮了我很大的忙,再说esrichina论坛,提问比回答的人多。就一个二三维联动,不知道有多少贴子,VB的,C++的,C#的很少。没有一个好的贴子能直接解决我的问题,郁闷之极,最主要是那个论坛分权限,刚注册的用户想看牛人的博客还进不去,我是ArcEngine+C#的新手,我的项目很急,但是面对这样的论坛我很悲剧。决定将我花按天去google和baidu所找出的答案在这里记下来,同时也供和我一样的新手学习学习。
多的话说了没用,看代码如下:
1.导入shp文件到MapControl,按个button 同步到SceneControl中
//加载shp文件到MapControl中
private void btnItem9_1_SHP_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.CheckFileExists = true;
openFileDialog1.CheckFileExists = true;
openFileDialog1.Multiselect = true;
openFileDialog1.Filter = "shape files(*.shp)|*.shp";
openFileDialog1.Title = "请选择shp格式文件";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
foreach (string fname in openFileDialog1.FileNames)
{
if (fname != null)
{
string pathToWorkspace = System.IO.Path.GetDirectoryName(fname);
string shapefileName = System.IO.Path.GetFileNameWithoutExtension(fname);
axMapControl1.AddShapeFile(pathToWorkspace, shapefileName);
}
}
}
IActiveView pActiveView = (IActiveView)axMapControl1.Map;
pActiveView.Refresh();
}
OK,接下来是同步的方法:
//重新同步MapControl中的所有图层到SceneControl
private void synLayersToSceneControl()
{
if (axMapControl1.ActiveView != null)
{
if (axMapControl1.Map.LayerCount > 0)
{
axSceneControl1.Scene.ClearLayers();
UID uid = new UIDClass();
uid.Value = "{6CA416B1-E160-11D2-9F4E-00C04F6BC78E}"; //所有图层
axSceneControl1.Scene.AddLayers(axMapControl1.Map.get_Layers(uid, true), true);
}
}
axSceneControl1.SceneGraph.RefreshViewers();
}
2.点击一个button,让二维和三维一起放大,即同步放大
//同步放大
private void btnItem9_5_ZoomInFixed_Click(object sender, EventArgs e)
{
//得到接口
IActiveView pActiveView = this.axMapControl1.Map as IActiveView;
//获得显示范围
IEnvelope pEnvelope = (IEnvelope)pActiveView.Extent;
//刷新
pEnvelope.Expand(0.9, 0.9, true);
pActiveView.Extent = pEnvelope;
pActiveView.Refresh();
//三维
//获得现场的相机
ICamera pCamera = this.axSceneControl1.Camera as ICamera;
//拓宽视野
double dAngle;
dAngle = pCamera.ViewFieldAngle;
pCamera.ViewFieldAngle = dAngle * 0.9;
//重绘现场
ISceneViewer pSceneViewer = this.axSceneControl1.SceneGraph.ActiveViewer as ISceneViewer;
pSceneViewer.Redraw(false);
}
今天搞定基本的同步,继续研究去....
分享到:
相关推荐
mapcontrol等,MapControlRotateDisplay,MapControlDropFiles等
AE+C#开发时,在两个sliper container中无法绑定axtoccontrol和axmapcontrol的解决办法
SilverLight中对ArcGIS Server的MapControl中地图进行打印示例
mapcontrol加载地图、另存地图、保存地图
地图API用于51地图,可用于地图搜索,标注,发布等功能,可轻松制作自己的地图 V1.02在原来的基础上给注册用户加了地图设置功能 前台帐号 admin888 123456 后台 admin admin
微软地图服务的SDK 版本6.2 让你使用微软的地图api 类似谷歌api
利用MapControl和VB的简单例子.................
示例在SuperMap Objects.NET 6R中实现在跟踪图层上显示Bubble,获取跟踪层对象的标签信息,以气泡的形式展示出来。
Microsoft.Maps.MapControl.ExtendedModes.dll.rar 解压后可以得到ExtendedModes鸟瞰模式的类库
第三讲 MapControl与PageLayoutControl同步 8 第四讲 状态栏信息的添加与实现 21 第五讲 鹰眼的实现 24 第六讲 右键菜单添加与实现 29 第七讲 图层符号选择器的实现 35 第八讲 属性数据表的查询显示 52
第三讲 MapControl与PageLayoutControl同步 (二) 第三讲 MapControl与PageLayoutControl同步 (三) 第四讲 状态栏信息的添加与实现 第五讲 鹰眼的实现 第六讲 右键菜单添加与实现 第七讲 图层符号选择器的实现 第七讲...
5、MapControl 与 PageLayoutControl联动。 6、鹰眼功能。 7、专题图。 8、图层属性查看与设置 9、数据表查询 10、基本的编辑功能 11、三维显示功能 12、。。。(功能将在开发过程中视情况不断补充)
Devexpress本地地图Demo,需要把下载的地图数据放在代码中指定的路径,请检查下载的地图文件夹名称与代码中请求的路径名称关系
C#写的,AE的MapControl可以直接加载Oracle数据(C#),最主要的是,不用安装sde,也不用安装Oracle客户端。
对mapcontrol控件基本使用 包括地图显示,鹰眼实现 基于VS2010编写
iOS游戏应用源代码——kompozer-MAPCONTROL_iOS-f6bb2d0.zip
利用AE进行动态加载Shape格式文件。
MapControlc#基于WPF的一套地图管理库
gis编程vc\VC6开发的基于Arcgis的程序,实现了对地图的加载的基本操作MapControl.rar
WebmapLayer.dll是一个基于...搜狗地图和谷歌地图作为一个图层被加载到ArcEngine 的MapControl上,并且与当前地图中其他数据进行叠加联动浏览。 通过WebmapLayer程序集,可以解决GIS应用程序中数据缺少“底图”的问题。