Search code examples
javakmlgoogle-earthjak

How to mark multiple coordinates in KML using Java?


I'm working on a project that involves KML creation using Java. Currently, I'm fooling with the sample Java code from the KML example at Micromata Labs JAK Example. I tried to "extend" the code by adding multiple coordinates and getting two markers, but I could not get it to work. Can you please tell me how I can add multiple coordinates and put markers on them, and also, draw a line between the markers. Thank you for your help!

PS: I need to do this via the program. I saw sample code of them using DOM and XML, but not pure Java/JAK as such. Please guide me.

I got as far as this (updated):

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

But I know I'm going wrong somewhere. Please point me in the right direction.

Here is the resulting KML output:

<?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>

I can't seem to access the Document again to add more placemarks. How do I do it?


Solution

  • Basically, you need to do:

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

    Previously, you were creating a new document and setting it (as the only document!) in the kml object. Therefore, only the last entry was shown.