直接响应 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]