Google Earth COM API

来源:互联网 发布:阿里云root 编辑:程序博客网 时间:2024/04/30 02:54

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                  时间间隔类,通过该类,用户可以获取要素的时间间隔属性。




     







原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中医中医药网 广州中医药大学第一附属医院 河南中医药大学第一附属医院 河南中医药大学附属医院 成都中医药大学附属医院 云南中医药大学教务管理系统 湖北中医药大学教务 中医药大学附属医院 湖北中医药大学教务在线 天津中医药大学第一附属医院 天津中医药大学研究生院 云南中医药大学教务系统 北京中医药大学东方学院 山东中医药大学附属医院 辽宁中医药大学附属医院 上海中医药大学研究生院 广西中医药大学第一附属医院 山东中医药大学研究生处 江西中医药大学科技学院 广州中医药大学研究生院 陕西中医药大学数字校园 湖南中医药大学附属医院 安徽中医药大学第一附属医院 山东中医药大学第二附属医院 中医药大学东方学院 陕西中医药大学附属医院 安徽中医药大学附属医院 湖南中医药大学第一附属医院 浙江中医药大学教务处 甘肃中医药大学教务网 河南中医药大学中文网 世界中医药学会联合会 安微中医药高等专科学校 中华医学会中医药学会 中医药现代化国际科技大会 东中医药高等专科学校 世界科学技术中医药现代化 中医丰胸贴 中医特色贴敷疗法与处方 老中医小玲慧静煜通 输卵管通而不畅中医疗法