Google Earth API如何用键盘控制视点

在使用Google Earth Com API在自己的vc对话框上显示GE视图时,可以通过鼠标拖动来改变观察视点,也可通过下面的代码在OnKeyDown函数中,通过键盘控制视点,实现观察视点的上下左右移动和视角的改变。

具体代码如下:


#include "googleearth.h"

void CGoogleEarthDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    // TODO: Add your message handler code here and/or call default

    ICameraInfoGE geCamera = m_geApplication.GetCamera(TRUE);
    if(geCamera != NULL)
    {
        m_dLongitude = geCamera.GetFocusPointLongitude();
        m_dLatitude = geCamera.GetFocusPointLatitude();
        m_dRange = geCamera.GetRange();
        m_dTilt = geCamera.GetTilt();
    }

    switch(nChar)
    {
        case VK_LEFT:m_dPlaneLongitude -= 1.0/3600/10;break;
        case 'A':m_dLongitude -= 1.0/3600/10;break;
        case VK_RIGHT:m_dPlaneLongitude += 1.0/3600/10;break;
        case 'D':m_dLongitude += 1.0/3600/10;break;
        case VK_UP:m_dPlaneLatitude += 1.0/3600/10;break;
        case 'W':m_dLatitude += 1.0/3600/10;break;
        case VK_DOWN:m_dPlaneLatitude -= 1.0/3600/10;break;
        case 'S':m_dLatitude -= 1.0/3600/10;break;

        case 'J':        if(m_dTilt >= 2) m_dTilt -= 2.0;break;
        case 'K':        if(m_dTilt < 86) m_dTilt += 2.0;break;
    }

    m_geCamera.SetFocusPointLongitude(m_dLongitude);
    m_geCamera.SetFocusPointLatitude(m_dLatitude);
    m_geCamera.SetRange(m_dRange);
    m_geCamera.SetTilt(m_dTilt);

    m_geApplication.SetCamera(m_geCamera, 5);

    CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}


[本日志由 cnfgg 于 2009-08-21 03:40 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: google 键盘
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.