Как программно создать папки 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);
};
Таким образом, древовидное представление будет синхронизироваться с отображением в плагине - поэтому двойной щелчок по узлам в древовидном представлении приведет вас к их расположению и т. Д.