# Java und Javascript um Distanz über Google Maps zu berchnen



## lieschen89 (31. Okt 2011)

Hi,

ich würde gerne die km-Anzahl der Routenberechnung herausbekommen. Wie das mit javascript und html geht habe ich schon herausgefunden. Allerdings möchte ich das gerne über Java machen.
Bisher habe ich folgendes gefunden:

How to calculate driving distance with Google Maps API

Das ist der Weg, wie ich über eine html.datei einfach dann die Ausgabe auf der html-Seite der km-Anzahl bekomme.

Jetzt meine Frage: bekomme ich irgenwie diesen Aufruf über mein Javaprogramm hin, so dass ich die km-Anzahl zurück bekomme?
Ich dachte mir ich nehme den javascript Teil einfach raus und führe denn dann über Java aus. Geht das?
Wie ich Javascript über Java ausführe habe ich hier gefunden:
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 10.6 Ausführen externer Programme und Skripte

anhand diesen beiden Informationen habe ich dann folgenden Code gebastelt:

```
src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAA7j_Q-rshuWkc8HyFI4V2HxQYPm-xtd00hTQOC0OXpAMO40FHAxT29dNBGfxqMPq5zwdeiDSHEPL89A"

gDir = new GDirections();
gDir.load('from: Hauptstrasse 6 Konstanz  to: Hauptstrasse 6 Singen');
GEvent.addListener(gDir, "load", function() {
	var drivingDistanceKilometers = gDir.getDistance().meters / 1000;
	distance = drivingDistanceKilometers;
});

println(distance);
```

allerdings funktioniert der nicht.
Ich bekomme folgenden Fehler:
"ReferenceError: "GDirections" is not defined"
also geht das mit dem src = ... nicht?

kann mir vll jemand weiterhelfen und sagen wie ich das Problem am besten lösen kann?


----------



## ARadauer (31. Okt 2011)

> Ich dachte mir ich nehme den javascript Teil einfach raus und führe denn dann über Java aus. Geht das?


mhn wird nicht einfach denke ich... grundsätzlich fehlt dir ja bei deinem code noch einiges
oben im html <script src="http://maps.google.com/maps... da ist wahrscheinlich GDirections drinnen...

wenn du in die ScriptEngine dieses js file einbinden kannst... ich weiß aber nicht ob das geht...

Generell sollte es aber ohne javascript direkt über java gehen Google Maps API-Webdienste - GoogleÂ Maps API Web Services - Google Code


----------



## ARadauer (31. Okt 2011)

ja klar... ha cool... 
http://maps.google.com/maps/api/dir...Austria&destination=Wien,Austria&sensor=false einfach von der url mit Buffered reader lesen und parsen

oder json
http://maps.google.com/maps/api/dir...ustria&destination=Wien,Austria&sensor=false&


----------



## lieschen89 (31. Okt 2011)

ok, das wollte ich eigentlich umgehen, weil ich das mit dem parsen nicht so kann, aber wenn das einfacher ist probier ichs so mal, danke


----------



## ARadauer (31. Okt 2011)

naja ich bin auch nicht der große DOM/SAX xml spezialist... aber ein http://maps.google.com/maps/api/dir...ustria&destination=Wien,Austria&sensor=false& kann man schon verstehen.. ich seh gerade dass das immer die schritte sind, weiß jetzt nicht wo die summe herkommt,, aber wursch... distance tag, und daraus den value wert....


```
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class WieWeit {

	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
		String von = "Mondsee,Austria";
		String nach = "Wien,Austria";

		String urlString = "http://maps.google.com/maps/api/directions/xml?origin=" + von + "&destination=" + nach + "&sensor=false";

		DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		Document doc = builder.parse(urlString);

		NodeList nodes = doc.getElementsByTagName("distance");
		int meterSumme = 0;

		for (int i = 0; i < nodes.getLength(); i++) {
			Element distance = (Element) nodes.item(i);
			Element meter = (Element) distance.getElementsByTagName("value").item(0);
			Integer meterValue = Integer.parseInt(meter.getTextContent());

			meterSumme += meterValue;
			System.out.println("Schritt:" + (i + 1) + " " + meterValue + " m");
		}
		System.out.println("Summe: " + meterSumme);

	}

}
```

ha cool... geht sogar


----------



## ARadauer (31. Okt 2011)

ok peinlich.. stimmt nicht ganz, die letze distance ist das gesamte... naja wurscht so ungefähr...


----------



## ARadauer (31. Okt 2011)

so jetzt noch richtig...


```
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class WieWeit {

	public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
		String von = "Mondsee,Austria";
		String nach = "Wien,Austria";

		String urlString = "http://maps.google.com/maps/api/directions/xml?origin=" + von + "&destination=" + nach + "&sensor=false";

		DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		Document doc = builder.parse(urlString);

		NodeList nodes = doc.getElementsByTagName("distance");
		Element distanceElement = (Element) nodes.item(nodes.getLength() - 1);
		Element meterElement = (Element) distanceElement.getElementsByTagName("value").item(0);
		Integer meterValue = Integer.parseInt(meterElement.getTextContent());

		System.out.println("Von " + von + " nach " + nach + " sind es " + meterValue / 1000 + " km");

	}

}
```


----------



## Tomate_Salat (31. Okt 2011)

Oder doch Json nehmen und gson das parsen überlassen.


----------



## ARadauer (1. Nov 2011)

Tomate_Salat hat gesagt.:


> Oder doch Json nehmen und gson das parsen überlassen.



ja das ist auch eine möglichkeit.
überhaupt wenn man iim web berreich mas macht ist json super...
man merkkt das ich gerade von einr helloween party heim mkomme ???:L


----------



## Tomate_Salat (1. Nov 2011)

ARadauer hat gesagt.:


> man merkkt das ich gerade von einr helloween party heim mkomme ???:L



Ja, leicht . Frohes rauschausschlafen


----------



## lieschen89 (2. Nov 2011)

wow, hey, super danke. So klappts wunderbar


----------

