0

很抱歉一直有问题,但我似乎无法掌握这个 API。

这似乎是一个非常简单的操作,但我无法弄清楚。

我在 PluginReady() 回调中创建了一个文件夹:

    folder = ge1.createFolder("Sites");
    folder.setName("Sites");
    kmlTreeView1.ParseKmlObject(folder);

创建文件夹后,我等待数据进入,这将在该文件夹中创建一个地标。当该数据到达时,我创建一个地标,然后尝试将其放入 kmltreeview 'Sites' 文件夹中:

    //kmlTreeView1.ParseKmlObject(placemark);
    KmlTreeViewNode node = kmlTreeView1.GetNodeById("Sites");
    node.ApiObject.getFeatures().appendChild(placemark);
    ge1.getFeatures().appendChild(node.ApiObject);

我相信地标在文件夹中,因为当我双击文件夹时,会弹出一个指向地标的气球。但是,该文件夹没有加号表示其中有内容。kmltreeview1 属性“ShowPlusMinus”设置为 true。

如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

1

KmlTreeView 根本不会创建任何 kml...如果您将一个空的 KmlFolder 加载到树中,那么它就是一个空的 kmlFolder。如果您随后对 KmlFolder 执行某些操作,则不会更改树中的内容。

例如,如果您在从它创建树节点后将功能添加到同一个 KmlFolder,它们将不会显示在树视图中 - 因为您尚未将它们添加到树视图中,所以您已将它们添加到 KmlFolder。

在您的示例中,您必须从树中删除空站点节点。然后根据包含一些内容的文件夹创建一个新节点,然后将其添加回树中。

KmlTreeViewNode node = kmlTreeView1.GetNodeById("Sites"); // get the empty node you added to the tree
node.ApiObject.getFeatures().appendChild(placemark); // get the KmlFolder and add a placemark
ge1.getFeatures().appendChild(node.ApiObject); // add the KmlFolder and features to the plugin
kmlTreeView1.Nodes.RemoveByKey("sites"); // remove the empty node from the tree...
kmlTreeView1.ParseKmlObject(node.ApiObject); // add the KmlFolder that contains your placemark

附带说明 - KmlTreeView 本质上旨在将 KML 文件加载到其中,并与插件同步。虽然您可以像这样创建单个树节点,但这并不是它的设计用途......

于 2012-12-07T03:03:59.297 回答