Java und Javascript um Distanz über Google Maps zu berchnen

lieschen89

Aktives Mitglied
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:
Code:
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?
 
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
 
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....

Java:
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
 
so jetzt noch richtig...

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

	}

}
 

Zurück
Oben