我正在使用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;
}
}
答案 0 :(得分: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
此问题的相关详情: