0

我正在使用 Java API for KML、JAK 来构建 KML 文件。我希望能够使用其 ID 删除功能,但我还没有找到一个很好的示例来说明如何执行此操作。理想情况下,代码应该是“myFolder.deleteFeatureById(theID);”,但事实并非如此。有没有比以下更好的方法?

List<Feature> features = myFolder.getFeature();
    for(int i=features.size()-1; i>=0; i--)
    {
        if(features.get(i).getId() == "myId")
        {
            features.remove(i);
            break;
        }
    }        
4

1 回答 1

1

在 Java 中,您需要使用 String.equals() 方法而不是逻辑==运算符来比较字符串。

==检查两件事是否完全相同,而不是检查它们是否具有相同的内容,因此某些字符串比较可以相等(相同的字符串),但使用==.

以下应该工作。

List<Feature> features = myFolder.getFeature();
for(int i=features.size()-1; i >= 0; i--)
{
    if("myId".equals(features.get(i).getId()))
    {
        features.remove(i);
        break;
    }
}

这里使用 JAK API 的示例代码在文件夹中创建两个地标,然后通过其 ID 删除一个。

    final Kml kml = new Kml();
    final Folder folder = new Folder();
    kml.setFeature(folder);

    folder.setName("Folder.kml");
    folder.setOpen(true);

    final Placemark placemark1 = new Placemark().withId("1")
        .withName("Folder object 1 (Placemark)");
    folder.getFeature().add(placemark1);

    final Placemark placemark2 = new Placemark().withId("2")
        .withName("Folder object 2 (Placemark)");
    folder.getFeature().add(placemark2);

    List<Feature> features = folder.getFeature();
    System.out.println(features); // dumps two features     

    for(int i=features.size()-1; i >= 0; i--)
    {
        Feature f = features.get(i);
        if("1".equals(f.getId()))
        {
            // this removes feature with id = "1"
            features.remove(i);
            break;
        }
    }

    System.out.println(features); // folder now only has one item

关于这个问题的相关细节:

于 2013-08-21T14:07:23.970 回答