2

是否可以在 Google 地球中有交互式元素(例如响应拖动和点击事件的多边形)(我特别需要 Google 地球,而不是 Google 地球插件!)由于大部分活动已经转向,文档似乎没有帮助插件,但有问题的项目正在使用谷歌地球。我知道我可以完全访问气球内的 JavaScript 和 WebKit,但我可以使用 JavaScript 访问 KML 元素并为它们分配事件侦听器吗?

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

4

1 回答 1

1

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

在 KML 和 Google 地球中可以使用多种交互技术,其中一些可能适用于您正在尝试执行的操作。

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

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

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

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

 [lookatLon], [lookatLat], [lookatRange], [lookatTilt], [lookatHeading]
 [lookatTerrainLon], [lookatTerrainLat], [lookatTerrainAlt]
 [cameraLon], [cameraLat], [cameraAlt]
 [horizFov], [vertFov]
 [horizPixels], [vertPixels]
 [terrainEnabled]
于 2013-05-01T15:24:44.127 回答