ym.services.Routing
Mit Hilfe dieser Klasse können Sie Routenberechnungen durchführen.
Initialisierung
Für die Routenplanung stehen drei Klassen zur Verfügung, eine für die Berechnung einer einfachen Route (ein Zielpunkt), eine für die Berechnung mehrerer Zielpunkte (Matrix-Routenplanung) und eine für das Berechnung einer Route auf Basis einzelner GPS-Koordinaten.
Initialisierung der Klasse Routing
, MatrixRouting
und MatchRouting
:
Codebeispiel: Initialisierung Routing
// Initialisierung: einfaches Routing.
var routing = new ym.services.Routing();
// Initialisierung: Routing mit mehreren Zielpunkten
var matrixRouting = new ym.services.MatrixRouting();
// Initialisierung: Match-Routing
var matchRouting = new ym.services.MatchRouting();
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.
|
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 Fahrzeug2. BICYCLE – Fahrrad3. PEDESTRIAN – Fußgänger |
string |
FAST |
routingTimeMode |
Die Zeitangabe für das Routing 1. ARRIVAL – Ankunft2. 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}]);
MatchRouting.calcRoute(waypoints, options) ab v3.7
Parameter: waypoints
Ein Array von LatLng
-Objekten, die jeweils unterschiedliche GPS-Punkte darstellen.
Parameter: options
Die Optionen gleichen denen der Methode calcRoute
.
Rückgabe (application/json)
Der Rückgabecontainer ist vom Typ MatchRoutingResult
.
Codebeispiel: MatchRouting.calcRoute(waypoints, options) Beispielaufrufe
matchRouting.calcRoute([ym.latLng(49.021629, 8.439032), ym.latLng(49.020770, 8.438335), ym.latLng(49.019820, 8.440667)]);
matchRouting.calcRoute([[8.439032, 49.021629], [8.438335, 49.020770], [8.440667, 49.019820]]);
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}&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>