2013-08-21 60 views
0

我正在使用KML,JAK的Java API來構建KML文件。我希望能夠使用它的ID刪除一個功能,但我還沒有找到一個很好的例子來說明如何去做。理想情況下,代碼將是「myFolder.deleteFeatureById(theID);」,但事實並非如此。有沒有比以下更好的方法?如何使用帶有Java API的地標標識從KML文件夾中刪除KML地標?

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

回答

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 

相關信息:

+0

注意到。但這與我的問題無關。我想知道如何從文件夾/文檔中刪除地標,而不是如何正確比較字符串。 –

+0

使用代碼示例更新答案,該代碼示例通過其ID刪除文件夾。 – JasonM1