|
马上注册,结交更多侠客,享用更多功能,让你轻松玩转侠外论坛。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这里的 Google Earth API(本文的 Google Earth API 和最新 Google Earth API 概念不同,前者是 windows 程序以 COM 接口开发,目前的 Google Earth API 是通过 Google Earth 插件在浏览器理开发的 API 函数, 本文主要是讲 windows 程序以 COM 接口开发)不同于 GoogleMAP API:大家可能对于 GoogleMAP API 有一些印象了而且网上对于 GoogleMAP API 的应用也有很多比如 那么什么是 GoogleEarth API 呢?GoogleEarth API 能作什么呢?下 面我就结合我编的一些东西讲讲 GoogleEarth API Google Earth API Keyhole 1.0 Type Library 当你要使用 GoogleEarth API 时首先要在工程里引用他,以 VB 为例,在“工程” 菜单中选择“引用”,如果你已经安装了 GoogleEarth,那么引用栏 里会有“Keyhole 1.0 Type Library ”而它是定位于 GoogleEarth 的主程序的。
引用完毕后,打开对象浏览器,你就可以看到 GoogleEarth API 的类和函数及属性了!! GoogleEarth API 有 4 个类,每个类下面有多个函数及属性 下面将 我常用的函数的说明写到下面: Class KHFeature Property hasView As Long 只读暂时还不知道什么意思,没用过,哪位高手能给个解释 Property visibility As Long 选项 地标的可视Class KHInterface Property autopilotSpeed As Double GE 的自动飞行速度 Function currentView(terrain As Long) As KHViewInfo GE 的当前视图 Property currentViewExtents As KHViewExtents Function getFeatureByName(name As String) As KHFeature Function getPointOnTerrainFromScreenCoords(screen_x As Double, screen_y As Double) As Double() Sub LoadKml(kmlData As String) 持中文 Sub OpenFile(fileName As String) Sub QuitApplication() 打开地标文件 退出程序 导入 KML 字符串,不支 只读Sub SaveScreenShot(fileName As String, quality As Long) 保存截图 Sub setFeatureView(feature As KHFeature, speed As Double) Sub SetRenderWindowSize(width As Long, height As Long) Sub setView(view As KHViewInfo, terrain As Long, speed As Double)用 KHViewInfo 设置视角范围 Sub setViewParams(lat As Double, lon As Double, range As Double, _ tilt As Double, azimuth As Double, terrain As Long, speed As Double)用数值设置视角范围 Property streamingProgressPercentage As Long 读 数据传输进度百分比 只Class KHViewExtents property east As Double Property north As Double Property south As Double Property west As Double 只读 只读 只读 只读Class KHViewInfo Property azimuth As Double Property latitude As Double Property longitude As Double Property range As Double Property tilt As Double 方位角 纬度 经度 范围 倾角利用这些函数,可以对 GE 进行部分 控制,实现一些小的功能,比如 在我的地标管理器中就利用了 GoogleEarth API 实现了地标的隐藏与 显示。
Google 公司已经将 Google COM API 开放,这样我们就可以通过开放 的 API 来对 GoogleEarth 进行操作了,比如控制当前视图的高度、中 心经纬度,保存当前图片等等。下面是 Google COM API 的网址: 那么,VC 程序员如何使用这些 API 来控制 GoogleEarth 呢?下面我们编写一个简单的程序来说明对 Google COM API 的使用。 源代码下载 点击下载此文件首先用 VC 建立一个基于 Dialog 的工程(这个不用教了吧?),工程 名为 ControlGe,工程建好后,下面就是把 Google 提供的类添加到 工程里边来。Ctrl+W,打开类向导页面,点击“Add Class”按键,选择“From a type library”,然后到安装 GoogleEarth 的目录下,找到 googleearth.exe 文件,点击“打开”按键。这时会弹出一个框来确认产生 Google 的类,直接点击“OK”键,这是会生成两个文件加入的工程中:googleearth.h 和 googleearth.cpp,里面就是我们想要的类了。
GoogleEarth 的类已经生成了,那我们如何来用它们呢?各位看客不 用着急,我们一步步来。首先, 我们得调用一下::CoInitialize(NULL);初始化一下 COM 库了, 这个函数可以在 ControlGe.cpp 文件中的 InitInstance()函数里面 调用。然后呢,我们再在 ControlGeDlg.h 中定义一个类成员变量: IApplicationGEm_geApplication; 顺便说一下,IApplicationGE 可是 Google COM API 最主要的一个接口了,从它提供的操作数量就可以看得出来。好了,离成功不远了,控制的变量也定义了,下面就开始用它来控制 GE 吧。那么我们如何将刚定义的变量取得对 GE 的控制权呢?费话少说,首 先在 ControlGeDlg.cpp 文件中定义一个变量:static const CLSID CLSID_ApplicationGE = {0x8097D7E9,0xDB9E,0x4AEF, {0x9B,0x28,0x61,0xD8,0x2A,0x1D,0xF7,0x84}};然后在 OnInitDialog()中加入以下代码: m_geApplication.CreateDispatch(CLSID_ApplicationGE); 呵呵,现在 GE 就归你操控了!我们试着做个简单的操作吧,添加一个按键,然后添加按键的点击处 理函数,在函数中加入以下代码: CStringstrFileName; static char BASED_CODE szFilter[] = "jpg Files (*.jpg)|All Files (*.*)|*.*||"; CFileDialogdlgFile(FALSE, "jpg", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, this);if (dlgFile.DoModal() == IDOK) { CWaitCursor wait; strFileName = dlgFile.GetPathName(); m_geApplication.SaveScreenShot(strFileName, 100);}试试看,这是将当前 GE 的地图给保存成一个 jpg 格式的图片,只可 惜只能保存成黑白图片,google 还是给自己留了一手的。
以上内容就是[谷歌地图官网]google地图学习手册的相关内容介绍,喜欢侠外游戏论坛的朋友可以关注我们。
1234下一页 |
|