谷歌地球互动元素

时间:2013-05-01 02:04:17

标签: kml google-earth

是否可以在Google地球中拥有互动元素(例如,多边形响应拖动和点击事件)(我特别需要Google地球,而不是Google地球插件!) 由于大多数活动都已转向插件,因此该文档似乎没有用处,但该项目正在使用Google地球。我知道我可以在气球中完全访问JavaScript和WebKit,但是我可以使用JavaScript来访问KML元素并为它们分配事件监听器吗?

更新: 假设我想使用Google地球来控制网络摄像头。 KML将显示摄像机视野的区域。我希望能够拖动该区域,拥有拖动的JavaScript句柄并调用一个可以相应地旋转网络摄像头的Web服务。

1 个答案:

答案 0 :(得分:1)

直接响应Google地球中的多边形点击和拖动事件(使用GE API和插件之外)并没有为您提供太多选择。使用GE API很容易,但在Google地球客户端中,您无法直接响应移动或拖动地标。此外,一旦将地标发送到客户端,其位置(如果已移动)将无法通过客户端JavaScript访问并发送回服务器。

在KML和Google地球中可以使用多种交互式技术,其中一些技术可能适用于您尝试做的事情。

  • 您可以在描述气球中以HTML表单提供控件或配置选项,以自定义显示或更改网络摄像头的位置:

    对于相机控制,您可以在气球描述中显示向上,向下,向左,向右按钮(甚至可能是缩放或倾斜),然后单击调用后端控制器以移动相机的任何按钮。该操作的输出可以使用NetworkLinkControl来更新已在Google地球中加载的KML。

  • 您可以考虑通过后端KML生成服务指定viewFormat的NetworkLink。如果视图更改,您可以指定NetworkLink以使用视图/摄像机信息和/或其他客户端参数刷新并向后端服务报告。您可以响应视图更改(放大/缩小,平移,倾斜等)并相应地更改状态。如果您使用 onStop 进一步限制NetworkLink更新,则可以在用户正在移动时阻止增量更新,并且仅在用户停止移动后发送刷新更新,这可能是用户正在查看的内容。

viewFormat可让您访问Google地球的以下客户端属性:

 [lookatLon], [lookatLat], [lookatRange], [lookatTilt], [lookatHeading]
 [lookatTerrainLon], [lookatTerrainLat], [lookatTerrainAlt]
 [cameraLon], [cameraLat], [cameraAlt]
 [horizFov], [vertFov]
 [horizPixels], [vertPixels]
 [terrainEnabled]