google earth 开发小测试(一)
最近要完成一个小项目,设计到google earth 的二次开发。简单的说就是实时导航,根据获取到的GPS信息来定位目标点。之前写过一个 google earth 的"hello world" 即简单的调用GE(google earth)COM组件,在自定义程序中打开google earth 程序。
推荐初学google earth 开发博客 http://www.cnblogs.com/wpwen/archive/2009/02/06/1385570.html 写的比较详细。
这里我们来研究一下google earth 相关API了(http://earth.google.com/comapi/index.html),看它的API,类也不多,主要有以下五个类:
IApplicationGE 主类,基本操作都在这里,比 KHInterface 更非丰富,但少了两个重要的函数,CurrentView(当前的视角),SetView(设置视角,比如打开GE时可以定位到指定的视角)
IFeatureGE KML的标签类
IFeatureCollectionGE 标签集类,是 FeatureGE 集合。
IViewExtentsGE (只读)边界集类,可以获得当前屏幕内四个边的经纬度值。
ICaremaInfoGE 拷屏类,但目前没啥大用,黑白照片。
此外还有几个比较重要的类:
AnimationControllerGE 针对TimeStamp时间轴的,可以播放、暂停等。
PointOnTerrainGE 根据屏幕的点获得的经纬高度值就放在这个类里,可以看作一个数组。
SearchControllerGE 查询GE内置地址库的查询类(不是查KML文件的)
下面我们针对关键类做功能介绍:
函数名: SetCameraParams
功能 : 按指定经纬度定位GE窗口的中心到此位置上,而高度,视线范围等则可以用来调整窗体视觉(离地多高,倾斜多少度观看等)。
SetCameraParams (
double lat,
double lon,
double alt,
AltitudeModeGE altMode,
double range,
double tilt,
double azimuth,
double speed
)
lat 纬度 范围(-90 , 90)
lon 经度 范围(-180,180)
alt 高度(米)
altMode 高度模式(用来定义高度起始点, AltitudeModeGE类中有两种模式)
range 视线范围,GE视线与目标点距离。
tilt 视野倾斜度(0,90) 当为0是即垂直观看。
azimuth 方位角
speed 速度(参数值必须大于0,当值大于5时,GE将不做平移等过渡效果)。
注: 和这个函数相似的函数是 SetCamera 不同之处在于SetCamera 的参数是 ICameraInfoGE 对象。
SetCamera | ( | [in] ICameraInfoGE * | camera, | |
[in] double | speed | |||
) |
函数: SaveScreenShot
功能: 截取当前图像
fileName: KML文件指定路径
suppressMessages ; 消息参数,如果为true 则忽略GE加载文件时的出错消息,否则反之。
函数:LoadKmlData
功能:从字符串string中加载 KML文件,当然string 中包含的是完成可行的KML文件信息。
LoadKmlData | ( | [in] BSTR * | kmlData | ) |
函数: GetFeatureByName
功能: 从加载后的KML中,或者当前GE中的地标或者路径等 IFeatureGE类具体实例中返回第一个符合指定名字(name,KML文件中的一个标记)的IFeatureGE
GetFeatureByName | ( | [in] BSTR | name, | |
[out, retval] IFeatureGE ** | pFeature | |||
) |
SaveScreenShot | ( | [in] BSTR | fileName, | |
[in] long | quality | |||
) |
fileName 保存图像的地址
quality 保存图片的质量(0,100)越高效果越好
函数:OpenKmlFile
功能:打开指定KML文件,然后GE会自动定位到此KML文件指定的位置,至于KML文件格式后续会讲。
OpenKmlFile | ( | [in] BSTR | fileName, | |
[in] BOOL | suppressMessages | |||
) |