Google Earth API 讲解--01

章内容将针对如何使用Google Earth API中各个接口进行详细阐述,采用实例代码加详解的方式,介绍Google Earth每个类的实际用途和COM的开发技巧。在阅读完本章之后,我们希望开发者能够掌握Google Earth的开发,并且对COM也有一定的了解。

本章中的代码例子基本基于Delphi代码和C sharp(Visual Studio 2005以下简称C#),作为教学语言,Delphi是最棒的,而C#也是目前非常流行的编程语言之一,用户可以轻松地将这些代码移植到自己的程序中,也可以轻松地转换成其他的编码语言,所有的代码均通过Delphi 7.0和Visual Studio 2005的测试。但是,例子代码只是为了讲解API的使用,并没有加入必要的容错逻辑,请读者加以注意。

5.1 概述

Google Earth是Google推出的第一款桌面地图产品,原先是Keyhole公司的产品,后为Google所收购,并分为了3个不同的版本,向公众免费开放的是Free版,加上Google的推广,使其从一个本来的专业软件,成为了家喻户晓的地理空间搜索引擎,Google Earth主界面如图5-1所示。

近两年国内外基于Google Earth的开发应用非常广泛,例如有人将Google Earth包装成为ActiveX组件,放置在网页上,使得Web网页也有了三维地图的功能;有人将建筑物的三维实体模型放在Google Earth上,实现了三维虚拟城市;有的汽车俱乐部把Google Earth和GPS结合起来,做成一套行车自驾游路线导航系统;国外有的地产商通过Google Earth的卫星地图来规划设计地产项目,房地产经纪人使用Google Earth标出项目方位,展示给客户;更有甚者推出了基于Google Earth的高尔夫游戏,正好利用三维卫星图片,实现了一个模拟的高尔夫球场。诸如此类的应用远远不止这些,全世界的玩家都在开动脑筋想出各种各样的花样。如图5-2所示的是驴友的徒步路线图。

      

           图5-1 Google Earth主界面                        图5-2 驴友的徒步路线图

Google Earth之所以能够拥有庞大而又令人振奋的应用前景,主要是因为Google Earth是个很优秀的地图平台,不仅能够提供优异的地图图像传输功能,而且还提供了开发的API接口,能够基于API控制地图的显示,操作地图要素,并且完成一定的空间分析。加上自己的业务代码,完全可以架构一个满足日常业务需要的普通GIS系统。

基于Google Earth的应用程序,可以充分利用Google的免费卫星图片(商业应用需要付费),而且其中的地图还无须自己维护,可节约大量的数据维护成本。Google Earth还提供了不少三维空间操控视点和地图要素的方法,稍加综合就可以做出超炫的效果,这是一般的地图软件平台所不具备的。

但是基于Google Earth为平台做开发也有一定的风险,如政策因素。国家测绘管理部门对于Google Earth提供的卫星图片的态度还不够明朗。目前Google Earth在政策上处于一个灰色地带,是否开放商业领域应用还需要时间的验证。再如Google Earth应用的另一大方向——GIS系统,GIS的各种地图数据库建设的国家标准目前还没有涉及Google Earth地图的方方面面,因此Google Earth的应用在某一个特定行业的内部容易被边缘化。但是有理由相信,随着地图产业的发展,Google地图的触角会伸入到这个行业的每一个角落。

5.2 Google Earth API开发基础

Google Earth提供了COM接口,开发人员可以使用支持COM的可视化编程语言工具进行开发。如用Delphi、Visual Basic等可视化编程语言来调用COM的接口、添加业务逻辑、构建自己的程序,高级用户甚至可以使用Python来调用Google Earth的COM接口。

Google Earth的API函数遵循COM的规范,在开发研究之前,还需要搞清楚什么是COM。

1.什么是COM

COM是Component Object Mode的缩写,是微软定义的标准接口标准。而遵循COM标准的小程序叫做COM组件,它是独立的可以动态加载的二进制可执行程序,可以是动态链接库DLL,也可以是EXE可执行程序。COM组件的特点就是可以动态加载。打个通俗的比方,COM组件就像一个个电子集成块,内部有实现诸多功能的逻辑结构,外部有很多接口,用户需要调用正确的接口完成相应的工作。

COM组件的内部逻辑实现对于调用它的用户而言是透明的,用户无须知道COM组件是如何完成计算的,只需要知道是如何调用组件所提供的接口即可。可以说COM的出现验证了软件工业化或者说流水线化时代的到来。通过COM组件,工程师无须考虑那些自己不擅长的领域,而把精力放在自己的专业上即可,然后编成COM组件或者调用第三方的组件来构造自己的程序,这样做不仅效率高而且专业性强。

正如所有的COM组件一样,Google Earth所提供的COM组件的内部逻辑对于用户也是不可知的,但是可以通过学习如何调用其所提供的接口(也就是本章重点讲述的内容),来构建自己的业务程序。

虽然目前已经是.NET或者是J2EE的时代,但是COM作为一种相当成熟的软件标准仍然不失其魅力,掌握好COM是进行Google Earth API开发的前提。

2.调用Google Earth API该用什么语言

任何支持COM规范的语言都可以编写COM组件并调用其接口,Google Earth 的API也同样如此。开发人员可以用目前常见的任何一种支持COM的语言来调用,如Delphi、Visual Basci、Visual C++、Java、Python等。

本章中的所有代码都是基于Delphi和C#)的,选择Delphi的原因在于Delphi的前身Pascal语言是个极好的教学语言工具,并且Delphi在COM时代所创造的辉煌是那么耀眼夺目,在这里采用Delphi是顺理成章的。而微软的Visual Studio 2005 的c#也是目前流行的编程语言,程序员们可以直接使用本章中的例子代码而无须转换。

3.Google Earth提供的COM组件

Google并没有提供给用户独立的COM组件,而是在用户安装了Google Earth程序之后,程序会将自带的动态链接库注册到用户的操作系统上,这时就可以调用Google Earth API了。

如果在如Delphi或者VB等可视化编程工具里没有发现Google Earth API的库文件,则需要重新安装Google Earth,或者重新注册Google Earth服务。Google的官方网站上提供了一个方法,即命令行的方式。

例如,Google Earth程序安装在C:\Program Files\Google\Google Earth目录下,那么首先在命令行窗口中进入这个目录,再运行“googleearth.exe /RegServer”,如图5-3所示。

图5-3 注册服务

如果需要卸载,则输入“googleearth.exe /UnregServer”。

4.Google Earth 的IDL和对应的TLB文件

在Google Earth的官方网站上提供了Google Earth API的接口定义,这个接口定义是以IDL文件的方式展现的。IDL是Interface Definition Language的首字母缩写,意思是接口定义语言,而IDL文件则是用于定义接口的原型文件。

用户可以下载Google Earth API的IDL文件,并通过VC++或者其他软件预编译成为运行库TLB文件。VC++的IDL编译程序是MIDL,这是一个命令行小程序,高级用户也可以直接使用它来编译生成TLB文件。具体使用方法在这里不再赘述,请读者查阅相应的技术资料。

生成TLB文件后,用户可以利用Visual Basic或者Delphi导入TLB文件,生成相应的代码,从而进一步使用。

在Delphi中使用Google Earth API的类型库,如图5-4所示,需要在调用的代码中加入“uses EARTHLib_TLB;”代码,即要导入Google Earth API类型库代码文件。

图5-4 Delphi中的API

5.在Visual Studiao 2005中引用TLB库文件

在Visual Studiao 2005中使用TLB库比较方便,用户可以直接引用,在菜单项【项目】中选择【添加引用】,选择【浏览】选项页面,在打开窗口中有很多库类型选项,例如DLL或者TLB或者OCX类型如图5-5所示。

图5-5 库类型文件选择

选择Google Earth的tlb库文件,一般文件名为“GoogleEarth.tlb”添加引用即可,添加后如图5-6所示。

图5-6 添加引用

在Visual Studio C#的类文件中,只需要加入对EARTHLib的引用即可,如using EARTHLib,然后即可在编程中访问库中的接口和类了。


转载于:https://www.cnblogs.com/shanghaif/archive/2010/07/20/1781679.html

你可能感兴趣的:(Google Earth API 讲解--01)