Google Earth COM API

1,COM初步:

      Google Earth客户端是基于组件技术的,组件即COM,Google Earth COM API是Google Earth组件的公用接口。

         面向对象编程思想非常注重对象之间的联系,但是程序之间的联系,则是COM所注重的,在软件行业蓬勃发展的今天,不同软件之间互相利用是一个常见的事情,因此COM在当今软件行业是一种潮流。

         COM技术本身也是基于面向对象思想编程的,COM包括对象和接口两部分。COM的对象和C++中的对象概念类似,对象是类的实例,类则是经过封装的一个数据结构。接口是一组与对象相关的函数集合。这些函数通常被称为接口成员函数,函数名一般以I为前缀

        组件拥有对象,对象拥有接口,外部程序需要利用该组件的功能,就必须调用组件中对象的接口。

        每个组件都拥有一个128位的对象标识符CLSID。CLSID在全球范围内是唯一的,这样可以避免不同组件质检的冲突,组件的每个接口也拥有一个128位的全局唯一标识符GUID,用于可以通过GUID获得接口的指针,进而调用接口成员函数。

       CLSID是指windows系统对于不同的应用程序,文件类型,OLE对象,特殊文件夹以及各种系统组件分配一个唯一表示它的ID代码,用于对其身份的标示和与其他对象进行区分。
先得说下GUID,它是Globally Unique Identifier的简称,中文翻译为“全局唯一标示符”,在Windows系统中也称之为Class ID,缩写为CLSID。
      组件技术采用了IDL(接口描述语言)描述组件的数据结构,在组件模型中,接口首先需要定义,然后通过类来实现这些接口,IDL通过近似C/C++语言的形式描述了接口的定义,类的属性和成员函数。同时还定义了一些常用的数据结构,以及组件自定义的一些数据结构,通过VC++提供的MIDL工具,用户可以将IDL生成C/C++兼容的头文件(.h)。
      组件中的所有接口都支持IUnkonwn接口,组件中的所有类都实现了这个接口,IUnknown定义了所有接口的基本功能,包括QueryInterface,AddRef,Release三个函数。通过QueryInterface函数,用户可以获得对象的其他接口,函数AddRef和Release用来控制对象的声明周期。
      组件可以分为进程内组件和进程外组件两类。进程内组件运行效率高,以DLL(动态链接库)的形式出现。进程外组件的运行效率相对较低,但是进程外组件可以被远程调用(远程控制)。当外部程序与组件不在同一台机器,甚至不在同一网络,都可以调用进程外组件,进程外组件以EXE的形式出现,Google Earth属于进程外组件的范畴。
      二进制是组件的最大特点组件技术独立于任何编程语言,建立在二进制代码的基础上,用户可以使用任何语言来创建一个组件,此外,组件还具有接口不变性、继承性和多态性等特点。
2,COM库:
     
组件的对象和接口模型给用户提供了一种构建组件的规范,用户利用这种规范来创建自己的组件。为了协助用户更有效率的创建组件,Microsoft Windows操作平台提供了有关COM的一系列代码,这一系列代码组成COM库,以.dll文件的形式存在。
      COM库实现了很多功能,用户通过调用COM库的函数来完成组件的相关操作,一般用户创建一个组件对象,进而调用组件的接口成员函数,最后释放组件对象,整个过程都要用到COM库。
      用户首先调用CoInitialize()函数初始化COM库,然后在注册表中,COM库根据组件名称查找组件对象标识符CLSID,根据获得的CLSID,COM库函数CoGetClassObject()创建对象的类厂,进而由类厂完成组件对象的创建,返回对象的指针,在用户不再使用组件资源时,COM库调用CoUninitialize()函数释放资源。过程如下:


COM库除了实现组件对象调用的基本功能,还实现了如COM通信等更多的特性,此外,COM库提供了一些宏和标准接口定义,由于COM库是建立在操作系统平台之上的,所以随着操作系统的更新,COM库的功能将更强大。
3,Google Earth COM API类库:
     
COM即组件技术,API即应用编程接口。Google公司为用户提供了Google Earth COM API类库,其意义在于用户可以在各种外部程序中调用Google Earth的功能。Google Earth COM API是一个包括11个类的类库,这些类都实现了IDispatch接口,IDispatch接口和COM中的自动化技术相关。
      MFC中对自动化技术的支持类:COleDispatchDriver类。
      COleDispatchDriver类成员函数
      CreateDispatch成员函数通过组建的CLSID值来创建组件对象,并返回该对象的指针;
      AttachDispatch成员函数可以把当前的COleDispatchDriver类的对象和其他自动化对象联系起来;
      DetachDispatch函数和AttachDispatch功能相反;
      ReleaseDispatch函数用来释放所创建的对象。

      用户通过COleDispatchDriver类的函数创建Google Earth的对象,进而可以使用Google Earth COM API类库。该类库中的11个类中,IApplicationGE类最重要,类库中其他类的使用,都会涉及IApplicationGE类中的属性和函数。
COM API类库介绍:
      IApplicationGE                  入口类,通过该类,用户进一步调用其他类;
      ICameraInfoGE                  相机类,通过该类,用户可以调整观看当前视图的方式;
      IFeatureGE                       要素类,通过该类,用户可以控制要素的属性;
      IFeatureCollectionGE         要素集合类,通过该类,用户进一步获取要素;
      IPointOnTerrainGEt            地理坐标点类,通过该类,用户获取屏幕点的地理坐标;
      IVewExtentsGE                 视口类,通过该类,用户可以控制当前视口;
      ISearchControlerGE           Search面板类,通过该类,用户可以完成相应的搜索功能;
      ITourControlerGE                Tour面板类,通过该类,用户可以动态播放当前的要素;
      IAnimationControllerGE       Animation面板类,通过该类,用户可以动态播放当前的时间要素;
      ITimeGE                            时间类,通过该类,用户可以获取和设置要素的时间属性;
      ITimeIntervalGE                  时间间隔类,通过该类,用户可以获取要素的时间间隔属性。




     







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值