三维GIS平台iTelluro开发之快速入门

本快速入门使用step by step的方式,创建一个简单的三维应用,来说明iTelluro GlobeEngine三维控件的使用。

该文档的代码请参见SDK中的"示例\快速入门"目录。

 

请按照以下步骤进行开发准备工作。

1)启动Visual Studio,创建一个新的项目WinForm项目;

2)在项目下创建一个文件夹,例如lib,把SDK程序包文件夹下的dll文件和lic文件拷贝到该文件夹,并分别拷贝到项目debug或者Release文件夹下(非常重要,需要同时拷贝,并且是所有文件);

3)拷贝示例数据下的"iTelluro.GlobeEngine.ini"到项目debug或者Release文件夹下,按照附录说明修改其内容,使其路径指向示例数据中的相关数据;

4)在项目中引用Lib目录下的"iTelluro.GlobeEngine.MapControl3D.dll"。各个dll功能和包含的控件、接口、类等内容见下一章。

5)修改Visual StudioLoaderLock

选择"调试 异常",打开如下对话框:

取消选择LoaderLock,单击确定。

6)加载控件

定义三维视图控件GlobeView

1
GlobeView _globeView;

创建并加载:

 

1
2
3
4
// 三维控件加载
_globeView = new GlobeView();
_globeView.Dock = DockStyle.Fill;
this.Controls.Add(_globeView);

 

 

点击F5运行即可运行。

系统可视化控件不支持设计方式添加,请使用代码方式添加。

7)定位三维视图

创建按钮,在其点击事件中加入定位代码:

1
2
// 定位到青海湖,摄像机高度为150km
_globeView.GlobeCamera.FlyTo(100.2167, 36.8667, 150000.0);

定位需要使用GlobeCamera对象,调用FlyTo方法,即可实现飞行定位。

8)加入图层控件

创建图层控件,与GlobeView控件绑定即可:

1
2
3
4
5
6
7
// 创建图层控件
GlobeLayerControl lyrUI = new GlobeLayerControl();
lyrUI.Dock = DockStyle.Fill;
this.panelLayer.Controls.Add(lyrUI);
 
// 绑定图层控件到三维视图
lyrUI.Connect(_globeView);

9)鼠标事件

定义鼠标点击和移动事件:

1
2
3
4
5
// 鼠标移动事件
_globeView.GlobeMouseMove += new GlobeMouseMoveEventHandler(_globeView_GlobeMouseMove);
 
// 鼠标单击事件
_globeView.GlobeMouseClick += new GlobeMouseClickEventHandler(_globeView_GlobeMouseClick);

创建事件代码:

 

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
void _globeView_GlobeMouseClick(object sender, GlobeMouseEventArgs e)
{
MessageBox.Show(
"鼠标点击位置: \n" +
e.Longitude.ToString("f5") + "," + e.Latitude.ToString("f5")
);
}
 
void _globeView_GlobeMouseMove(object sender, GlobeMouseEventArgs e)
{
this.lblMPos.Text =
e.Longitude.ToString("f5") + "\n" + e.Latitude.ToString("f5");
}

10)添加POI点数据

创建图层和数据需要引用"iTelluro.GlobeEngine.DataSource.dll"。

首先,创建需要的图层对象和点数据的id计数器:

IconLayer _iconLyr;

long _iconId = 0;

其次,在构造函数中创建图层对象,并添加到GlobeView

// 创建POIIcon图层

_iconLyr = new IconLayer("点击位置");

 

// 添加到GlobeView控件

_globeView.GlobeLayers.FloatLayers.Add(_iconLyr);

在鼠标点击事件中添加POIIcon对象:

// 创建一个POIIcon对象

POIIcon icon = new POIIcon(

_iconId++,

"点击位置 " + _iconId.ToString(),

e.Latitude,

e.Longitude

);

// 设置其图标文件

icon.IconFile = Path.Combine(Application.StartupPath, "poi.png");

 

// 添加到图层

_iconLyr.Add(icon);

11)创建POIIcon图标图层的点击选择事件,选中后删除图标

添加图标时需要设置图标可响应鼠标点击事件:

// 设置图标可以响应事件

icon.Clickable = true;

设置图标图层选择事件:

// 图标点选事件

_iconLyr.POIIconClicked +=

new POIIconClickedEventHandler(_iconLyr_POIIconClicked);

在图标点选事件中删除图标:

void _iconLyr_POIIconClicked(object sender, POIIconClickEventArgs e)

{

if (e.Icon != null)

{

_iconLyr.Remove(e.Icon);

}

}

 

系统运行效果如下图所示:

posted on   马维峰  阅读(4385)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2005-03-14 对命令行程序调用及其结果显示的一点补充

统计

点击右上角即可分享
微信分享提示