C#调用Google Earth Com API开发(四)

本篇继续介绍Google Earth COM API开发的基础知识,相对第三篇的改进如下:

1)增加鼠标滚轮支持,可以实现放大、缩小。此功能利用上一篇提供的HookAPI.dll实现

2)读取PlaceMarks(Google Earth界面中的位置)并显示、隐藏

3)读取所有图层,显示并隐藏

下面,继续放代码:

1、鼠标滚轮事件,实现放大、缩小

1: ...
2: // 放大
3: private const long ZoomIn = 0x00780000;
4: // 缩小
5: private const long ZoomOut = 0xFF880000;
6: ...
7: mouseHook.MouseWheel += new MouseEventHandler(mouseHook_MouseWheel);
8: ...
9: /// <summary>
10: /// 鼠标钩子。鼠标滚动事件
11: /// </summary>
12: /// <param name="sender"></param>
13: /// <param name="e"></param>
14: void mouseHook_MouseWheel(object sender, MouseEventArgs e)
15: {
16:   IntPtr hWnd = NativeMethods.WindowFromPoint(e.Location);
17:   if (hWnd == this.GeRenderHWnd)
18:   {
19:     Point point = this.Control.PointToClient(e.Location);
20:     // 如果鼠标位置在控件内部,则说明鼠标在GoogleEarth视图范围内进行了滚动
21:     if (this.Control.ClientRectangle.Contains(point))
22:     {
23:       NativeMethods.PostMessage(GeRenderHWnd, (int) WM_MOUSE.WM_MOUSEWHEEL, e.Delta == 120 ? ZoomIn : ZoomOut, 0);
24:     }
25:   }
26: }

时间: 2024-11-03 19:42:32

C#调用Google Earth Com API开发(四)的相关文章

C#调用Google Earth Com API开发(三)

好久没有更新<C#调用Google Earth Com API开发>系列文章了,今天带给大家的是第三篇,本篇相 对于第二篇主要改进了三个方面. 1) 实现GoogleEarth显示画面随窗口大小改变而改变 2) 截获GoogleEarth鼠标消息,实现单击.双击功能:鼠标滚轮缩放现在只能放大!O(∩_∩)O~ 3) 实现GoogleEarth彩色截图(测试环境:Windows 2003 Server ,Vista与Win7中不可用,XP未测) 下面还是继续看代码: 1.GoogleEarth动

C#调用Google Earth Com API开发(一)

一.准备 Google Earth提供了个人免费版.Plus版.Pro版,个人开发只安装个人免费版就可以了,如果需要更 多的功能,那么只有每年上交$400购买专业版了 到目前为止,GoogleEarth的二次开发接口还比较少,功能太弱,仅仅提供了1.0的类库. GoogleEarth COM API参考文档可以在这里找到:http://earth.google.com/comapi/index.html C#调用COM的参考资料多如牛毛,大家可以到网上搜一下 二.例子 这里提供一个利用VS200

C#调用Google Earth Com API开发(二)

继<C#调用GoogleEarth Com API开发(一)>,我Neil又带给大家第二篇文章.这一篇文章在第一篇 的基础上,展示如何调用Windows API将GoogleEarth的界面隐藏掉,并将GoogleEarth的地图显示在自定 义的窗体上.废话少说,直接上代码. 1.主窗口代码: 1: // 功能:GE实例(二) 2: // 描述:GE COM API 网址:http://earth.google.com/comapi/index.html 3: // 作者:温伟鹏 4: //

Google Earth COM API 开发(相机视角获取)

问题描述 在Google官网上下载了一个GoogleEarth6.0.2.2074,调用视角的函数Getcamera()参数是long型的,而官网上的documentation是BOOL型的,我该怎么调用这个函数获取相机视角呢?

google earth-VS2010与Google Earth COM API,SetCamera异常

问题描述 VS2010与Google Earth COM API,SetCamera异常 用三个滑块分别实现视高.倾斜角.方位角的设置,刷新视图,在m_geApplication.SetCamera(m_geCamera,1.5); 这个地方出现问题.程序代码如下: dlgRange=pAdjustDlg->m_slide1.GetPos(); dlgTilt=(pAdjustDlg->m_slide2.GetPos()*90)/100; dlgAzimuth=((pAdjustDlg->

oogle earth-Google Earth COM API

问题描述 Google Earth COM API 我想在MFC里面使用GetCamera()获取照相机,但是调试报错:无法计算表达式的值 代码如下: CApplicationGE m_geCtl: CCameraInfoGE cam; cam=m_geCtl.GetCamera(1); 解决方案 你需要i先创建COM对象,然后才能调用接口CoCreateInstance 解决方案二: 无法计算表达式的值只是说调试器没有办法对变量求值,可能你的代码被优化过.这和你程序出错没有什么关系.你得贴出你

基于google map api开发web和google earth的KML地标插件

KML文件很好做,在你的google earth(以下简称GE)中选择你自己的或是别人的marker或layer,就可以保存成静态的地标或图层信息(kmz或kml格式),发送给你的朋友,用他的GE打开你的文件就可以看到你所标注的marker信息. 这些相关的文章让我迷失了好一段时间,不过,我想要的是动态的地标.类似于EEMAP那样的GE插件.下面我将讲述它的工作原理和制做方法. 先说几个概念,google map api是基于javascript+xml等技术实现的,另一款产品google ea

谷歌地球-Google Earth API 今年12月关闭意味着什么

问题描述 Google Earth API 今年12月关闭意味着什么 在网上看到今年12月谷歌将关闭谷歌地球的API,API关闭之后是不是意味着之前用谷歌地球的API开发的东西全部都不能用了? 解决方案 当然如此,所以之前引用google earch api的应用要被废弃了. 解决方案二: **Note: The Google Earth API has been deprecated as of December 12th 2014. The API will continue to work

Google maps API开发

原文:Google maps API开发 Google maps API开发(一) 最近做一个小东西用到google map,突击了一下,收获不小,把自己学习的一些小例子记录下来吧   一.加载Google maps API <script type="text/javascript"        src="http://ditu.google.com/maps?file=api&v=2&key=ABQIAAAAzr2EBOXUKnm_jVnk0OJI