在玩KML编写的游览时,是否可以动态控制相机?

时间:2012-02-21 01:00:42

标签: kml google-earth-plugin

使用Google地球插件AI,我希望使用touring capability播放使用KML创作的游览,但让用户在游戏过程中修改camera controls

有可能吗?

2 个答案:

答案 0 :(得分:3)

这取决于您想要允许的修改量。

巡视播放旨在让用户更改视图的方向(通过拖动或相机控件),但不能改变位置。如果用户停止更长时间地更改视图,则摄像机将平滑地快速恢复到巡视中该点的默认方向。在巡视期间,缩放和平移控件会消失,但如果用户尝试通过其他方法(如键盘)更改摄像头位置,则通常会暂停导览。

然而,Earth API允许您吸收或更改任何这些事件行为,因为您可以为鼠标和键盘事件添加侦听器,并防止它们像往常一样处理或以完全不同的方式对它们进行操作。 / p>

如果您还没有尝试过,Google代码游乐场中有一个tour example,您可以根据默认的事件响应查看不同互动情况会发生什么。

最后,如果你想要真正的自定义旅行行为 - 比如允许某些类型的摄像机移动远离巡回路径,即使巡视继续 - 你很可能需要编写自己的摄像机移动代码。获得这项工作的基础并不是很困难,但是对于这种交互获得正确的直觉感觉很困难,并且可能依赖于数据集。首先,您可以直接解析KML,找到它包含的游览和游览基元,然后使用您引用的常规相机控件在这些基元之间移动,为任何用户提供的移动添加偏移。

编辑:问题中引用的Earth API游览页面为an example of getting started with parsing the KML file,方法是让插件为您完成。您可以使用它来实现上述建议,方法是使用KML DOM行走代码查找所有游览基元(而不是在找到Tour元素后立即暂停)。

这并不总是最有效的方法(插件函数调用有开销,同时浏览器具有内置的XML解析功能),但它可能是最直接的启动方式。对于许多旅行团来说,这种方法就足够了。

答案 1 :(得分:2)

这是可能的,但很难实施,甚至更难控制。我一直在努力尝试这么做一段时间。我自己并没有取得多大成功,但是其他人已经取得了一些进展,这是两个例子。

首先,他们使用的基本原则是基于TICK - 这是一个简单的例子 http://earth-api-samples.googlecode.com/svn/trunk/examples/event-frameend.html

这两个例子是: http://maps.myosotissp.com/http://racemyrace.com/race.php

此外,这里有一个例子,直到最近才开始工作,我不知道为什么它已经停止但看起来你仍然可以阅读正在使用的JS。它由创建racemyrace网站的同一个人制作 http://www.thekmz.co.uk/GEPlugin/pathtour/v3/path_tour_v3.htm

如果您碰巧在某些方面工作,我将非常感谢您创建一个简单的示例页面并分享链接。它可能需要一段时间,所以如果你可以通过个人资料查找我的电子邮件并通知我会更好。

祝你好运!