【问题标题】:How do I delete a KML Placemark from a Folder using the placemark's ID with the Java API for KML?如何通过 Java API for KML 使用地标 ID 从文件夹中删除 KML 地标?
【发布时间】:2013-08-21 01:18:07
【问题描述】:

我正在使用 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;
        }
    }        

【问题讨论】:

    标签: java api kml jak


    【解决方案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
    

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

    【讨论】:

    • 注明。不过,这与我的问题无关。我想知道一种从文件夹/文档中删除地标的方法,而不是如何正确比较字符串。
    • 用代码示例更新了答案,通过其 ID 删除文件夹。
    猜你喜欢
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多