使用VB.NET中的GoogleEarth插件通过FC.GEPluginCtrls

时间:2012-03-24 18:10:53

标签: vb.net google-earth google-earth-plugin

我真的在寻找一种简单的方法来构建使用GEplugin的VB.NET应用程序。所以我发现这个项目似乎做了我需要的肮脏工作:http://code.google.com/p/winforms-geplugin-control-library/

那么,那里发布的所有代码都是关于C#的,但是我需要在VB.NET上使用它。所以我试过这个:

  1. 从VB.NET 2010 Express创建了一个新的32位解决方案(我只是添加了

        <PlatformTarget>x86</PlatformTarget >
    
    <。>在.vbproj文件中)

  2. 添加了对FC.GEPluginCtrls.dll

  3. 的引用
  4. 在表单

  5. 上插入了一个GeWebBrowser控件
  6. 位于代码顶部,添加了

        Imports FC.GEPluginCtrls
    

    然后,在表单Load事件中,输入以下代码:

        InitializeComponent()
    
        GeWebBrowser1.LoadEmbeddedPlugin()
    
        Do
        Loop Until GeWebBrowser1.PluginIsReady = False
    
        GeWebBrowser1.CreateInstance(ImageryBase.Earth)
    
    我认为,这相当于 http://code.google.com/p/winforms-geplugin-control-library/wiki/CreateInstance

  7. 因此,项目编译并没有出错,但GeWebBrowser控件仍为空。

1 个答案:

答案 0 :(得分:0)

我实际上是在写你正在使用的库。您没有收听PluginReady事件。 http://code.google.com/p/winforms-geplugin-control-library/wiki/PluginReady

要将它与VB一起使用,只需将基本示例转换为VB - http://code.google.com/p/winforms-geplugin-control-library/wiki/ExampleForm

此外,由于PluginReady事件是异步的,因此完全没有必要进行循环轮询PluginIsReady。

要显示地球,您需要的是以下内容。

Private Sub Form1_Load( ByVal sender As System.Object,  ByVal e As System.EventArgs) Handles MyBase.Load
        GeWebBrowser1.LoadEmbeddedPlugin()
End Sub

要在初始化时使用插件,请使用PluginReady事件。像。的东西。

Option Strict Off 
Public Class Form1
    Private Dim _ge as Object = Nothing
Private Sub GeWebBrowser1_PluginReady( ByVal sender As System.Object,  ByVal e As FC.GEPluginCtrls.GEEventArgs) Handles GeWebBrowser1.PluginReady
        _ge = e.ApiObject ' reference to the Google Earth Plugin object
        MessageBox.Show(_ge.getApiVersion()) ' _ge is the plugin -use it just as in the javascript api...
End Sub

Private Sub Form1_Load( ByVal sender As System.Object,  ByVal e As System.EventArgs) Handles MyBase.Load
        GeWebBrowser1.LoadEmbeddedPlugin() ' load the plugin
End Sub
End Class