如何使用Java在KML中标记多个坐标?

如何使用Java在KML中标记多个坐标?,java,kml,google-earth,jak,Java,Kml,Google Earth,Jak,我正在从事一个项目,该项目涉及使用Java创建KML。目前,我正在愚弄位于的KML示例中的示例Java代码。我试图通过添加多个坐标和两个标记来“扩展”代码,但无法使其工作。您能告诉我如何添加多个坐标并在其上放置标记,以及在标记之间画一条线吗。谢谢你的帮助 PS:我需要通过程序来完成这项工作。我看到了使用DOM和XML的示例代码,但不是纯Java/JAK。请引导我 我得到了(最新的): 但我知道我在哪里出了问题。请给我指一下正确的方向 以下是生成的KML输出: <?xml version="

我正在从事一个项目,该项目涉及使用Java创建KML。目前,我正在愚弄位于的KML示例中的示例Java代码。我试图通过添加多个坐标和两个标记来“扩展”代码,但无法使其工作。您能告诉我如何添加多个坐标并在其上放置标记,以及在标记之间画一条线吗。谢谢你的帮助

PS:我需要通过程序来完成这项工作。我看到了使用DOM和XML的示例代码,但不是纯Java/JAK。请引导我

我得到了(最新的):

但我知道我在哪里出了问题。请给我指一下正确的方向

以下是生成的KML输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
<Document>
    <name>MyMarkers</name>
    <Placemark>
        <name>Somewhere near London, UK</name>
        <open>1</open>
        <Point>
            <coordinates>-0.1298,52.700152</coordinates>
        </Point>
    </Placemark>
</Document>
</kml>

我的标记
英国伦敦附近的某个地方
1.
-0.1298,52.700152

我似乎无法再次访问文档以添加更多位置标记。如何操作?

要在KML文件中放置多个Placemark,您需要一个文件夹或文档

是一个抽象元素,可以是

扩展功能和 可以是a或a

长话短说,如果需要多个位置标记,则需要将它们包含在文档或文件夹中

<kml>
  <Document>
    <Placemark>
    </Placemark>
    ...
    <Placemark>
    </Placemark>
  </Document>
</kml>

...

基本上,您需要执行以下操作:

Document document = kml.createAndSetDocument().withName("MyMarkers");

document.createAndAddPlacemark().withName("London, UK").withOpen(Boolean.TRUE)  
    .createAndSetPoint().addToCoordinates(-0.126236, 51.500152);    

document.createAndAddPlacemark().withName("Somewhere near London,UK").withOpen(Boolean.TRUE)
    .createAndSetPoint().addToCoordinates(-0.129800,52.70‌​0152);

以前,您创建了一个新文档,并在kml对象中将其设置为(唯一的文档!)。因此,只显示了最后一个条目。

文档非常糟糕

        final Kml kml = new Kml();
        Document document = kml.createAndSetDocument();
        listForms = formDAO.getAll();
        for (Form list : listForms){
            document.createAndAddPlacemark()
            .withName(String.valueOf(list.getId()))
            .withDescription(list.toStringKML())
            .createAndSetPoint().addToCoordinates(-20.3978398, -43.5146653);
        }
        kml.setFeature(document);
        kml.marshal(new File("test.kml"));

对,但那是纯粹的KML。我想用Java创建KML的结构。正如你所看到的,我试过这么做。我添加了一个新文档,并创建了一个Placemark。如何在代码中添加第二个?您需要将第二个placemark添加到document元素,因此生成的kml具有上面指定的结构,目前您正在将其添加到kml元素,而不是document元素。我明白了。我会试试看,如果我出了问题,会告诉你的。。谢谢!:)请用您的最新版本更新您的问题,阅读评论中的代码非常困难。在我看来,您现在似乎正在创建两个名为“MyMarkers”的文档。发布生成的kml也会有所帮助。
        final Kml kml = new Kml();
        Document document = kml.createAndSetDocument();
        listForms = formDAO.getAll();
        for (Form list : listForms){
            document.createAndAddPlacemark()
            .withName(String.valueOf(list.getId()))
            .withDescription(list.toStringKML())
            .createAndSetPoint().addToCoordinates(-20.3978398, -43.5146653);
        }
        kml.setFeature(document);
        kml.marshal(new File("test.kml"));