对于不间断的问题感到抱歉,但我似乎无法掌握这个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。
如果有人能指出我正确的方向,我会很感激。
答案 0 :(得分:1)
KmlTreeView根本不会创建任何kml ...如果你将一个空的KmlFolder加载到树中,那么它就是一个空的kmlFolder。如果您随后使用KmlFolder执行某些操作,则不会更改树中的内容。
例如,如果您在创建treenode之后向该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文件加载到其中,并与插件同步。虽然您可以像这样创建单独的树节点,但它不是如何设计使用的......