C#调用Google Earth

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C#调用GoogleEarthCOMAPI开发(一)2009-07-18来自:字体大小:【大中小】摘要:GoogleEarth提供了个人免费版、Plus版、Pro版,个人开发只安装个人免费版就可以了,如果需要更多的功能,那么只有每年上交$400购买专业版了。一、准备GoogleEarth提供了个人免费版、Plus版、Pro版,个人开发只安装个人免费版就可以了,如果需要更多的功能,那么只有每年上交$400购买专业版了到目前为止,GoogleEarth的二次开发接口还比较少,功能太弱,仅仅提供了1.0的类库。GoogleEarthCOMAPI参考文档可以在这里找到:调用COM的参考资料多如牛毛,大家可以到网上搜一下二、例子这里提供一个利用VS2008+GoogleEarth5.0开发一个“Helloworld”程序首先,确保已经正确安装GE,打开VS2008,新建一个Windows应用程序项目,在“项目”菜单中选择“添加引用…”,切换到“COM”选项卡,选择“GoogleEarth1.0TypeLibrary”,其实就是GoogleEarth的主程序在项目的引用中你可以看到已经添加了一个EARTHLib的引用,然后我们就可以调用其中的接口进行开发了。下面就是小例子的代码(功能很简单,只有三个,打开GE,然后让GE保存一张截图,然后可以打开这个截图看看。呵呵)1://功能:GE实例2://描述:GECOMAPI网址:://作者:温伟鹏4://日期:2008-01-205:6:usingSystem;7:usingSystem.Collections.Generic;8:usingSystem.ComponentModel;9:usingSystem.Data;10:usingSystem.Drawing;11:usingSystem.Text;12:usingSystem.Windows.Forms;13:usingEARTHLib;14:usingSystem.Runtime.InteropServices;15:usingSystem.IO;16:usingSystem.Diagnostics;17:18:namespaceGEDemo19:{20:publicpartialclassForm1:Form21:{22:///summary23:///标记GE是否已经启动24:////summary25:privateboolisGeStarted=false;26:///summary27:///定义GE应用程序类28:////summary29:privateApplicationGEClassGeApp;30:31:publicForm1()32:{33:InitializeComponent();34:}35:36:privatevoidbutton1_Click(objectsender,EventArgse)37:{38:StartGE();39:}40:41:///summary42:///启动GE43:////summary44:privatevoidStartGE()45:{46:if(isGeStarted)47:{48:return;49:}50:51:try52:{53:GeApp=(ApplicationGEClass)Marshal.GetActiveObject(GoogleEarth.Application);54:55:isGeStarted=true;56:}57:catch58:{59:GeApp=newApplicationGEClass();60:61:isGeStarted=true;62:}63:}64:65:privatevoidbutton2_Click(objectsender,EventArgse)66:{67:stringssFile=Path.Combine(Application.StartupPath,ScreenShot.jpg);68:69:try70:{71://quality的取值范围在(0,100)之间,质量越高,quality越大72:GeApp.SaveScreenShot(ssFile,100);73:74:MessageBox.Show(成功保存截屏图像:+ssFile);75:}76:catch(Exceptionex)77:{78:MessageBox.Show(保存截屏图像时发生错误:+ex.Message);79:}80:}81:82:privatevoidbutton3_Click(objectsender,EventArgse)83:{84:stringssFile=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:privatevoidbutton4_Click(objectsender,EventArgse)96:{97:this.Close();98:Application.Exit();99:}100:101:}C#调用GoogleEarthComAPI开发(二)继《C#调用GoogleEarthComAPI开发(一)》,我Neil又带给大家第二篇文章。这一篇文章在第一篇的基础上,展示如何调用WindowsAPI将GoogleEarth的界面隐藏掉,并将GoogleEarth的地图显示在自定义的窗体上。废话少说,直接上代码。1、主窗口代码:1://功能:GE实例(二)2://描述:GECOMAPI网址:://作者:温伟鹏4://日期:2009-02-085:6:usingSystem;7:usingSystem.Collections.Generic;8:usingSystem.ComponentModel;9:usingSystem.Data;10:usingSystem.Drawing;11:usingSystem.Text;12:usingSystem.Windows.Forms;13:usingEARTHLib;14:15:namespaceGEDemo16:{17:publicpartialclassForm2:Form18:{19:///summary20:///用来关闭GoogleEarth的消息定义21:////summary22:staticreadonlyInt32WM_QUIT=0x0012;23:24:privateIntPtrGEHWnd=(IntPtr)5;25:privateIntPtrGEHrender=(IntPtr)5;26:privateIntPtrGEParentHrender=(IntPtr)5;27:///summary28:///定义GE应用程序类29:////summary30:privateApplicationGEClassGeApp;31:32:publicForm2()33:{34:InitializeComponent();35:}36:37:protectedoverridevoidOnLoad(EventArgse)38:{39:base.OnLoad(e);40:41:if(!this.DesignMode)42:{43:GeApp=newApplicationGEClass();44:45:GEHWnd=(IntPtr)GeApp.GetMainHwnd();46:47:NativeMethods.SetWindowPos(GEHWnd,NativeMethods.HWND_BOTTOM,0,0,0,0,48:NativeMethods.SWP_NOSIZE+NativeMethods.SWP_HIDEWINDOW);49:50:GEHrender=(IntPtr)GeApp.GetRenderHwnd();51:GEParentHrender=(IntPtr)NativeMethods.GetParent(GEHrender);52:53:NativeMethods.MoveWindow(GEHrender,0,0,this.Width,this.Height,true);54:55:NativeMethods.SetParent(GEHrender,this.Handle);56:}57:}58:59:protectedoverridevoidOnClosing(CancelEventArgse)60:{61:base.OnClosing(e);62:63:NativeMethods.PostMessage(GeApp.GetMainHwnd(),WM_QUIT,0,0);64:}65:}66:}2、NativeMethods类定义:1://功能:WindowsAPI调用2://描述:大家可以参照MSDN3://作者:温伟鹏4://日期:2009-02-085:6:usingSystem;7:usingSystem.Collections.Generic;8:usingSystem.Text;9:usingSystem.Runtime.InteropServices;10:11:namespaceGEDemo12:{13:publicclassNativeMethods14:{15:[DllImport(user32.dll,CharSet=CharSet.Auto,SetLastError=true)]16:publicstaticexternboolSetWindowPos(IntPtrhWnd,IntPtrhWndInsertAfter,intx,inty,intcx,intcy,UInt32uflags);17:18:[DllImport(user32.dll,CharSet=CharSet.Auto)]19:publicstaticexternIntPtrPostMessage(inthWnd,intmsg,intwParam,intlParam);20:21:#region预定义22:23:publicstaticreadonlyIntPtrHWND_BOTTOM=newIntPtr(1);24:publicstaticreadonlyIntPtrHWND_NOTOPMOST=newIntPtr(-2);25:publicstaticreadonlyIntPtrHWND_TOP=newIntPtr(0);26:publicstaticreadonlyIntPtrHWND_TOPMOST=newIntPtr(-1);27:publicstaticreadonlyUInt32SWP_NOSIZE=1;28:publicstaticreadonlyUInt32SWP_NOMOVE=2;29:publicstaticreadonlyUInt32SWP_NOZORDER=4;30:publicstaticreadonlyUInt32SWP_NOREDRAW=8;31:publicstaticreadonlyUInt32SWP_NOACTIVATE=16;32:publicstaticreadonlyUInt32SWP_FRAMECHANGED=32;33:publicstaticreadonlyUInt32SWP_SHOWWIND

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功