簡體   English   中英

如何使用帶有Java KML API的地標ID從文件夾中刪除KML地標?

[英]How do I delete a KML Placemark from a Folder using the placemark's ID with the Java API for KML?

我正在將Java API用於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中,您需要使用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

此問題的相關詳細信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM