3 votes

Comment marquer plusieurs coordonnées dans KML en utilisant Java ?

Je travaille sur un projet qui implique la création de KML en utilisant Java. Actuellement, je m'amuse avec l'exemple de code Java de l'exemple KML à l'adresse suivante Exemple de JAK des laboratoires Micromata . J'ai essayé d'"étendre" le code en ajoutant plusieurs coordonnées et en obtenant deux marqueurs, mais je n'ai pas réussi à le faire fonctionner. Pouvez-vous me dire comment je peux ajouter plusieurs coordonnées et y placer des marqueurs, et aussi, tracer une ligne entre les marqueurs. Merci de votre aide !

PS : Je dois faire cela via le programme. J'ai vu des exemples de code utilisant DOM et XML, mais pas de Java/JAK pur en tant que tel. Veuillez me guider.

Je suis arrivé jusqu'à ceci (mis à jour) :

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

Mais je sais que je fais fausse route quelque part. S'il vous plaît, indiquez-moi la bonne direction.

Voici la sortie KML qui en résulte :

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

Je ne parviens pas à accéder à nouveau au document pour ajouter d'autres repères. Comment faire ?

6voto

Markus Points 614

En gros, vous devez faire :

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

Auparavant, vous deviez créer un nouveau document et le placer (comme seul document !) dans l'objet kml. Par conséquent, seule la dernière entrée était affichée.

3voto

geocodezip Points 41746

Pour placer plus d'un repère dans un fichier KML, il faut un dossier ou un document.

Une base <kml> contient 0 ou 1 Feature

Un reportage est un élément abstrait qui peut être un Marqueur d'emplacement .

A Conteneur étend la fonctionnalité et peut être un Document ou un Dossier

Pour faire court, si vous voulez plusieurs repères, vous devez les inclure dans un document ou un dossier.

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

0voto

Guilherme Points 89

La documentation est très mauvaise.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X