Как программно создать папки kmltreeview и добавить в них метки?

Используя C# winforms-ge-plugin, я добавляю точки доступа wi-fi к глобусу ge и kmltreeview, поскольку протокол поиска находит их. Я хотел бы сгруппировать их по городам, используя координаты GPS. План состоит в том, чтобы сгруппировать каждый город в папку, но у меня возникают проблемы с выяснением того, как создавать папки в kmltreeview.

Первоначально я попробовал это:

        var folder = kmlTreeView.CreateNode(FC.GEPluginCtrls.ApiType.KmlFolder);
        kmlTreeView.ParseKmlObject(folder);

но это не сработало.

Я нашел код на основе JavaScript на другом форуме, но он тоже не работает:

        var folder = ge1.createFolder("test");
        folder.getFeatures().setVisibility(true);
        folder.getFeatures().setOpen(true);

        var placemark = ge1.createPlacemark();
        folder.getFeatures().appendChild(placemark);

        ge1.getFeatures().appendChild(folder);

Спасибо за любую помощь, которую вы можете предложить! TC

1 ответ

Решение

CreateNode Метод принимает любой KmlObject в качестве параметра, но вы передаете ему перечислитель одного из типов в API.

Просто создайте папку, а затем проанализируйте ее.

var folder = ge1.createFolder("test");
kmlTreeView.ParseKmlObject(folder);

Для объяснения, KmlTreeView не генерирует и не создает KmlFolders или "kml" что-либо еще - он просто отображает представление загруженных в него объектов KmlObject в виде узлов в иерархии.

"Папка", то, что вы на самом деле видите в древовидной структуре, это просто представление KmlContainer, например, KmlFolder или KmlDocument.

Еще один способ использовать KmlTreeView - просто загрузить любой объект kmlObject, который вы загружаете, в плагин, а также непосредственно в него. Обычно это тот же объект, который возвращается при вызове метода FEWCHKML в GEWebBeowser. Например.

   // load the plugin
    geWebBrowser1.LoadEmbededPlugin();

    // when the plug-in has loaded
    geWebBrowser1.PluginReady += (o, e) =>
    {
        // load the kml from the local server
        kmlTreeView1.SetBrowserInstance(e.ApiObject);
        geWebBrowser1.FetchKml("http://foo/some.kml");
    };

    // when the kml has loaded
    geWebBrowser1.KmlLoaded += (o, e) =>
    {
        // add the kml to the plugin and tree-view 
        geWebBrowser1.ParseKmlObject(e.ApiObject);
        kmlTreeView1.ParseKmlObject(e.ApiObject);
    };

Таким образом, древовидное представление будет синхронизироваться с отображением в плагине - поэтому двойной щелчок по узлам в древовидном представлении приведет вас к их расположению и т. Д.

Другие вопросы по тегам