在Google地球插件上捕获点击事件

时间:2011-03-01 23:18:53

标签: c# google-earth google-earth-plugin

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

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);

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

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

修改

  

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

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

有关如何在浏览器控件中将C#连接到javascript事件,请参阅此文章。 http://support.microsoft.com/kb/312777

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

  

Void AddEventListener(object,string,   字符串)

     

google.earth.addEventListener方法的包装器

     

参数

     

object:目标插件Api对象

     

string:事件ID

     

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

     

示例:GEWebBrowser.AddEventListener(object,“click”,“function(event){alert(event.getType());}”);

src: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

答案 1 :(得分: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/