使用C#winforms-ge-plugin我正在搜索协议找到它们时,将wi-fi热点添加到ge globe和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
答案 0 :(得分:1)
CreateNode
方法将任何KmlObject作为其参数,但是您将其传递给api中某个类型的枚举器。
只需创建文件夹,然后解析它。
var folder = ge1.createFolder("test");
kmlTreeView.ParseKmlObject(folder);
为了解释,KmlTreeView不生成或创建KmlFolders,或者“kml”任何其他内容 - 它只显示作为层次结构中的节点加载到其中的KmlObjects的视图。
'tree',你实际在树视图中看到的东西,只是KmlContainer的表示,例如KmlFolder或KmlDocument。
使用KmlTreeView的另一种方法是将加载到插件中的任何kmlObject直接加载到其中。这通常是从对GEWebBeowser的FetchKml方法的调用返回的相同对象。例如。
// 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);
};
这样树视图将与插件中的显示同步 - 因此双击树视图中的节点会将您带到他们的位置等。