zoukankan      html  css  js  c++  java
  • 三维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

    GlobeView _globeView;

    创建并加载:

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

    点击F5运行即可运行。

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

    7)定位三维视图

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

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

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

    8)加入图层控件

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

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

    9)鼠标事件

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

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

    创建事件代码:

     

    代码如下:

    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);

    }

    }

     

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

  • 相关阅读:
    低于时钟频率的任意频率生成(相位累加器)
    verilog实现奇数倍分频
    No.135 Candy
    No.42 Trapping Rain Water
    No.149 Max Point on a Line
    No.147 Insertion Sorted List
    No.21 Merge Two Sorted List
    No.88 Merge Sorted Array
    No.148 Sort List
    No.206 Reverse Linked List
  • 原文地址:https://www.cnblogs.com/maweifeng/p/1685535.html
Copyright © 2011-2022 走看看