我正在使用WebBrowser控件编写WinForms应用程序。我在此应用程序中使用Google地球插件,需要在Google地球上创建一些地标。根据当前范围(缩放级别),某些地标可能在屏幕上彼此非常接近(当地球缩小到足够大时)。在这种情况下,我想创建的不仅仅是一些地标,以避免在地图上用地标过度拥挤地图。
例如,假设我有1000个点我想创建地标。当我遍历要创建的地标的所有点时,我想将每个点的纬度/经度转换为WebBrowser控件的客户端坐标,这样我就可以检查它是否与已经创建的其他地标非常接近(在屏幕上) 。如果它非常接近其他地标我只是跳过这个地方的创作。因此,如果用户缩小到某种程度,则创建的实际地标数量可能远小于1000(例如,400)。
这是我遇到困难的地方。我不知道是否有办法将lat / long转换为托管Google Earth Plugin的WebBrowser控件的客户端坐标。我知道对于鼠标事件,我可以使用客户端坐标,但在这种情况下不涉及鼠标事件。
任何人都知道如何实现这一目标?谢谢!
答案 0 :(得分:1)
您尝试用来解决问题的方法不正确。但是有几个选择:
采用您当前的方法 - 您有两种选择:
您可以要求当前视图将给定的纬度/经度转换为屏幕X / Y.
您可以将客户端鼠标坐标作为从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
正确的方法是将KML区域标记添加到地标中,以便在用户平移/缩放等时显示/隐藏标记。