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

3

我正在进行一个使用Java创建KML文件的项目。目前,我正在使用Micromata Labs JAK Example中的示例Java代码进行尝试。我尝试通过添加多个坐标并获取两个标记来“扩展”代码,但是我无法使其工作。请问您如何在代码中添加多个坐标、将标记放置在它们上面,并在标记之间绘制一条线。感谢您的帮助!

附注:我需要通过程序完成这个操作。我看到了他们使用DOM和XML的示例代码,但没有纯Java / JAK的示例。请指导我。

我已经做到了这一步(已更新):

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

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

但是我知道我在某个地方做错了。请指出我正确的方向。

以下是生成的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>

我似乎无法再次访问文档以添加更多的地标。我该怎么做?

3个回答

6
基本上,你需要做的是:
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对象中的唯一文档!因此,只显示了最后一条记录。


3

没错,但那是纯KML。我想在Java中创建KML的结构。正如你所看到的,我尝试过了。我添加了一个新文档,并创建了一个Placemark。我该如何在代码中添加第二个? - CodingInCircles
你需要将第二个标记添加到文档元素中,以便生成的KML具有如上所述的结构。目前,您正在将其添加到KML元素而不是文档元素中。 - geocodezip
我明白了。我会试一下,如果有问题我会告诉你的。谢谢! :) - CodingInCircles
请更新您的问题,包括最新版本,评论中发布的代码很难阅读。在我看来,您现在正在创建两个名称均为“MyMarkers”的文档。同时发布生成的KML文件将会很有帮助。 - geocodezip

0

文档非常糟糕。

        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"));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接