1. Home
  2. Dokumente
  3. Karten
  4. Routenplanung

Routenplanung

Beschreibung

Mit Hilfe dieser Klasse können Sie Routenberechnungen durchführen.

Initialisierung

Für die Routenplanung stehen zwei Klassen zur Verfügung, eine für die Berechnung einer einfachen Route (ein Zielpunkt) und eine für die Berechnung mehrerer Zielpunkte (Matrix-Routenplanung).

Initialisierung der Klasse Routing und MatrixRouting:

// Initialisierung: einfaches Routing.
var routing = new ym.services.Routing();

// Initialisierung: Routing mit mehreren Zielpunkten.
var matrixRouting = new ym.services.MatrixRouting();

Methoden

Routing.calcRoute(waypoints, options) ab v3

Parameter: waypoints

Ein Array von LatLng-Objekten. Der erste Punkt markiert den Start, der letzte das Ziel. Die dazwischen liegenden Punkte werden als Wegpunkte interpretiert, über die die Wegstrecke verlaufen soll.

Parameter: options
Name Beschreibung Datentyp Standardwert
isoLocale Das Locale setzt sich zusammen aus Sprache (ISO-639) und Land (ISO-3166). string ym.options.locale
coordFormatOut Das Koordinatenformat ist standardmäßig GEODECIMAL_POINT, was dem Format CRS84 entspricht. Des Weiteren gibt es noch das Format MERCATOR, welches EPSG:3857 gleicht. string GEODECIMAL_POINT
channel Eine Zeichenfolge, die protokolliert wird; sie kann vom Benutzer frei gewählt werden. string
speedProfile Das Geschwindigkeitsprofil:
1. FAST – schnelles Fahrzeug
2. BICYCLE – Fahrrad
3. PEDESTRIAN – Fußgänger
string FAST
routingTimeMode Die Zeitangabe für das Routing
1. ARRIVAL – Ankunft
2. DEPARTURE – Abfahrt
string ARRIVAL
Rückgabe (application/json)

Der Rückgabecontainer ist vom Typ RoutingResult.

Beispielaufrufe
let routingResult1 = routing.calcRoute([[49.0, 10.0], [49.0, 9.0]]);
let routingResult2 = routing.calcRoute([ym.latLng(49.0, 10.0), ym.latLng(49.0, 9.0)]);
let routingResult3 = routing.calcRoute([{lat: 49.0, lng: 10.0}, {lat: 49.0, lng: 9.0}]);

MatrixRouting.calcRoute(waypoints, options) ab v3

Parameter: waypoints

Ein Array von LatLng-Objekten. Der erste Punkt markiert den Start, die weiteren Punkte stellen unterschiedliche Zielpunkte dar.

Parameter: options

Die Optionen gleichen denen der Methode calcRoute.

Rückgabe (application/json)

Der Rückgabecontainer ist vom Typ MatrixRoutingResult.

Beispielaufrufe
let matrixRoutingResult1 = matrixRouting.calcRoute([[49.0, 10.0], [49.0, 9.0]]);
let matrixRoutingResult2 = matrixRouting.calcRoute([ym.latLng(49.0, 10.0), ym.latLng(49.0, 9.0)]);
let matrixRoutingResult3 = matrixRouting.calcRoute([{lat: 49.0, lng: 10.0}, {lat: 49.0, lng: 9.0}]);

Testszenario

Dieses Beispiel ist vollständig; Sie können es lokal speichern und in einem http-Kontext ausführen. Sie müssen lediglich den Wert für apiKey vorher ersetzen.

Im Beispiel wird eine Route zwischen Frankfurt und Karlsruhe berechnet, wobei als Geschwindigkeitsprofil PEDESTRIAN (Fußgänger) gewählt wird. In diesem Fall wird bewusst nur der Start- und Endpunkt und die Routenlinie eingeblendet. Die Farbe, Dicke und der Deckungsgrad der Route werden festgelegt.

Beachten Sie, dass das letzte Feature-Element die Routenlinie enthält.

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Routing example</title>
	<!-- SmartMaps Style-Angaben -->
    <link href="https://www.yellowmap.de/Presentation/Yellowmaps/Examples/assets/site.css" rel="stylesheet">
    <link rel="stylesheet" href="https://www.yellowmap.de/api_js/cdn/highlight/styles/github.css">
	<style>
		.leaflet-control-zoom-in {color: red !important;}
		.leaflet-control-zoom-out {color: blue !important;}
	</style>
</head>
<body>
	<div id="map-wrapper">
    <div id="map"></div>
</div>
<script src="https://www.yellowmap.de/api_rst/api/loader?apiKey={API_KEY}&amp;libraries=enterprise-3"></script>
<script>
    var routingLayer, map;
	var rootUrl = ym.options.rootUrl;
	
    ym.ready({
        locale: "de-DE",
        rootUrl: rootUrl
    }, function (modules) {
        var routing = new ym.services.Routing();

        // Legen Sie zunächst eine Routing-Layer-Instanz an. Sie sehen hier 
        // die komplette Logik, um eine Route mit Wegpunkten zu erstellen.
        routingLayer = ym.geoJson(null, {
            style: function (feature) {
                // Zeichnen Sie die Routing-Polylinie. Um mehr Informationen über 
                // GeoJSON-Features und -Geometry zu erhalten, siehe: http://geojson.org/
                if (feature.geometry.type === "LineString") {
		    // Um die Linie unsichtbar zu machen, setzen Sie weight auf 0.
                    return {weight: 5, opacity: 0.8, color:'#406291'};
                }
            },
			// Popup des Startpunktes.
			onEachFeature: function(feature, layer) {
				if (feature.properties && feature.properties.description) {
					layer.bindPopup(feature.properties.description);
				}
			},

            pointToLayer: function (feature, latlng) {
                // Zeichnen Sie die Wegpunktmarkierungen über der Polylinien-Route. Sie haben 
                // Ihnen stehen Beschreibungs- und Orientierungsinformationen in den Eigenschaften 
                // für eine detailliertere Ausgabe zur Verfügung.
                return ym.circleMarker(latlng, {
					  radius: 12,
					  fillColor: "#990000",
					  color: "#ffffff",
					  weight: 1,
					  opacity: 1,
					  fillOpacity: 0.8
					});
            }
        });

        map = ym.map("map", {
            center: [49.001, 8.417],
            zoom: 12
        });
        map.addLayer(routingLayer);
		
		// Von Frankfurt nach Karlsruhe zu Fuß.
        var latlngs = [];
		latlngs.push(ym.latLng(50.095685, 8.690445));
		latlngs.push(ym.latLng(49.00162,8.39905));
        routing.calcRoute(latlngs, {speedProfile: 'PEDESTRIAN'});

        routing.on("success", function (request, response) {
            // Jetzt kann neu gezeichnet werden.
            var route = response.body;
            var features = response.body.features;
            console.log(response.body);
			
            route.features = [];
            route.features.push(features[0]) // Startpunkt
            route.features.push(features[features.length-2]) // Ziel
            // Das letzte Feature enthält die Routenlinie:
            route.features.push(features[features.length-1]) // Routenlinie
            console.log(route);
            routingLayer.addData(route);
        });

    });
</script>

</body>
</html>

Weitere Informationen

Beispielszenarios

Wie können wir helfen?