Routing-Engine anpassen
In einigen Fällen möchten Sie das Routing-Erlebnis von OsmAnd erweitern oder anpassen, damit Sie zusätzliche Parameter, zusätzliche Hindernisse oder einige Strafen hinzufügen können. Bitte werfen Sie einen Blick auf routing.xml. Das OsmAnd-Routing verwendet einen bidirektionalen A*-Algorithmus, der auf der schnellsten Zeit basiert (= Distanz/(Geschwindigkeit*Priorität) + Strafen). Es ist ein ziemlich einfaches Format. Es ist in 7 Abschnitte (Bewertungsgruppen) unterteilt:
- access (1 erlauben, -1 nicht erlauben)
- speed (Zahl, die die Geschwindigkeit in km/h angibt)
- priority (Zahl zwischen 0 und 1) - ein Multiplikator für die Geschwindigkeit und ist immer noch an maxSpeed gebunden, so dass Minimum (Geschwindigkeit * Multiplikator, maxSpeed) für A* verwendet wird
- oneway (1, -1 oder 0) - wird verwendet, um den Zugang basierend auf der Bewegungsrichtung zu klären
- penalty_transition (Strafe in Sekunden) - wird verwendet, um eine Strafe zu definieren, wenn der Benutzer von einer Straße hoher Klasse zu einer Straße niedriger Klasse wechselt. Zum Beispiel Autobahn - 10, Fernstraße - 15, wenn der Benutzer von der Autobahn zur Fernstraße wechselt, beträgt die Strafe 5 Sekunden (=10 - 15). Diese Strafe wird vom A*-Algorithmus verwendet. Es gibt keine Strafe, wenn der Benutzer von der Autobahn zur Fernstraße wechselt und es gibt keine Strafe, wenn die Route von der Autobahn zur Autobahn fortgesetzt wird.
- obstacle (Strafe in Sekunden) - definiert eine Strafe, die zur Routing-Zeit hinzukommt
- obstacle_time (Strafe in Sekunden) - definiert eine Strafe, die dem Benutzer angezeigt wird, aber nicht vom Routing-Engine berücksichtigt wird, d.h. obstacle_time - 2 Stunden, obstacle - 1 Minute, auf der kürzesten Route findet das Engine eine Route unter Verwendung des 1-Minuten-Hindernisses, aber der Benutzer sieht, dass die Routenzeit 2 Stunden beträgt.
Um routing.xml zu testen, können Sie OsmAndMapCreator verwenden. Um routing.xml auf dem Gerät zu testen, können Sie einfach die Standard-routing.xml im Stammordner von OsmAnd auf der SD-Karte ersetzen.