获取GE插件客户端坐标

时间:2012-09-06 14:41:04

标签: google-earth-plugin

我正在使用WebBrowser控件编写WinForms应用程序。我在此应用程序中使用Google地球插件,需要在Google地球上创建一些地标。根据当前范围(缩放级别),某些地标可能在屏幕上彼此非常接近(当地球缩小到足够大时)。在这种情况下,我想创建的不仅仅是一些地标,以避免在地图上用地标过度拥挤地图。

例如,假设我有1000个点我想创建地标。当我遍历要创建的地标的所有点时,我想将每个点的纬度/经度转换为WebBrowser控件的客户端坐标,这样我就可以检查它是否与已经创建的其他地标非常接近(在屏幕上) 。如果它非常接近其他地标我只是跳过这个地方的创作。因此,如果用户缩小到某种程度,则创建的实际地标数量可能远小于1000(例如,400)。

这是我遇到困难的地方。我不知道是否有办法将lat / long转换为托管Google Earth Plugin的WebBrowser控件的客户端坐标。我知道对于鼠标事件,我可以使用客户端坐标,但在这种情况下不涉及鼠标事件。

任何人都知道如何实现这一目标?谢谢!

1 个答案:

答案 0 :(得分:1)

您尝试用来解决问题的方法不正确。但是有几个选择:

采用您当前的方法 - 您有两种选择:

  1. 您可以要求当前视图将给定的纬度/经度转换为屏幕X / Y.

    https://developers.google.com/earth/documentation/reference/interface_g_e_view#a8c39d0324f2350c54fe2de981f1be418

  2. 您可以将客户端鼠标坐标作为从GEWindow类触发的KML鼠标事件的一部分:

    https://developers.google.com/earth/documentation/reference/interface_g_e_window-members

    被触发的KMLMouseEvent包含客户端X / Y空间:

    https://developers.google.com/earth/documentation/reference/interface_kml_mouse_event

  3. 正确的方法是将KML区域标记添加到地标中,以便在用户平移/缩放等时显示/隐藏标记。

    http://www.google.com/earth/outreach/tutorials/region.html