使用Google Earth插件AI,我想用touring capability播放一个用KML编写的教程,但让用户在播放过程中修改camera controls。
有可能吗?
发布于 2012-02-22 06:10:42
这取决于您想要允许多少修改。
漫游回放设计用于用户更改视图的方向(通过拖动或相机控件),但不能更改位置。如果用户停止更改视图的时间足够长,摄像机将平滑地捕捉回巡视中该点的默认方向。缩放和平移控件在漫游过程中消失,但如果用户尝试通过其他方法(如键盘)更改相机位置,漫游通常会暂停。
但是,Earth API允许您吸收或更改任何这些事件行为,因为您可以为鼠标和键盘事件添加侦听器,并阻止它们照常处理或以完全不同的方式对它们执行操作。
如果您还没有尝试过,在Google Code Playground中有一个tour example,您可以在其中看到基于默认事件响应的不同交互发生了什么。
最后,如果您想要真正的自定义漫游行为--比如在漫游继续时允许相机的某些类型的移动远离漫游路径--您很可能需要编写自己的相机移动代码。获得这种工作的基础并不是太难,但要获得这种交互的正确的直观感觉是困难的,而且可能依赖于数据集。首先,您可以直接解析KML,找到巡视和它包含的巡视基元,然后使用引用的常规相机控件在这些基元之间移动,为用户提供的任何移动添加偏移量。
编辑:问题中引用的Earth API浏览页面通过获取插件来为您提供an example of getting started with parsing the KML file。您可以通过使用KML DOM遍历代码来查找所有的tour原语(而不是在找到Tour元素后立即停止),从而实现上述建议。
这并不总是最有效的方法(插件函数调用有开销,同时浏览器具有内置的XML解析功能),但它可能是最直接的开始方式。对于许多旅行团来说,这种方法就足够了。
发布于 2012-02-22 14:59:13
这是可能的,但很难实现,更难很好地控制。我已经尝试了很长一段时间了。我自己并没有取得太大的成功,但这里有两个其他人取得了一些进展的例子。
首先,他们使用的基本原理是基于TICK的--一个简单的例子是这里的http://earth-api-samples.googlecode.com/svn/trunk/examples/event-frameend.html
这两个示例是:http://maps.myosotissp.com/和http://racemyrace.com/race.php
另外,这是一个直到最近还在运行的例子,我不确定它为什么停止了,但看起来你仍然可以阅读正在使用的JS。它是由创建种族竞赛网站http://www.thekmz.co.uk/GEPlugin/pathtour/v3/path_tour_v3.htm的同一个人制作的
如果你碰巧想出了什么,我将感谢你创建一个简单的示例页面并分享链接。这可能需要一段时间,所以如果你可以通过个人资料查找我的电子邮件,并通知我,那就更好了。
祝好运!
https://stackoverflow.com/questions/9370708
复制相似问题