Hinweis: Sie verwenden gerade eine ältere Version unserer Dokumentation. Keine Sorge, alle Funktionen funktionieren weiterhin wie gewohnt. Um von den neuesten Beispielen, zusätzlichen Features und einer verbesserten Benutzererfahrung zu profitieren, besuchen Sie jetzt unsere neue Dokumentationsseite.
Map Matching
SmartMaps unterstützt ab Version 3.7 die Funktionalität des Map Matching. Dieses erstellt auf Basis einzelner Wegpunkte einen Routenverlauf. In diesem Beispiel können durch Klick auf die Karte die einzelnen Zwischenstandorte simuliert werden.
Das Beispiel ist vollständig; Sie können es lokal in einer Datei abspeichern und im Browser aufrufen. Sie müssen lediglich den Wert für den apiKey ersetzen.
Klicken Sie auf die Karte und erzeugen Sie mindestens zwei Wegpunkte, um die Berechnung des Match-Routings für die gewählten Punkte auszulösen. Achten Sie dabei darauf, dass die Punkte möglichst in der Nähe des Straßennetzes befinden. Für die Berechnung wird das Auto-Routing mit dem neuen Match-Routing verwendet.
<!DOCTYPE html><html><headlang="en"><metacharset="UTF-8"><title>Map Matching</title></head><body><divid="map-wrapper"><divid="waypoints"><textareaid="waypointsInput"placeholder="Wegpunkte"rows="10"readonly></textarea><spanid="waypointsInputLabel"></span></div><divid="map"style="height: 350px;"></div></div><!-- SmartMaps-API --><scriptsrc="https://www.yellowmap.de/api_rst/api/loader?libraries=free-3&apiKey={API_KEY}"></script><script>
ym.ready(function(modules){//Textfeld bestimmen, um Wegpunkte darstellen zu können:var waypointsInputTextArea = document.getElementById("waypointsInput");//Karte initialisierenvar map = ym.map("map",{
center:[49.02166,8.43942],
zoom:17,});//GeoJSON Layer für Match-Routing initalisieren und in Karte einzeichnenvar matchLayer = ym.geoJson();
matchLayer.addTo(map);//GeoJSON Layer für Wegpunkte initalisieren und in Karte einzeichnenvar waypointsLayer = ym.geoJson();
waypointsLayer.addTo(map);//Wenn Daten zu GeoJSON Layer hinzugefügt werden, Karte an Route ausrichten
matchLayer.on("add",(e)=>{if(!map.getBounds().contains(matchLayer.getBounds())){
map.fitBounds(matchLayer.getBounds());}});//Match-Routing für das Map Matching initalisierenvar matchRouting =newym.services.MatchRouting();//Match-Routing bei erfolgreicher Abfrage einzeichnen
matchRouting.on("success",function(request, response){
console.log(response);
matchLayer.clearLayers();
matchLayer.addData(response.body);});//Liste für Wegpunkte initialisierenvar waypoints =[];//Match-Routing bei Click auf Karte berechnen
map.on("click",function(e){//Koordinate des Wegpunkts bestimmen und Marker in Karte einzeichnenvar latlng = e.latlng;var marker = ym.marker(latlng).addTo(waypointsLayer);//Wegpunkt hinzufügen und ab mind. zwei Wegpunkten das Matching berechnen
waypoints.push([latlng.lng, latlng.lat]);
waypointsInputTextArea.value =JSON.stringify(waypoints);if(waypoints.length >=2){
matchRouting.calcRoute(waypoints);}});});</script></body></html>