3

我正在开发一个涉及使用 Java 创建 KML 的项目。目前,我正在使用Micromata Labs JAK Example的 KML 示例中的示例 Java 代码。我试图通过添加多个坐标并获取两个标记来“扩展”代码,但我无法让它工作。你能告诉我如何添加多个坐标并在它们上面放置标记,并且在标记之间画一条线。谢谢您的帮助!

PS:我需要通过程序来做到这一点。我看到了它们使用 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>

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

4

3 回答 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 对象中。因此,只显示了最后一个条目。

于 2013-03-13T16:59:22.353 回答
3

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

一个基本<kml>元素包含 0 或 1 个特征

Feature是一个抽象元素,可以是Placemark

容器扩展功能,可以是文档文件夹

长话短说,如果您想要多个地标,您需要将它们包含在文档或文件夹中

<kml>
  <Document>
    <Placemark>
    </Placemark>
    ...
    <Placemark>
    </Placemark>
  </Document>
</kml>
于 2012-10-03T03:36:14.227 回答
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"));
于 2015-04-14T13:10:27.147 回答