1

使用 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

4

1 回答 1

1

CreateNode方法将任何 KmlObject 作为其参数,但您将其传递给 api 中一种类型的枚举器。

只需创建文件夹,然后解析它。

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

解释一下,KmlTreeView 不会生成或创建 KmlFolders,或“kml”任何其他东西 - 它只是显示加载到其中的 KmlObjects 的视图,作为层次结构中的节点。

“文件夹”,即您在树视图中实际看到的东西,只是 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);
    };

这样,树视图将与插件中的显示同步 - 因此双击树视图中的节点会将您带到它们的位置,等等。

于 2012-12-05T04:57:15.733 回答