используя плагин GoogleEarth из VB.NET через FC.GEPluginCtrls - PullRequest
0 голосов
/ 24 марта 2012

Я действительно ищу простой способ создания приложений VB.NET, использующих GEplugin. Итак, я нашел этот проект, который, кажется, выполняет грязную работу, которая мне нужна: http://code.google.com/p/winforms-geplugin-control-library/

Ну, весь код, размещенный там, работает на C #, но мне нужно иметь его на VB.NET. Итак, я попробовал это:

  1. создал новое 32-разрядное решение из VB.NET 2010 Express (я просто добавил

        <PlatformTarget>x86</PlatformTarget >
    

    внутри файла .vbproj)

  2. добавлена ​​ссылка на FC.GEPluginCtrls.dll

  3. вставил элемент управления GeWebBrowser в форму

  4. вверху кода, добавлено

        Imports FC.GEPluginCtrls
    

    затем в форме Событие загрузки введите этот код:

        InitializeComponent()
    
        GeWebBrowser1.LoadEmbeddedPlugin()
    
        Do
        Loop Until GeWebBrowser1.PluginIsReady = False
    
        GeWebBrowser1.CreateInstance(ImageryBase.Earth)
    

    что, я думаю, было бы эквивалентно http://code.google.com/p/winforms-geplugin-control-library/wiki/CreateInstance

Итак, проект компилируется и не получает ошибок, но элемент управления GeWebBrowser остается пустым.

1 Ответ

0 голосов
/ 28 марта 2012

Я действительно написал библиотеку, которую вы используете. Вы не слушаете событие 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

Кроме того, опрашивающий цикл PluginIsReady совершенно не нужен, поскольку событие PluginReady является асинхронным.

Чтобы показать Землю, все, что вам нужно, это следующее.

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
...