0

在 C# 中使用谷歌地球插件,我想在地球上获得点击位置;我怎样才能做到这一点?

using GEPlugin;

m_ge = (IGEPlugin)pluginInstance;
KmlLookAtCoClass lookAt =  m_ge.createLookAt("");
lookAt.set(35.337919, 33.321576, 0, m_ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 0, 5000);

m_ge.getView().setAbstractView(lookAt);

m_ge.getLayerRoot().enableLayerById(m_ge.LAYER_ROADS, 1);

现在我想添加我想要获取点击事件的点击事件监听器。

如何才能做到这一点?

4

2 回答 2

1

编辑

GEWebBrowser 继承自标准 System.Windows.Forms.WebBrowser 控件类,并具有相同的基本成员、方法、属性和事件。

因此,您需要在此控件和您的 C# 类之间手动创建双向通信。

请参阅这篇文章,了解如何将 C# 连接到浏览器控件中的 javascript 事件。http://support.microsoft.com/kb/312777

此外,您可能会发现以下 C# 方法对于将 javascript 事件添加到 GEWebBrowser 很有用。

无效的 AddEventListener(对象,字符串,字符串)

google.earth.addEventListener 方法的包装器

参数

object:目标插件Api对象

字符串:事件 ID

string:要使用的 javascript 回调函数的名称

例如:GEWebBrowser.AddEventListener(object,"click","function(event){alert(event.getType());}");

来源:http ://code.google.com/p/winforms-geplugin-control-library/wiki/GEWebBrowser


不完全确定,但也许这些链接之一会帮助你。

http://fraserchapman.blogspot.com/2008/08/google-earth-plug-in-and-c.html

http://groups.google.com/group/google-earth-browser-plugin/browse_thread/thread/90dfb80960094828?pli=1

http://interactiveearth.blogspot.com/2008/01/create-your-own-google-earth.html

http://www.xtremevbtalk.com/showthread.php?t=287038

于 2011-03-01T23:46:02.710 回答
1

问题是标准事件处理程序是 google.earth 命名空间的一部分,不能通过托管代码直接访问。您需要通过 javascript 和 COM 可见类将事件“中继”到您的应用程序。

我开发了一个免费的控件库,可以让您轻松地将 google earth 插件嵌入到应用程序中。

它支持您正在寻找的 AddEventListner 和 RemoveEventListner 函数 http://code.google.com/p/winforms-geplugin-control-library/wiki/AddEventListener

值得注意的是,它不像您的示例那样使用 GEPlugin 类型库,而是使用 C#4.0 中的动态类型。这意味着它不依赖于特定版本的 Google 地球插件

主要项目在这里 http://code.google.com/p/winforms-geplugin-control-library/

于 2011-03-03T04:31:15.823 回答