zoukankan      html  css  js  c++  java
  • C#调用GoogleEarth COM API开发(一)

    一、准备

    Google Earth提供了个人免费版、Plus版、Pro版,个人开发只安装个人免费版就可以了,如果需要更多的功能,那么只有每年上交$400购买专业版了

    到目前为止,GoogleEarth的二次开发接口还比较少,功能太弱,仅仅提供了1.0的类库。

    GoogleEarth COM API参考文档可以在这里找到:http://earth.google.com/comapi/index.html

    C#调用COM的参考资料多如牛毛,大家可以到网上搜一下

    二、例子

    这里提供一个利用VS2008 + Google Earth 5.0开发一个“Hello world”程序

    首先,确保已经正确安装GE,打开VS2008 ,新建一个Windows应用程序项目,在“项目”菜单中选择“添加引用…”,切换到“COM”选项卡,选择“Google Earth 1.0 Type Library”,其实就是Google Earth的主程序

    在项目的引用中你可以看到已经添加了一个EARTHLib的引用,然后我们就可以调用其中的接口进行开发了。

    下面就是小例子的代码(功能很简单,只有三个,打开GE,然后让GE保存一张截图,然后可以打开这个截图看看。呵呵)

       1: // 功能:GE实例
       2: // 描述:GE COM API 网址:http://earth.google.com/comapi/index.html
       3: // 作者:温伟鹏
       4: // 日期:2008-01-20
       5:  
       6: using System;
       7: using System.Collections.Generic;
       8: using System.ComponentModel;
       9: using System.Data;
      10: using System.Drawing;
      11: using System.Text;
      12: using System.Windows.Forms;
      13: using EARTHLib;
      14: using System.Runtime.InteropServices;
      15: using System.IO;
      16: using System.Diagnostics;
      17:  
      18: namespace GEDemo
      19: {
      20:     public partial class Form1 : Form
      21:     {
      22:         /// <summary>
      23:         /// 标记GE是否已经启动
      24:         /// </summary>
      25:         private bool isGeStarted = false;
      26:         /// <summary>
      27:         /// 定义GE应用程序类
      28:         /// </summary>
      29:         private ApplicationGEClass GeApp;
      30:  
      31:         public Form1()
      32:         {
      33:             InitializeComponent();
      34:         }
      35:  
      36:         private void button1_Click(object sender, EventArgs e)
      37:         {
      38:             StartGE();
      39:         }
      40:  
      41:         /// <summary>
      42:         /// 启动GE
      43:         /// </summary>
      44:         private void StartGE()
      45:         {
      46:             if (isGeStarted)
      47:             {
      48:                 return;
      49:             }
      50:  
      51:             try
      52:             {
      53:                 GeApp = (ApplicationGEClass)Marshal.GetActiveObject("GoogleEarth.Application");
      54:  
      55:                 isGeStarted = true;
      56:             }
      57:             catch
      58:             {
      59:                 GeApp = new ApplicationGEClass();
      60:  
      61:                 isGeStarted = true;
      62:             }
      63:         }
      64:  
      65:         private void button2_Click(object sender, EventArgs e)
      66:         {
      67:             string ssFile = Path.Combine(Application.StartupPath, "ScreenShot.jpg");
      68:  
      69:             try
      70:             {
      71:                 //quality的取值范围在(0,100)之间,质量越高,quality越大
      72:                 GeApp.SaveScreenShot(ssFile, 100);
      73:  
      74:                 MessageBox.Show("成功保存截屏图像:" + ssFile);
      75:             }
      76:             catch(Exception ex)
      77:             {
      78:                 MessageBox.Show("保存截屏图像时发生错误:" + ex.Message);
      79:             }
      80:         }
      81:  
      82:         private void button3_Click(object sender, EventArgs e)
      83:         {
      84:             string ssFile = Path.Combine(Application.StartupPath, "ScreenShot.jpg");
      85:  
      86:             if (!File.Exists(ssFile))
      87:             {
      88:                 MessageBox.Show("未能找到保存的截屏图像!");
      89:                 return;
      90:             }
      91:  
      92:             Process.Start(ssFile);
      93:         }
      94:  
      95:         private void button4_Click(object sender, EventArgs e)
      96:         {
      97:             this.Close();
      98:             Application.Exit();
      99:         }
     100:  
     101:     }
     102: }
  • 相关阅读:
    Lattice Diamond 的学习之新建工程
    candence 笔记总结
    音乐发生器的原理
    PAL/NTSC 制电视广播技术有关知识--FPGA
    以后绝对不能再犯的错误
    BZOJ1112: [POI2008]砖块Klo
    Luogu P1533 可怜的狗狗
    BZOJ4542: [Hnoi2016]大数
    BZOJ5131: [CodePlus2017年12月]可做题2
    BZOJ3083: 遥远的国度
  • 原文地址:https://www.cnblogs.com/wpwen/p/1385570.html
Copyright © 2011-2022 走看看