3

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

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

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

有人知道如何实现这一目标吗?谢谢!

4

1 回答 1

1

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

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

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

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

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

    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

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

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

于 2012-09-08T22:44:26.890 回答