1

使用 Google Earth 插件 AI,我想播放带有巡回演出功能的 KML 创作的巡回演出,但让用户在播放过程中修改相机控件。

是否可以?

4

2 回答 2

3

这取决于您要允许多少修改。

巡回播放旨在与用户一起更改视图的方向(通过拖动或相机控件),而不是位置。如果用户停止更改视图的时间足够长,相机将平滑地捕捉回游览中该点的默认方向。缩放和平移控件在游览期间消失,但​​如果用户尝试通过其他方法(如键盘)更改相机位置,游览通常会暂停。

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

如果您还没有尝试过,Google Code Playground 中有一个游览示例,您可以在其中看到基于默认事件响应的不同交互会发生什么。

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

编辑:问题中引用的 Earth API tour page 有一个示例,通过让插件为您解析 KML 文件开始。您可以通过使用 KML DOM 遍历代码来查找所有游览原语(而不是在找到游览元素时立即停止)来使用它来实现上述建议。

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

于 2012-02-21T22:10:42.313 回答
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的同一个人制作的

如果您碰巧解决了问题,我会很感激您创建一个简单的示例页面并分享链接。这可能需要一段时间,所以如果您可以通过个人资料查找我的电子邮件并通知我,那就更好了。

祝你好运!

于 2012-02-22T06:59:13.387 回答