在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事件监听器。
如何做到这一点?
答案 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://interactiveearth.blogspot.com/2008/01/create-your-own-google-earth.html
答案 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/