ym.services.Routing

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:

Codebeispiel: Initialisierung Routing

// 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
type Erlaubt das Festlegen, welche Routing Option genutzt werden soll.
  • ROUTE - Berechnung einer einfachen Route mit Start und Ziel und Zwischenzielen.
  • TRIP - Optimiert von einem Startpunkt (erste Koordinate) zu mehreren Zielen.
    • Durch Setzen der Option: routingRoundTrip auf true, wird festgelegt, dass am Ende nochmals der Startpunkt angefahren wird.
  • ISOCHRONE - Berechnung einer Fläche, die von einem Startpunkt (Erste Koordinate) in einer bestimmten Zeit oder Wegstrecke angefahren werden kann.
    • Option timeInMinutes: Zeit in Minuten, in dem sich das Objekt fortbewegen kann. Kann Werte von >0 bis 60 annehmen. Es kann entweder timeInMinutes oder distanceInMeters übergeben werden.
    • Option distanceInMeters: Wegstrecke in Metern, in dem sich das Objekt fortbewegen kann. Es kann entweder timeInMinutes oder distanceInMeters übergeben werden.
    • Option isochroneGrid: Definiert die Feinheit des Polygons, das berechnet wird. Umso höher die Werte, umso feiner ist das Polygon. Kann Werte von 35 bis 150 annehmen.
string ROUTE
timeInMinutes Nur für den Typ ISOCHRONE. Zeit in Minuten, in dem sich das Objekt fortbewegen kann. Kann Werte von >0 bis 60 annehmen. Es kann entweder timeInMinutes oder distanceInMeters übergeben werden. double null
distanceInMeters Nur für den Typ ISOCHRONE. Wegstrecke in Metern, in dem sich das Objekt fortbewegen kann. Es kann entweder timeInMinutes oder distanceInMeters übergeben werden. double null
isochroneGrid Nur für den Typ ISOCHRONE. Definiert die Feinheit des Polygons, das berechnet wird. Umso höher die Werte, umso feiner ist das Polygon. Kann Werte von 35 bis 150 annehmen. number null
isoLocale Das Locale setzt sich zusammen aus Sprache (ISO-639) und Land (ISO-3166-2). 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

Aufruf

Codebeispiel: Routing.calcRoute(waypoints, options) Beispielaufrufe

routing.calcRoute([[49.0, 10.0], [49.0, 9.0]]);
routing.calcRoute([ym.latLng(49.0, 10.0), ym.latLng(49.0, 9.0)]);
routing.calcRoute([{lat: 49.0, lng: 10.0}, {lat: 49.0, lng: 9.0}]);

MatrixRouting.calcRoute(startpoint, waypoints, options) ab v3

Parameter: startpoint

Ein LatLng-Objekt. Der Punkt markiert den Startpunkt.

Parameter: waypoints

Ein Array von LatLng-Objekten, die jeweils unterschiedliche Zielpunkte darstellen.

Parameter: options

Die Optionen gleichen denen der Methode calcRoute.

Rückgabe (application/json)

Der Rückgabecontainer ist vom Typ MatrixRoutingResult.

Codebeispiel: MatrixRouting.calcRoute(waypoints, options) Beispielaufrufe

matrixRouting.calcRoute(ym.latLng(43.1, 10.1), [ym.latLng(49.1, 10.1), ym.latLng(49.1, 9.1)]);
matrixRouting.calcRoute({lat: 43.1, lng: 10.1}, [{lat: 49.1, lng: 10.1}, {lat: 49.1, lng: 9.1}]);

Events

routing.on('success', function (request, response) {
	// Work
});
 
routing.on('error', function (request, response) {
	// Work
});

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.

Codebeispiel: MatrixRouting.calcRoute(waypoints, options) Beispielaufrufe

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Routing example</title>
	<!-- SmartMaps Style -->
    <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();

        // First create a routing layer instance. You will see here 
        // the complete logic to create a route with waypoints.
        routingLayer = ym.geoJson(null, {
            style: function (feature) {
                // Draw the routing polyline. For more information about 
                // GeoJSON features and geometry, see: 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 of the starting point.
			onEachFeature: function(feature, layer) {
				if (feature.properties && feature.properties.description) {
					layer.bindPopup(feature.properties.description);
				}
			},

            pointToLayer: function (feature, latlng) {
                // Draw the waypoint markers above the polyline route. You have 
                // Description and orientation information is available in the properties 
// for a more detailed output. 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); // From Frankfurt to Karlsruhe on foot. 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) { // Now you can redraw. var route = response.body; var features = response.body.features; console.log(response.body); route.features = []; route.features.push(features[0]) // Starting point route.features.push(features[features.length-2]) // Destination // The last feature contains the route line: route.features.push(features[features.length-1]) // Route line console.log(route); routingLayer.addData(route); }); }); </script> </body> </html>