Die Datei navit.xml

Übersicht

  • Vorwort
  • Voraussetzungen
  • Syntax
  • Einleitung
  • Tags
  • Absätze und Einrückungen
  • Kommentare verwenden
  • Das Grundgerüst der Datei navit.xml
  • Das Objekt <navit>
  • Einstellungen für das Menü
  • Für Profis: Debug-Dateien aufzeichnen
  • OSDs werden weiter unten beschrieben
  • Das Objekt <vehicle>
  • Fahrzeuge und andere Fortbewegungsmittel definieren und anpassen
  • Geschwindigkeiten mit <roadprofile> anpassen
  • <route destination_distance>
  • Sprachansagen einstellen
  • OSD-Karten in Navit einbinden
  • Zwischenbemerkungen
  • OSDs die zweite
  • Allgemeine Parameter bei OSDs
  • Höhe über den Meeresspiegel anzeigen
  • Aktuelle Geschwindigkeit
  • Maximal erlaubte Geschwindigkeit
  • Warnungen bei überhöhter Geschwindigkeit
  • Kompass mit Schaltfunktion
  • Straßennummer und -name, auf der man sich befindet
  • Aktuelle Koordinaten
  • Anzahl genutzter und sichtbarer Satelliten und die Satellitenzeit
  • OSDs für die Navigation (zusammengefasst)
  • Kartenmaßstab (Scala)
  • Warnung vor stationären Blitzern
  • Sprachansagen aus- und einschalten
  • Odometer, weitere Armaturen zur aktuellen Fahrt
  • Layouts, das Aussehen der Karte anpassen und verändern
  • Grundlegender Syntax für Layouts
  • Elemente, um in Layouts etwas darzustellen
  • Layout zum Download
  • Feedback
  • Vorwort

    In der Datei navit.xml kann man so ziemlich alles einstellen, was mit Navit zu tun hat. Das ist ein sehr umfangreiches Thema, dass ich hier nur kurz anschneiden möchte. Ausführlichere Informationen findet Ihr auf den Wiki_Seiten des Navit-Projekts.

    Man sollte immer eine Sicherheitskopie der funktionierenden navit.xml haben. Manchmal klappt die eine oder andere Änderung der Datei navit.xml nicht und Navit startet dann nicht mehr vollständig oder fehlerhaft. Und jeder Mensch macht Fehler, sonst wäre er kein Mensch.

    Ich empfehle, immer nur kleine Veränderungen an der navit.xml vorzunehmen und diese erst mal zu testen, bevor es an das nächste Thema geht. So erkennt man schnell die Änderung und versteht besser, was man gemacht hat.

    Eine kurze Übersicht über Befehle und Parameter findet Ihr auf dieser Seite vom Navit-Team.

    Auf dieser Seite stelle ich die Befehle in extra Absätzen, so könnt Ihr diese kopieren und bei Euch einfügen, ich hoffe, das funktioniert reibungslos. Das wird von mir ausdrücklich erlaubt. Ich hafte aber nicht für Fehler.

    Ich werde nicht die kompletten Möglichkeiten der Einstellungen erläutern, weil ich nicht alle kenne. Da gibts mehr Hilfe auf den o.g. Links.

    Die Beispiele auf dieser Seite sollen nicht auswendig gelernt werden. Diese Seite soll eher ein Nachschlagewerk für die navit.xml sein. Deshalb setze ich entsprechende Anker, um zu zusammenhängende Sachen schnell springen zu können. Und nach jedem Absatz geht es:

    zur Übersicht

    Voraussetzungen

    Um die Datei navit.xml bearbeiten zu können, benötigt man nur einen Texteditor, der bei jedem Betriebssystem vorinstalliert ist. Ich empfehle einen Editor, der Syntaxhervorhebungen beinhaltet, d.h. einzelne Befehle werden in verschiedenen Farben dargestellt. So erkennt man schnell, dass man etwas vergessen hat (Anführungszeichen oder andere Zeichen). Das erleichtert die Fehlersuche. Ich sage jetzt nicht, welcher der Beste ist, solche Editoren gibt es wie Sand am Meer.

    Nutzt man Navit auf einem mobilen Gerät, ist es sinnvoll, die navit.xml auf einen externen Rechner zu kopieren, zu bearbeiten und wieder zurück zu kopieren. Das Bearbeiten einer XML-Datei mit einem Touch-Screen ist nicht einfach.

    zur Übersicht

    Grundlegender Syntax

    Einleitung

    Grundsätzlich wird in der Sprache XML geschrieben, die sehr an HTML angelehnt ist. Dabei werden Objekte, sogenannte Tags, definiert und Parameter übergeben. Am Anfang sieht das für viele wie Kaulderwelsch aus, aber wenn man genauer hinsieht, ergibt sich eine gewisse Logik. Ich stelle mal ein kleines, lächerliches Beispiel hier hin, aber bitte nicht kopieren:

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE config SYSTEM "navit.dtd">
    <config xmlns:xi="http://www.w3.org/2001/XInclude">

        <Lebewesen typ="Mensch" galaxie="Milchstrasse" stern="Sonne">
            <fortpflanzung typ="sexuell" geschlecht="männlich" />
            <planet name="Erde">
                <ort land="Deutschland" stadt="Müllershausen" strasse="Hauptstrasse" hausnummer="12" />
                <nachname wert="Meyer" titel="Professor" />
                <vorname wert="Karl-Heinz" />
                <beruf wert="Feuerwehrmann" dienstgrad="Brandmeister" />
                <fahrzeug typ="PKW" marke="Trabbi" farbe="Gelb" beschreibung="Postpappe" maxspeed="120" />
            </planet>
        </Lebewesen>

    </config>

    In diesem nicht ganz ernstzunehmenden Beispiel kann man erkennen, dass man mit ein paar Bytes irgend einem Lebewesen im Universum Informationen über Karl-Heinz Meyer zukommen lassen kann und dieses dann in der Lage ist, Herrn Meyer zu besuchen und ein paar Zündkerzen für die Rennpappe mitzubringen.

    Navit benötigt auch eine gewisse Menge an Informationen. Deshalb bietet sich XML hier an. Viele würden gern in Navit in irgend einem Menü ihre unzähligen Einstellungen vornehmen. Wenn man aber in Navit für jeden Parameter ein Untermenü hinzufügen würde, bräuchte das eine Unmenge an Programmcode. Navit wäre dann nicht mehr so kompakt wie jetzt (derzeit 6.6 MB). Und das alles, um ein oder zwei mal was einzustellen?

    Die erste Zeile gibt an, dass es sich um eine XML-Datei der Version 1.0 handelt. Der Zeichensatz ist UTF-8.

    Die nächste Zeile deklariert den Dokumententyp mit Angabe einer Datei, gegen diese die XML-Datei validirbar ist (Gültigkeitsprüfung).

    Als nächstes folgt ein config-Tag, innerhalb dessen alle anderen Objekte definiert werden.

    Da ich hier keine komplette XML-Datei darstelle und um mir eine Unmenge an Schreibarbeit zu ersparen, werde ich in folgenden Beispielen die Deklarationen und den config-Tag weglassen. In der Datei navit.xml müssen diese jedoch vorhanden sein.

    Tags

    Tags kann man als Objekte ansehen, die gewisse Eigenschaften (Attribute) besitzen.

    Ein Tag muss immer eröffnet und geschlossen werden.

    <Lebewesen>

    </Lebewesen>

    Tags können Eigenschaften (Attribute) besitzen, dessen Werte in Anführungszeichen deklariert werden.

    <Lebewesen kann_bewegen="ja" muss_essen="ja" muss_trinken="ja">

    </Lebewesen>

    Inline-Tags

    Innerhalb eines Tags können weitere Tags definiert werden, die nur innerhalb des übergeordneten Tags gültig sind.

    <Lebewesen kann_bewegen="ja" muss_essen="ja" muss_trinken="ja">

        <Vogel beine="2" kann_fliegen="1" kann_laufen="1">
        </Vogel>

        <Saeugetier kann_fliegen="0" kann_laufen="1">
        </Saeugetier>

    </Lebewesen>

    Die Tags Vogel und Saeugetier sind nur innerhalb des Tags Lebewesen gültig. Für beide gelten die übergeordneten Attribute bewegen, muss_essen und muss_trinken.

    Das Attribut kann_fliegen hat bei beiden Inline-Tags unterschiedliche Werte. Das nutzt Navit zum Beispiel, um mit verschiedenen Fahrzeugtypen eine Navigation zu berechnen.

    Enthält ein Tag keine weiteren Inline-Tags, kann es direkt bei der Eröffnung wieder geschlossen werden (muss aber nicht). Das geschieht mit einem Schrägstrich vor >. Angeblich ist für den Parser (Interpreter) ein Leerzeichen vor diesem Schrägstrich hilfreich. Diese Meinung lasse ich mal so stehen.

    <Lebewesen kann_bewegen="ja" muss_essen="ja" muss_trinken="ja">

        <Vogel beine="2" kann_fliegen="1" kann_laufen="1">
            <Wellensittich farbe="gelb-gruen" />
            <Meise ueberwintert="1" />
        </Vogel>

        <Saeugetier kann_fliegen="0" kann_laufen="1">
            <Hund beine="4" haende="0"></Hund>
            <Mensch beine="2" haende="2" />
        </Saeugetier>

    </Lebewesen>

    Absätze und Einrückungen

    Dem Parser (Software, die die XML-Datei interpretiert) ist es egal, wie viele Leerzeichen oder Zeilenenden oder Tabs eingegeben wurden.

    Das gibt uns die Möglichkeit, die Datei in einem gewissen Format zu strukturieren und damit eine Übersichtlichkeit zu erhalten. Das letzte Beispiel könnte auch so aussehen:

    <Lebewesen kann_bewegen="ja" muss_essen="ja" muss_trinken="ja"><Vogel beine="2" kann_fliegen="1" kann_laufen="1"><Wellensittich farbe="gelb-gruen"><Meise ueberwintert="1" />
        </Vogel> <Saeugetier kann_fliegen="0" kann_laufen="1"><Hund beine="4" haende="0"></Hund><Mensch beine="2"
    haende="2" /></Saeugetier></Lebewesen>

    Das würde funktionieren. Allerdings ist mir ein winziger Fehler unterlaufen, der die XML-Datei unbrauchbar macht. Viel Spaß bei der Suche. Die Lösung steht ganz am Ende der Seite.

    zur Übersicht

    Kommentare

    Da die Datei navit.xml sehr umfangreich werden kann, empfehle ich, Kommentare zu benutzen und nicht, damit zu sparen. Das ist sehr hilfreich, um sich in der Datei zu orientieren. Man kann die Suchfunktionen des Editors besser nutzen.

    Kommentare werden mit den Zeichen <!-- eingeleitet und mit --> beendet. Der so eingebetter Quellcode wird vom Interpreter nicht übersetzt und kostet auch keine Zeit.

    Beispiel für ein einzeiligen Kommentar:

    <!-- Das ist ein einzeiliger Kommentar, um sich in der Datei zu orientieren. -->

    Beispiel für ein mehrzeiligen Kommentar:

    <!-- Das ist ein Kommentar, der über mehrere Zeilen geht.
        Hier kann man weitere Infos kommentieren, um später nachlesen zu
        können, was man da erreichen wollte.
        erstellt: 2015_03_01 - Karl-Heinz Meyer
        geaendert: 2015_03_03 - Udo Meyer (Forstwege in der Ansicht hinzu)
    -->

    Wie man sehen kann, interessiert dem Interpreter kein Enter-Zeichen oder Leer- bzw. Tab-Zeichen. Somit ist man in der Lage, durch Einrücken, Kommentieren und Leerzeilen die Datei übersichtlich zu halten.

    Man ist mit dem Auskommentieren schnell in der Lage, das ein kleiner Abschnitt in der Datei navit.xml nicht gelesen werden soll (Ausblenden). Allerdings sind Kommentare innerhalb Kommentare nicht erlaubt.

    zur Übersicht

    Das Grundgerüst der Datei navit.xml

    <config>

        <plugins>
            <plugin />
        </plugins>

        <debug />

        <navit>
            <!-- Innerhalb des Tags <navit> werden alle anderen Tags notiert -->

            <!-- Angaben zum Grafiksystem -->
            <graphics />

            <!-- Angaben zun Interface (Fensterverhalten) -->
            <gui />

            <!-- Fehler und Konsolenausgaben in Datei speichern (Fehlersuche) -->
            <log />

            <!-- Armaturen anlegen -->
            <osd />

            <!-- Angaben zur (zu den) GPS-Datenquelle(n) -->
            <vehicle>
              <log />
            </vehicle>

            <!-- GPS-Daten-Korrekturverhalten -->
            <tracking />

            <!-- Fahrzeuge und deren Eigenschaften -->
            <vehicleprofile>
              <roadprofile>
                  <announcement />
              </roadprofile>
            </vehicleprofile>

            <!-- Wann gilt Ziel erreicht? -->
            <route />

            <!-- Wann soll Navit welche Sprachausgabe erzeugen? -->
            <navigation>
              <announce />
            </navigation>

            <!-- Zu welcher Text-To-Engine-Software soll Navit Sprachausgaben senden -->
            <speech />

            <!-- Kartenmaterial verwenden -->
            <mapset>
              <map (oder maps) />
            </mapset>

            <!-- Was soll wie in der Karte dargestellt werden -->
            <layout>
              <!-- Eigener Standort -->
              <cursor>
                  <itemgra>
                      <circle>
                          <coord />
                      </circle>
                      <polyline>
                          <coord />
                      </polyline>
                  </itemgra>
              </cursor>
              <!-- alle anderen Elemente -->
              <layer>
                  <itemgra>
                      <circle />
                      <polyline />
                      <polygon />
                      <text />
                      <arrows />
                      <icon />
                  </itemgra>
              </layer>
            </layout>

        </navit>

    </config>

    Alle in schwarz dargestellten Tags sollten vorhanden sein. Die in grün dargestellten Tags sind optional.

    Viele Tags werden in Navit mehrfach benutzt, es werden zum Beispiel mehrere Fahrzeuge angelegt. Gerade im <layout> entstehen eine Unmenge an Inline-Tags, da jedes Objekt, was dargestellt werden soll, definiert werden muss.

    zur Übersicht

    Das Objekt <navit>

    Da Objekt <navit> legt fest, wie das Startverhalten von Navit sein soll. Es ist das übergeordnete Objekt, alle anderen Einstellungen finden innerhalb dieses Tags statt. Meist dauert es eine Weile, bis der GPS-Empfänger Daten liefert, in dieser Zeit wird das hier Definierte angezeigt.

    <navit center="5104 N 1032 E" zoom="256" tracking="1" orientation="0" recent_dest="256" waypoints_flag="1"
        autozoom="60" autozoom_active="1" radius="33" timeout="60" osd_configuration="1">

            <!-- alle anderen Navit-Einstellungen -->

    </navit>

    Parameter

    SyntaxBeschreibung
    center="5104 N 1032 E"

    Festlegung Längen- und Breitengrad, wo sich Navit auf der Karte nach dem Start befindet, wenn es noch keine GPS-Daten empfängt.

    In diesem Beispiel ist das 51 Grad 4 Minuten Nord und 10 Grad 32 Minuten Ost.

    Längen- und Breitengrad lassen sich mit Navit ermitteln. Dazu schiebt man die Karte auf einem bestimmten Kartenpunkt, tippt auf diesen und unter Aktion kann man diesen dann ablesen.

    zoom="256"

    Zoomfaktor, also Größe des Kartenausschnitts. Derzeit sind Werte zwischen 1 und 2097152 möglich.

    tracking="1"

    Legt fest, das Navit die aktuelle Position auf den nächsten Weg in der Karte schiebt. Das ist nötig für eine gute Navigation.

    In den Karten ist nicht jeder einzelne Zentimeter erfasst. GPS-Empfänger sind auch ein gewisses Etwas ungenau (gute Empfänger +- 3 Meter). So lassen sich Infos zum aktuellen Ort (Straßennamen usw.) nur anzeigen, wenn man auf die Strasse "hingeschummelt" wird.

    Setzt man tracking="0", kann man auf der Karte sehen, in wessen Garten man gerade sitzt.

    Leute, die da gern hin und her schalten möchten, können sich ein OSD basteln, was ich später beschreibe.

    Möglich sind nur die Werte 0 oder 1.

    orientation="0"

    Karte wird eingenordet. Hier setzt man die Gradzahl, wie die Karte ausgerichtet werden soll.

    Setzt man orientation="-1", wird die Karte in Fahrtrichtung gedreht.

    Setzt man orientation="180", zeigt die Karte nach Süden.

    recent_dest="256"

    Anzahl der maximalen Einträge in der Wegbeschreibung. Hier sind Werte zwischen 1 und unendlich möglich.

    Die Wegbeschreibung findet man unter Menü - Route - Beschreibung, wenn ein Ziel eingegeben wurde.

    waypoint_flag="1"

    Es kann zu mehreren Zielen nacheinander navigiert werden (Planung mit mehreren Wegpunkten).

    Setzt man waypoint_flag="0", kann nur ein Ziel eingegeben werden.

    Anmerkung: Es scheint ein Bug in der Software zu geben. Manchmal, wenn man mehrere Ziele eingegeben hat, berechnet Navit zwar die Route, gibt dann aber keine OSD-Inhalte zur Navigation aus und die Sprachausgabe fehlt auch. Irgendwann gehts dann wieder von allein.

    autozoom_active="1"

    Legt fest, ob Navit automatisch nach der aktuellen Geschwindigkeit ein- und auszoomen soll.

    Setzt man autozoom_active="0", zeichnet Navit die Kartenauschnitte immer in der gleichen Größe.

    autozoom="60"

    Dieser Parameter ist nur gültig, wenn autozoom_active="1" gesetzt wurde. Er legt fest, dass die Karte so gezeichnet wird, dass man auf der Karte sieht, was in den nächsten 60 Sekunden erreicht wird bei der aktuellen Geschwindigkeit.

    Er bestimmt also den Zoomfaktor, der regelmäßig neu berechnet wird innerhalb interner Grenzen.

    Hier sind Werte von 1 bis unendlich möglich.

    radius="33"

    Normaleweise legt Navit den Cursor, also die aktuelle Position, in die Kartenmitte.

    Mit dem Parameter radius kann man festlegen, dass man mehr zukünftigen Weg auf der Karte sehen will. So wird der Kartenausschnitt dem entsprechend verschoben.

    Die Zahl legt fest, wieviel Prozent des aktuellen Kartenausschnitts verschoben wird, also es sind Werte zwischne 0 und 100 erlaubt.

    timeout="60"

    Möchte man sich auf der Karte umsehen und verschiebt diese, schiebt Navit die Karte auf die aktuelle Position nach Erhalt der GPS-Koordinaten zurück. Das passiert ca. jede Sekunde. Somit ist es unmöglich, sich auf der Karte umzusehen.

    Der Parameter timeout="60" gibt an, dass Navit nach Bewegen der Karte 60 Impulse des GPS-Empfängers warten soll, bis es die aktuelle Position auf der Karte wieder zentriert.

    In der Android-Version wurde ein intelligentes OSD eingebaut, das ist der Pfeil, der erscheint wenn man die Karte verschiebt. Klickt man auf den Pfeil, wird die Karte automatisch auf die aktuelle Position zurück gesetzt. Deshalb ist dieser Parameter hier nicht so wichtig.

    osd_configuration="1"

    Die Navit-Variable osd_configuration wird beim Start von Navit auf 1 gesetzt. Das ist nur relevant, wenn man sich mit OSDs beschäftigt. Vorher sollten die grundlegenden Sachen verstanden worden sein.

    zur Übersicht

    Einstellungen für das Menü

    In der Regel sind hier keine manuellen Einstellungen notwendig. Wem aber z.Bsp. die Symbole oder der Text zu klein sind, kann sich das in dem Tag <gui> anpassen:

    <navit ... >

        <!-- andere Einstellungen -->

        <!-- Einstellungen fuer das Menue -->
        <gui type="internal" enabled="yes" fullscreen="1" font_size="320" icon_xs="32" icon_s="96" icon_l="96">

        <![CDATA[
            <!-- einzelne Menüeinträge -->
        ]]>
        </gui>

        <!-- anderen Navit-Einstellungen -->

    </navit>

    Parameter

    fullscreen="1"

    Der gesamte Bidschirm wird genutzt. (Screenmodus)

    Setzt man fullscreen="0", werden Menüleisten des Systems angezeigt. (Fenstermodus)

    font_size="320"

    Das ist die Textgröße der Menütexte in Pixeln. Auf Touch-Screen-Systemen mit hoher grafischer Auflösung kann dieser Wert zu niedrig sein.

    icon_xs="32"
    icon_s="96"
    icon_l="96"

    Größe der Symbole (Icons), diese wird allerdings auch durch die Textgröße beeinflusst.

    Probiert's einfach aus, welcher Wert für welche Symbole steht.

    zur Übersicht

    Für Profis: Debug-Dateien aufzeichnen

    Wer der Meinung ist, er braucht alle Meldungen von Navit in mehreren Dateien, kann das mit dem <log>-Tag erreichen. Hier kann man alle Meldungen des Programms aufzeichnen. Man kann Navit auch aus einer Shell starten, da werden grundsätzlich immer die Meldungen in dieser Shell ausgegeben <STDOUT>.

    <navit ... >

        <log enabled="yes" type="textfile_debug" data="/PFAD/debug_%Y_%m_%d-%i.txt" flush_size="1000" flush_time="30" />

    </navit>

    Hier werden alle Ausgaben von Navit in folgende Datei geschrieben: /PFAD/debug_JAHR_MONAT_TAG-ZAEHLER.txt

    Setzt man enabled="no", werden die Meldungen nicht aufgezeichnet.

    flush_size und flush_time bestimmen, wann die Meldungen gespeichert werden, in diesem Fall alle 1000 Bytes oder alle 30 Sekunden.

    zur Übersicht

    OSDs - On Screen Display

    Normalerweise kommen jetzt die OSDs. Die sogenannten OSDs sind Objekte, die direkt auf dem Bildschirm mit der Karte angezeigt werden, das sind z.Bsp. aktuelle Geschwindigkeit, Kompass, aktueller Straßenname oder Speed-Warner. OSDs beanspruchen CPU-Last, und die Konfiguration ist ein extra großes Kapitel. Deshalb kommt das später, da erst mal die Navigation funktionieren sollte.

    zur Übersicht

    Das Objekt <vehicle>

    Mit diesem Tag werden nicht die Fahrzeugeigenschaften, sondern die GPS-Daten-Quelle(n) konfiguriert sowie das Verhalten von Navit bei Erhalt dieser Daten festgelegt. Navit kommt auch mit mehreren Datenquellen zurecht. So kann man z.Bsp. sehen, wo sich gerade ein Freund befindet.

    <navit ... >

        <!-- Den GPSD-Dienst als Datenquelle nutzen -->
        <vehicle name="Local GPS" profilename="car" enabled="yes" active="1" follow="1" lag="10"
            source="gpsd://localhost" gpsd_query="w+xj">

            <!-- weiterer XML-Code -->

        </vehicle>

    </navit>

    Parameter

    name="Local GPS"

    einem Namen festlegen, mit der man die Datenquellen im Menü unter Einstellungen - Fahrzeug auswählen kann.

    Datenquellen kann man im Menü nur auswählen, wenn mehrere angelegt wurden.

    profilname="car"

    Der Name des Fahrzeugsprofils, das Navit nach dem Start mit dieser Datenquelle nutzen soll. (Auto, Fahrrad, Fußgänger usw.)

    Die Fahrzeugprofile werden mit den Tag <vehicleprofil name="..." .... /> definiert.

    enabled="yes"

    Navit soll diese GPS-Daten-Quelle nutzen.

    Setzt man enabled="no", ignoriert Navit diese Datenquelle.

    active="1"

    Navit soll nach Programmstart entsprechend dieser Datenquelle navigieren und die Karte zeichnen.

    Es kann nur eine Datenquelle aktiv gesetzt werden, alle anderen Datenquellen müssen mit active="0" inaktiv gesetzt werden.

    Im Menü unter Einstellungen - Fahrzeug auswählen kann man eine andere Datenquelle aktiv schalten, sofern mehrere Datenquellen angelegt wurden.

    follow="1"

    Anzahl der GPS-Daten, wann die Karte neu gezeichnet (zentriert) werden soll, wenn diese Datenquelle aktiv ist.

    Wer CPU-Leistung sparen will, kann hier einen höheren Wert wählen. Das hat keinen Einfluss auf die Navigation.

    lag="10"

    Verschiebung des Cursors (aktuelle Position) in Zehntelsekunden in die Zukunft:

    Je nach GPS-Empfänger sendet dieser ca. jede Sekunde Daten der aktuellen Position. Diese Daten müssen ausgewertet und verrechnet werden. Somit hängt die Navigationssoftware etwas über 1 Sekunde hinterher.

    Dies kann man mit dem lag-Wert kompensieren. Empfohlen wird ein Wert zwischen 10 und 20. Sprachausgaben werden so auch früher erstellt.

    source="..."

    Die GPS-Daten-Quelle. Hier gibt es verschiedene Möglichkeiten:

    • source="gpsd://localhost" gpsd_query="w+xj" - Der Dienst GPSD wird als Datenquelle genutzt. (Linux-Computer)

    • source="android:" - GPS-Empfänger eines Gerätes mit Android als Betriebssystem

    • source="file:"/home/benutzer/PFAD/meine_route.nmea - Eine nmea-Datei, so kann man eine aufgezeichnete Reise nochmal ansehen. Es muss eine NMEA-Datei sein. GPX-Dateien funktionieren nicht.

    • source="file:/dev/ttyACM0" - GPS-Empfänger direkt auslesen (in diesem Fall ttyACM0), dazu braucht man Leserechte auf dar Gerät. Das kann man mit "cat /dev/ttyACM0" testen.

    • source="pipe:/usr/bin/gpspipe -r" - Daten aus einem anderen Programm über die Standardaus- und -eingabe

      Das Programm "gpspipe -r" wird gestartet und dessen Ausgabe wird zur Datenquelle für Navit.

    • source="demo://" - Ein Demo für Navit. Das ist sinnvoll, wenn man keine GPS-Quelle besitzt.

      Man gibt in Navit einen aktuellen Standort und ein Ziel ein, daraufhin wird die Navigation simuliert.

    • Weitere Möglichkeiten werden in diesem Artikel des Navit-Projekts beschrieben, auch für Windows.

    zur Übersicht

    Fahrzeuge und andere Fortbewegungsmittel definieren und anpassen

    Der eine fährt Auto, der andere LKW, der dritte möchte eine Fahrradtour machen und der vierte plant eine Wanderung. Damit man Navit für all diese und andere Bedingungn nutzen kann, gibt es den Tag <vehicleprofile>, damit kann man die Fortbewegungmittel anlegen und nach seinen persöhnlichen Vorlieben einstellen.

    <navit ... >

        <!-- Fortbewegungsmittel definieren -->
        <!-- als erstes mein PKW -->
        <vehicleprofile name="mein_Auto" route_depth="4:25%,6:2%,8:180000,18:40000"
            flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001"
            maxspeed_handling="1" route_mode="0" static_speed="15" static_distance="25">

            <!-- Definitionen, wie Navit mit entsprechenden Wegen umgehen soll -->

        </vehicleprofile>

    </navit>

    Parameter

    name="..."

    Der Name, wie das Profil lauten soll. Als Beispiele: PKW, Fahrrad, Fussgaenger, mein_Transporter usw.

    Soll Navit nach dem Start mit diesem Profil beginnen, muss im Tag <vehicle> unter dem Parameter profilename="..." dieser Name notiert sein.

    route_depth="4:25%,6:2%,8:180000,18:40000"

    Wer es ganz genau wissen will, sollte sich auf der Übersichtseite der Parameter des Navit-Projekts (englisch) informieren.

    Für die anderen: Es gibt z. Bsp. Gebiete, wo sich keine Autobahn in der Nähe befindet. In den Standardeinstellungen kann es dann vorkommen, dass Navit einen Umweg von mehr als 100 km vorschlägt, obwohl man mit 60 km Landstraße vor Ort ist.

    Navit legt ein Rechteck zwischen Start und Ziel. Hier versucht Navit ,einen Weg zu finden. Dieses Beispiel besagt, dass Navit bei Autobahnen das Rechteck um 25% verlassen darf. Bei Bundesstraßen sind es 2%. Der Weg über Landstraßen soll maximal 180 km betragen, über Feldwege maximal 40 km.

    Das hier vorgestellte Beispiel ist sehr sportlich. Gerade die letzten 2 Parameter benötigen sehr viel Zeit, um einen Weg zu finden, da Navit viele Landstraßen und Feldwege mit einbeziehen muss.

    flags="0x4000000"

    flags_forward_mask="e;0x4000002"

    flags_reverse_mask="0x4000001"

    Diese sogenannten Flags sind notwendig, damit Navit weiß, um was für ein Fahrzeug es sich handelt.

    Es wäre doch nicht schön, wenn Navit einen Fahrradfahrer über die Autobahn schickt. Oder mit einem LKW den Fussweg lang, ist auch nicht gerade optimal. Ich weiß, dass andere Navigationssoftware sowas prima hinbekommt.

    Auf dieser Vehicle-Profile-Flags-Seite des Navit-Projektes werden die Zahlen erläutert.

    Die Kartendaten werden heute immer besser und umfangreicher. Eine Straße ist längst nicht mehr nur eine Straße. Angaben zu maximalen Geschwindigkeiten, Untergrund, Ebenen, Einbahnstraßen, maximalen Gewichten und Fahrzeuglängen, Fahrverbote für verschiedene Fahrzeuge, Beleuchtungen uvm. gehören heute zu den Standards in den Kartendaten, die so nach und nach eingepflegt werden. Anhand den gesetzten Flags berechnet Navit eine Route, die für das entsprechende Fahrzeug geeignet ist.

    Beispiele:

    • 0x04000000 - normaler PKW
    • 0x01000000 - Taxi
    • 0x08000000 - Motorrad
    • 0x40000000 - Fahrrad
    • 0x80000000 - Fussgänger

    Als Ziffern sind nur 0, 1, 2, 4 und 8 erlaubt, da hier einzelne Bits gesetzt werden.

    maxspeed_handling="1"

    Dieser Parameter gibt an, mit welchen Geschwindigkeitsangaben Navit rechnen und entsprechend navigieren soll.

    maxspeed_handling="0": Navit soll immer die Angaben zur maximalen Geschwindigkeit der Kartendaten nutzen. Fehlen diese, werden die speed-Parameter der folgenden unterhalb liegenden Tags genutzt.

    maxspeed_handling="1": Navit soll die rout-weight-Parameter der unterhalb definierten Tags nutzen. Ist dieser höher als die maximale Geschwindigkeit der Kartendaten, werden die Kartendaten genutzt. Diese Variante wird von mir empfohlen.

    maxspeed_handling="2": Navit soll immer die rout-weight-Parameter der unterhalb definierten Tags nutzen.

    route_mode="0"

    Mit diesem Parameter werden die ON-ROAD- und OFF-ROAD-Optionen definiert.

    route_mode="0": Automatisch, Navit soll selbst entscheiden, ob man die Straße oder Wege durchs Gelände nutzt.

    route_mode="1": On-Road, Navit soll nur befestigte Straßen nutzen. Orte an einem Feldweg können nicht mehr erreicht werden.

    route_mode="2": Off-Road, Navit soll Wege durchs Gelände nutzen. Das ist interessant für Mountain-Biker oder Wanderer.

    static_speed="15"

    Steht man still an einem Ort, arbeitet der GPS-Empfänger weiter. Aufgrund der Ungenauigkeiten empfängt Navit sich ständig ändernde Positionsdaten, mal ein paar Zentimeter nach links, dann einen Meter zurück usw.. Wenn jetzt Navit die Karte jedes mal neu zeichnen würde, hätte da keiner Freude dran.

    Dieser Parameter gibt an, welche Geschwindigkeit in km/h zwischen 2 Positionsdaten erreicht sein muss, damit Navit das als Bewegung erkennt und die Karte neu zeichnet.

    static_distance="25"

    Hier gilt das Gleiche wie eine Zeile weiter oben beschrieben. Mit diesem Parameter gibt man den Weg in Metern an, ab wann Navit erkennen soll, dass es sich um eine Bewegung handelt.

    zur Übersicht

    Geschwindigkeiten mit <roadprofile> anpassen

    Alle Fahrzeuge fahren nicht mit der gleichen Geschwindigkeit. Während der eine sehr zügig auf der Autobahn unterwegs ist, fährt der andere, z.Bsp. mit Anhänger, mit geringerer Geschwindigkeit. Ein Traktor fährt nicht so schnell wie ein Kleinlastkraftwagen, und ein Fahrrad ist nicht so schnell wie ein PKW.

    Deshalb gibt es den Tag <roadprofile>, mit dem man die Geschwindigkeiten anpassen kann. Diese Tags müssen innerhalb des entsprechenden <vehicleprofile> definiert werden.

    <navit ... >

        <!-- Fortbewegungsmittel definieren -->
        <!-- als erstes mein PKW -->
        <vehicleprofile name="mein_Auto" route_depth="4:25%,6:2%,8:180000,18:40000"
            flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001"
            maxspeed_handling="1" route_mode="0" static_speed="15" static_distance="25">
            <roadprofile item_types="street_0,street_1_city,living_street,street_service,track_gravelled,track_unpaved,street_parking_lane"
                speed="10" route_weight="10">
            </roadprofile>
            <roadprofile item_types="street_2_city,track_paved" speed="28" route_weight="28"></roadprofile>
            <roadprofile item_types="street_3_city" speed="32" route_weight="32"></roadprofile>
            <roadprofile item_types="street_4_city" speed="35" route_weight="35"></roadprofile>
            <roadprofile item_types="highway_city" speed="70" route_weight="70"></roadprofile>
            <roadprofile item_types="street_1_land" speed="48" route_weight="48"></roadprofile>
            <roadprofile item_types="street_2_land" speed="52" route_weight="52"></roadprofile>
            <roadprofile item_types="street_3_land" speed="54" route_weight="54"></roadprofile>
            <roadprofile item_types="street_4_land" speed="60" route_weight="60"></roadprofile>
            <roadprofile item_types="street_n_lanes" speed="65" route_weight="65"></roadprofile>
            <roadprofile item_types="highway_land" speed="108" route_weight="108"></roadprofile>
            <roadprofile item_types="ramp" speed="40" route_weight="40"></roadprofile>
            <roadprofile item_types="roundabout" speed="10" route_weight="10" />;
            <roadprofile item_types="ferry" speed="40" route_weight="40" />
        </vehicleprofile>

    </navit>

    Parameter

    item_types="..."

    Hier werden der oder die Straßentypen angegeben.

    Im ersten Beispiel sind das kleinste Nebenstraßen in einer Ortschaft, Spielstraßen, Zuffahrtswege, unbefestigte Straßen und Parkplatzwege.

    • street_1_city - Zufahrtsverbindungen, kann geschottert sein

    • street_2_city - Verbindungsstraßen in einer Ortschaft, meist ziemlich schmal

    • street_3_city - Nebenstraßen in einer Ortschaft

    • street_4_city - Hauptstraßen in einer Ortschaft

    • highway_city - Stadtautobahn

    • street_1_land - befahrbarer Weg zwichen Ortschaften, kann ein geschotterter Weg sein

    • street_2_land - Verbindungsstraßen von Ortschaften, kann in schlechtem Zustand sein

    • street_3_land - kleinere Landstraßen, in Deutschland Kreisstraßen

    • street_4_land - gute Landstraßen, in Deutschland Landstraßen 1. Ordnung

    • street_n_lanes - Bundes- bzw. Fernverkehrsstraßen

    • highway_land - Autobahnen

    • ramp - Auf- und Abfahrten

    • roundabout - Kreisverkehre (geht leider nicht bei OSM-Karten)

    • ferry - Nutzung von Fähren

    Lässt man eine dieser Typen weg, wird Navit diesen Typ nicht zum Navigieren nutzen. Also ohne highway_land geht es nur über Landstraßen.

    speed="..."

    Angabe in km/h, mit der Navit rechnen soll, wenn nicht anders möglich

    Oft sind in den Kartendaten nicht die maximal erlaubten Geschwindigkeiten vorhanden. Hat man im <vehicleprofile> den Parameter maxspeed_handling auf 0 eingestellt, braucht Navit einen Wert, mit dem gerechnet werden kann.

    route_weight="..."

    Eigentlich auch eine Angabe in km/h.

    Hat man im <vehicleprofile> den Parameter maxspeed_handling auf 1 oder 2 eingestellt, braucht Navit wieder einen Wert, mit dem gerechnet werden kann. Er definiert die Bevorzugung der jeweiligen Straßentypen.

    maxspeed="..."

    Angabe in km/h.

    Dieser Parameter wird nur gebraucht, wenn man den OSD-Speed-Warner nutzt und keine maximal erlaubten Geschwindigkeiten in den Kartendaten vorhanden ist. Im Normalfall kann sowas nerven, aber wenn man nur mit 80 auf der Autobahn fahren darf, ist er doch sinnvoll.

    Hinweis: Wenn man sich das Beispiel ansieht, kann man denken, das da ein Fahrer mit Hut unterwegs ist, der es bis zum nächsten Einkaufszentrum schaffen muss. Die Geschwindigkeiten, die hier festgelegt werden, sind Durchschnittsgeschwindigkeiten. Auf der Landstraße fährt man oft mit Tempo 60 einem LKW hinterher, und man kann nicht überholen. Ich habe mal 3 km Stadtverkehr gemessen, davon waren 2,5 km Hauptstraßen, kein Stau, nur ein paar Ampeln. Ergebnis: erstaunliche 17 km/h Durchschnitt.

    zur Übersicht

    <route destination_distance="...">

    Man navigiert zu einem Ziel und irgendwann hat man es auch erreicht.

    Was heißt "erreicht"? Meist wird das Ziel nicht auf den Millimeter genau erreicht. Ist es die linke oder rechte Straßenseite? Abweichungen der GPS-Empfänger spielen genau so eine Rolle wie die Bedingungen des GPS-Empfangs (störende Gebäude, Stromleitungen oder Wald). Gute GPS-Empfänger haben eine Genauigkeit von ca. 3m, bei Smartphones sind Abweichungen über 20m keine Seltenheit.

    Deshalb benötigt Navit einen Parameter, der besagt, bei welchem Abstand vom wirklichen Ziel das Ziel eigentlich erreicht ist. Mit der Standardeinstellung <route destination_distance="50" /> wird ein Abstand von 50m angegeben, was eigentlich optimal ist. Diese Angabe muss zwischen <navit ...> und </navit> notiert sein.

    zur Übersicht

    Sprachansagen einstellen

    Eine Navigationssoftware sollte idealerweise auch Anweisungen rechtzeitig als Sprache ausgeben. Navit kann das natürlich. Allesrdings nutzt Navit eine Text-To-Speech-Software des Betriebssystems. Jedes vernünftige Betriebssystem hat solche Software im Angebot. Diese ist in der Lage, aus Text eine Sprachausgabe zu erzeugen.

    Linux-Nutzer können zum Beispiel mal folgendes in eine Konsole eingeben: spd-say -l de "Hallo Klaus, wie geht es Dir?". Der Rechner sollte darauf hin eine Sprachausgabe erzeugen.

    Somit sollte klar sein, dass es keine Stimmen für Navit gibt. Die Stimmen und Sprachen kommen von der Text-To-Speech-Software. Navit übergibt nur eine Textzeile an diese Software.

    Damit Navit die Textzeilen für die Sprachausgaben wie gewünscht ausgeben kann, muss man 2 Dinge in der navit.html angeben:

    1. Wann soll Navit eine Ausgabe erzeugen?

    2. Wohin soll Navit die Ausgabe schicken?

    Wann soll Navit eine Sprachausgabe erzeugen?

    Das wird in folgendem Absatz <navigation> unter <announce> definiert:

    <navit ... >

        <navigation>
            <announce type="street_0,street_1_city" level0="50" level1="250" level2="600" unit="m" />
            <announce type="street_2_city,street_3_city,street_4_city,ramp" level0="80" level1="300" level2="800" unit="m" />
            <announce type="highway_city,street_1_land,street_2_land,street_3_land,street_4_land" level0="120" level1="1000" level2="1800" unit="m" />
            <announce type="street_n_lanes,highway_land" level0="400" level1="1800" level2="3600" unit="m" />
        </navigation>

    </navit>

    Die Parameter im Einzelnen

    type="..."

    Angabe des/der Straßigentypen, für die dieser Eintrag gelten soll.

    Das sind die gleichen Namen wie im <roadprofile>-Absatz unter item_types beschrieben wurde.

    level0="..."

    Angabe in Meter vom nächsten Wegpunkt, wann Navit die Ausgabe Jetzt rechts abbiegen auf die Berliner Straße. erzeugen soll.

    level1="..."

    Angabe in Meter vom nächsten Wegpunkt, wann Navit die Ausgabe In xxx Metern rechts abbiegen auf die Berliner Straße. erzeugen soll.

    level2="..."

    Angabe in Meter vom nächsten Wegpunkt, wann Navit die Ausgabe Demnächst rechts abbiegen auf die Berliner Straße. erzeugen soll.

    unit="m"

    Diesen Parameter lasse ich einfach so stehen. Er soll besagen, dass es die Wegeinheit Meter bis zum nächsten Punkt definiert wurde.

    In der Doku von Navit habe ich noch keine anderen Wegeinheiten gefunden, die man hier festlegen könnte.

    Wohin soll Navit die Ausgabe schicken?

    In diesem Absatz erläutere ich nur die Sachen, die ich selbst testen konnte. Wer mehr wissen will, kann sich hier weiter informieren. Es geht hier um den Tag <speech>.

    Folgende 2 Beispiele sind auf einem Linux-System möglich

    <navit>

        <speech type="cmdline" data="espeak -v de -s 160 -a 180 '%s'" />

        <!-- oder -->

        <speech type="cmdline" data="spd-say -l de'%s'" />

    </navit>

    Mit type="cmdline" kann man ein beliebiges Programm aufrufen, das die Sprachausgaben verarbeiten soll. Dabei wird in data das Programm mit seinen Parametern festgelegt. Das %s steht als Parameter für die Navit-Ausgabe,

    Ist Navit auf einem Android-System installiert, sieht die Eingabe wie folgt aus:

    <speech type="android" cps="15" />

    Dar Parameter cps="15" soll die Sprechgeschwindigkeit (charakters per second/Zeichen pro Sekunde) beeinflussen, wurde bei mir aber ignoriert. Stattdessen wurde die Sprechgeschwindigkeit der Systemeinstellung übernommen.

    Bei einem IPhone müsste der Eintrag wie folgt aussehen:

    <speech type="iphone" cps="15" />

    Das wurde von mir nicht getestet.

    Der <speech>-Tag muss auch zwischen <navit> und </navit> liegen.

    zur Übersicht

    Open-Street-Map-Karten in Navit einbinden und nutzen

    Das leidige Thema für Einsteiger. Man hat eine Karte herunter geladen. Nun muss man Navit noch sagen, dass es diese Karte nutzen soll.

    Eins vorneweg: Ich beschreibe hier nur die Mögkichkeit, Open-Street-Map-Karten in Navit zu nutzen. Navit kann auch mit Marco-Polo-Karten und mit Garmin-Karten arbeiten. Wer diese nutzen will, sollte sich auf den Navit-Projekt-Seiten und dessen Wiki informieren. Beispiele sind in der Standard-navit.xml vorhanden.

    Zum Verständnis: Das OpenStreetMap-Projekt ist keine Karte, die mehr oder weniger schön aussieht. Es ist eine sehr große Datenbank, die Objekte auf der ganzen Welt mit Standort und Eigenschaften beinhaltet. Das sind zum Beispiel der größte Highway, die schöne Landstraße, der kleine Bauernhof oder der kleine Briefkasten um die Ecke. Diese Daten werden von freiwilligen Helfern erfasst und in diese Datenbank eingetragen. Jeder darf mitmachen.

    Was und wie davon auf der grafischen Karte auf dem eigenen Gerät angezeigt wird, dafür ist das entsprechende Programm verantwortlich. Das ist hier natürlich Navit. Navit kann eine ganze Menge Objekte der OSM-Karte anzeigen und auch als Ziel nutzen. Was und wie es angezeigt wird, wird mit dem Tag <layout> einschließlich den internen Tags definiert. Das ist aber eine andere Baustelle.

    Wie kann man OSM-Daten in Navit nutzen?

    OSM-Daten kann man sich herunterladen, diese hat man als XML-Datei mit vielen überflüssigen Informationen (Wer hat wann an welchem Objekt was geändert.), die Navit nicht braucht und einen riesen Haufen an Speicherplatz fressen. Deshalb hat das Navitprojekt das Programm maptool entwickelt, welches alle unnütze Sachen für Navit entfernt und die Parameter entsprechend umwandelt. Es entsteht daraus eine *.bin Datei.

    Man kann:

    1. sich einen Bereich vom OSM-Projekt herunterladen und diesen dann mit maptool umwandeln oder

    2. auf der Seite Navit::Planet Extractor einen Bereich auswählen und diesen direkt als *.bin Datei downloaden. Diese Kartendaten werden in der Regel alle 3 Wochen aktualisiert.

    Einbinden einer bin-Datei in Navit

    <navit>

        <!-- OSM-Karten fuer Navit -->
        <mapset enabled="yes">
            <map type="binfile" enabled="no" data="/home/karten/planet-150610.bin"/>
            <map type="binfile" enabled="yes" active="1" data="/storage/extSdCard/navit/karten/planet-150726.bin"/>
            <map type="binfile" enabled="yes" active="0" data="/sdcard/navit/karten/claudenberg.bin"/>
        </mapset>

        <!-- GPX-Tracks, die aufgezeichnet und mit maptool umgewandelt wurden -->
        <mapset enabled="yes">
            <maps type="textfile" enabled="no" active="0" data="/storage/extSdCard/navit/tracks/*.txt"/>
        </mapset>

    </navit>

    Parameter

    <mapset enabled="...">
    • yes: Navit soll diesen Absatz lesen und verarbeiten.

    • no: Navit soll den gesamten mapset-Absatz ignorieren.

    type="..."

    Dieser Parameter gibt das Dateiformat der Karte an.

    • binfile - eine aus OSM-Daten erzeugte Karte im bin-Format

    • textfile - Navit-Textdatei, so lassen sich eigene Tracks, eigene interessante Kartenpunkte usw. auf dem Display darstellen.

      Es ist auch möglich, Textdateien aus OSM-Daten zu erstellen. Das sollte aber nur für relativ kleine Karten gemacht werden.

    • csv - CSV-Datei

    • mg - Marco Polo Grosser Reiseplaner

    enabled="..."

    Dieser Parameter gibt an, ob Navit diesen Eintrag verarbeiten soll.

    Möchte man temporär eine andere Karte nutzen, setzt man diesen Parameter auf "no" und braucht nicht den gesamten Eintrag löschen. Im Menü kann man diese Karte nicht mehr auswählen.

    • yes: Navit soll diesen Eintrag lesen und verarbeiten.

    • no: Navit soll diesen Eintrag ignorieren.

    active="..."

    Dieser Parameter gibt an, ob diese Karte beim Start von Navit aktiviert werden soll. Dazu muss der Parameter enabled auf "yes" gesetzt sein, ansonsten hat active keine Wirkung.

    • 0 - Karte ist beim Start von Navit deaktiviert und wird nicht gelesen. Im Menu kann man diese anwählen.

    • 1 - Karte ist beim Start von Navit aktiv.

    data="..."

    Kompletter Pfad und Dateiname, wo die Kartendaten gespeichert sind. Systemvariablen können verwendet werden.

    Hinweis: Es sollte immer nur eine *.bin Datei aktiv gesetzt sein. Ansonsten kommt es beim Navigieren in dem Bereich, wo sich die Karten überschneiden, zu komischen Anweisungen, da sich die Kartendaten überlagern.

    Noch etwas: Kartendaten können sehr groß sein. Derzeit braucht man für Europa über 6GiB Speicher, für die ganze Welt sind es über 18GiB. Es kommt häufig vor, dass Speicherkarten nach 4 GiB abbrechen, weil sie diese Datengröße nicht verarbeiten können. Der Grund liegt darin, dass diese Speichermedien im FAT32-Format formatiert wurden. Auch wenn es die Gebrauchsanweisung des Gerätes FAT32 verlangt, lohnt es sich, das Speichermedium mal im EXFAT-Format zu formatieren und zu testen.

    Man kann auch mehere Karten nach einem Muster integrieren. Sollen alle *.bin-Dateien eingebunden werden, benutzt man den Tag <maps ... />. Beispiel:

    <navit>

        <mapset enabled="yes">
            <maps type="binfile" enabled="ves" active="0" data="/storage/extSdCard/navit/karten/*.bin" />
        </mapset>

    </navit>

    zur Übersicht

    Bevor es weiter geht: Ein paar Anmerkungen

    Wer sich bis hierhin Stück für Stück durchgequält hat, sollte in der Lage sein, Navit zum Navigieren zu nutzen.

    Allerdings ist der Mensch eine Geschmacksache. Dem einen gefällt die Karte nicht, der andere möchte ein paar Infos mehr.

    Dafür gibt es nur noch 2 Themen, 2 Themen, die es in sich haben. OSD und Layout. Um diese Sachen konfigurieren zu können, muss alles, was bisher beschrieben wurde, erfolgreich konfiguriert und verstanden worden sein.

    Mit den OSDs kann man diese Konfiguration verändern. Layouts sollten die Straßen und Wege zeichnen, die zur Navigation genutzt werden. Beide Themen sind sehr zeitintensiv, aber es lohnt sich, um ein schönes Navit zu haben.

    Man sollte nicht mit Kommentare sparen, sonst sucht man sich dumm und dämlich.

    zur Übersicht

    Endlich OSDs

    Einleitung

    OSD steht für On Screen Display. Das sind Elemente, die auf der Kartenoberfläche angezeigt werden. Im Deutschen nennt man es Armaturen.

    Man kann sich also Informationen anzeigen lassen, wie z.Bsp. Geschwindigkeit, Höhe über NN, aktueller Straßenname, in der man sich gerade befindet, Restweg bis zum nüchsten Abbiegen, gesamter Restweg und Restzeit.

    Man kann aber auch "Schalter" erstellen, die auf Navit zugreifen und etwas verändern. Als Beispiel vielleicht das Umschalten von der 2D- in die 3D-Ansicht.

    Man kann OSDs aus- und einblenden. Allerdings sei hier gesagt: OSDs verbrauchen CPU-Leistung, auch die ausgeblendeten. Die Erstellung einer Route ist schon sehr rechenintensiv. Man solte also aufpassen, das sich das Gerät nicht überhitzt. Der Akku-Verbrauch steigt logischerweise auch.

    Nicht alle OSDs benutzen die gleichen Parameter. Die OSDs wurden von verschiedenen Programmieren erstellt und haben deshalb eigene Parameter. Das ist leider unumgänglich. Mit einem Klick soll sich das eine OSD einen Reset ausführen, andere können eine Anweisung ausführen.

    Um weiterführende Informationen zu erhalten, kommt man nicht um die OSM-Seite des Navit-Projekts herum. Ich werde die OSDs an Beispielen erklären.

    zur Übersicht

    Allgemeine Parameter bei OSD

    <navit>

        <osd enabled="yes" type="text" label="Hallo" x="120" y="-140" w="180" h="60"
            font_size="420" text_color="#ffa0c2" background_color="#00000080"
            command="gui.quit()" osd_configuration="1" enable_expression="route.route_status&amp;1" accesskey="q" />

    </navit>

    In diesem Beispiel wird ein Textfeld erzeugt, in dem das Wort Hallo steht. Es ist nur vorhanden, wenn ein Ziel eingegeben wurde, also eine Navigation gestartet wurde. Klickt man auf dieses Textfeld, wird Navit beendet. Völliger Unsinn, aber die Parameter sollen erklärt werden.

    Die Parameter dazu

    enabled="yes"

    Navit soll dieses OSD verarbeiten. Setzt man diesen Parameter auf no, ignoriert Navit diesen Eintrag.

    Man muss also nicht das OSD löschen, wenn man es temporär nicht nutzen möchte.

    type="text"

    Es soll ein Textfeld erstellt werden.

    Andere Typen beschreibe ich in den folgenden Beispielen.

    label="Hallo"

    Das ist der Inhalt, der in dem Textfeld stehen soll.

    Hier kann man auch Navit-Variablen ausgeben lassen (Geschwindigkeit, Restweg etc.). Mehr dazu in den folgenden Beispielen.

    align="4"

    Ausrichtung des Texts innerhalb eines Labels. Dabei bedeutet:

    • 0 - zentrisch ausgerichtet, mittig
    • 1 - oben
    • 2 - unten
    • 4 - links
    • 8 - rechts

    Durch Addieren der Werte werden 2 Eigenschaften zusammen gefasst. So muss man für rechts unten den Wert 10 angeben.

    align wird nicht von allen OSD-Typen unterstützt.

    x="120"

    Das OSD erscheint 120 Pixel vom linken Bildschirmrand.

    Gibt man eine negative Zahl ein, erscheint es dem entsprechend vom rechten Bildschirmrand entfernten Pixel.

    Es wird immer der Abstand zur linken oberen Ecke des OSDs angegeben.

    y="-140"

    Das OSD erscheint 140 Pixel vom unteren Bildschirmrand.

    Gibt man eine positive Zahl ein, erscheint es dem entsprechend vom oberen Bildschirmrand entfernten Pixel.

    w="180"

    Die waagerechte Länge des OSDs beträgt 180 Pixel.

    h="60"

    Die senkrechte Höhe des OSDs beträgt 60 Pixel.

    font_size="420"

    Hier wird die Schriftgröße in Pixelfestgelegt.

    text_color="#ffa0c2"

    So bestimmt man die Textfarbe.

    Der Parameter wird mit einem #-Zeichen eingeleitet. Danach folgen 3 zwei-stellige Hexadezimal-Zahlen.

    Mögliche Ziffern sind hier 0 bis 9 und a bis f (10 bis 15).

    Die erste Zahl gibt den Rot-Anteil, die zweite den Grün-Anteil und die dritte den Blau-Anteil an.

    Somit sind 16.777.216 Farben möglich. Beispiele:

    • #ff0000 - rot
    • #00ff00 - grün
    • #0000ff - blau
    • #000000 - schwarz
    • #ffffff - weiß
    • #808080 - grau

    Einige OSD-Typen besitzen eigene Textfarben. In diesem Fall wird das text_color-Attribut ignoriert.

    background_color="#00000080"

    Festlegung der Hintergrundfarbe.

    Hier gilt das gleiche wie bei text_color.

    Allerdings kann man noch eine 4. hexadezimale Zahl angeben, die Transparenz.

    ff bedeutet keine Transparenz (nicht durchsichtig), 00 bedeutet komplett durchsichtig.

    command="gui.quit()"

    Soll der OSD als Button (Schaltfläche) verwendet werden, wird mit command="..." der Befehl eingegeben, welcher ausgeführt werden soll, wenn man darauf klickt.

    In diesem Beispiel wird Navit beendet.

    Mögliche Befehle findet Ihr hier und vor allem hier.

    osd_configuration="1"

    Das ist eine Möglichkeit OSDs ein- oder auszublenden.

    In diesem Fall wird das OSD nur angezeigt, wenn das letzte Bit der Variable osd_configuration 1 ist. Andernfalls wird es ausgeblendet, verbraucht aber weiterhin CPU-Leistung und Speicher.

    Um diese Variable zu ändern, kann man sich einen Button bauen, in dem folgender Eintrag als Beispiel steht: command="osd_configuration=osd_configuration==0?1:0". Beim Klicken auf diesen Button wird osd_configuration zwischen 0 und 1 hin und her geschaltet.

    enable_expression="route.route_status&amp;1"

    Das ist eine weitere Möglichkeit OSDs ein- oder auszublenden. In diesem Fall wird das OSD nur angezeigt, wenn ein Ziel eingegeben wurde.

    Ist der Ausdruck in den Anführungszeichen wahr (true bzw. 1), wird das OSD angezeigt, ansonsten wird es ausgeblendet.

    Das ist ähnlich einer if-Anweisung in anderen Programmiersprachen. Ist so eine Anweisung angegeben, wird, wie hier im Beispiel, das Attribut osd_configuration ignoriert.

    accesskey="q"

    Soll bei einem Klick auf dem OSD eine Anweisung ausgeführt werden (command oder andere Sachen), hat man so die Möglichkeit, mit einem Tastendruck auf einer realen Tastatur (Laptop, Netbook) diese Anweisung ausführen zu lassen.

    Drückt man in diesem Beispiel das q, wird Navit beendet.

    Man hat hiermit auch die Möglichkeit, unsichtbare OSDs zu erstellen, die bei einer Tastatureingabe einen Befehl ausführen.

    Man kann auch Buttons mit kleinen Bildchen erstellen. Die Anweisung sieht dann etwa so aus:

    <osd enabled="yes" type="button" src="/PFAD/ZUM/BILD/bild.png" command="..." />

    Das scheint alles ein wenig kompliziert zu sein, aber es lohnt sich, sich damit zu beschäftigen. So kann man sich Navit prima an seinen Bedürfnissen anpassen. Die folgenden Beispiele sollen ein wenig Starthilfe geben. Außerdem gibt es noch die englische OSD-Seite des Navit-Projektes.

    zur Übersicht

    Beispiele, dürfen gerne kopiert und angepasst werden

    Höhe über den Meeresspiegel anzeigen

    <osd enabled="yes" type="text" label="${vehicle.position_height}m" x="130" y="0" w="120" h="40" font_size="300" text_color="#88ffcc" background_color="#000000B0" />

    Somit wird ein Textfeld erstellt, welches die Höhe über NN (Normal Null) anzeigt. Allerdings liegt mein Smartphone ca. 40m zu hoch. Bei Navit auf einem Netbook stimmt die Höhe ziemlich gut. Die Angabe kommt vom GPS-Empfänger.

    Es gibt 2 verschiedene Höhenangaben:

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Aktuelle Geschwindigkeit

    <osd enabled="yes" type="text" label="${vehicle.position_speed}" x="0" y="0" w="130" h="40" font_size="300" text_color="#ffffff" background_color="#000000B0" />

    So wird ein Textfeld erstellt, das die aktuelle Geschwindigkeit in km/h beinhaltet. Diese Angabe kommt ebenfalls vom GPS-Empfänger.

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Maximal erlaubte Geschwindigkeit

    <osd enabled="yes" type="text" label="${tracking.item.route_speed}" x="0" y="40" w="130" h="40" font_size="300" text_color="#ffffff" background_color="#000000B0" />

    Ist im <navit>-Tag der Parameter tracking auf 1 gesetzt, kann man mit dieser Zeile die maximal erlaubte Geschwindigkeit der Straße, auf der man sich befindet, anzeigen, sofern diese in den Kartendaten enthalten ist. Ist diese nicht in den Kartendaten aufgenommen, wird die Geschwindigkeit angezeigt, mit der Navit rechnet, also die Geschwindigkeit, die im entsprechenden <roadprofile> festgelegt wurde.

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Warnungen bei überhöhter Geschwindigkeit

    <osd enabled="yes" type="speed_warner" w="100" h="40" x="-100" y="142" font_size="240"
        speed_exceed_limit_offset="10" speed_exceed_limit_percent="10" label="text_only" text_color="#ffffff" background_color="#00000080" />

    Hier wird ein sogenannter Speed-Warner erzeugt. Er zeigt die maximal erlaubte Geschwindigkeit in grün an. Fährt man schneller als erlaubt, wechselt die Anzeige auf rot. Ist man mehr als 10km/h zu schnell, wird eine Sprachausgabe ausgegeben. Ist die maximal erlaubte Geschwindigkeit nicht in den Kartendaten erfasst, bleibt das Feld leer.

    Lässt man den Parameter label="text_only" weg, wird ein kleines Verkehrszeichen gezeichnet. Der Speedwarner lässt sich nicht mit dem Eintrag command="..." kombinieren.

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Ein Kompass mit Schaltfunktion

    <osd enabled="yes" type="compass" x="0" y="130" w="72" h="96" command="orientation=orientation==0?-1:0" />

    Diese Anweisung erstellt einen Kompass. Ein weißer Pfeil zeigt nach Norden, ein grüner Pfeil zeigt zum Ziel. Es wird auch die Luftlinienentfernung zum Ziel angezeigt.

    Klickt man auf den Kompass, wird die Navit-Variable orientation zwischen 0 und -1 hin und her geschaltet. Das bewirkt, dass die Karte zwischen eingenordet oder in Fahrtrichtung gezeichnet wird.

    Natürlich können weitere allgemeine OSD-Parameter verwendet werden.

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Straßennummer und -name, auf der man sich befindet

    <osd enabled="yes" type="text" label="${tracking.item.street_name_systematic} ${tracking.item.street_name}"
        x="250" y="0" w="494" h="40" font_size="300" text_color="#ffffff" background_color="#000000B0" />

    Ist das navit-Attribut tracking auf 1 gesetzt, wird so eine Ausgabe der Nummer und des Namens der Straße, auf der man sich gerade befindet, erzeugt.

    Beispiel: B5 Berliner Straße

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Aktuelle Koordinaten

    <osd enabled="yes" type="text" label="${vehicle.position_coord_geo}"
        x="-280" y="0" w="280" h="30" font_size="240" text_color="#ffffff" background_color="#000000B0" />

    Die Ausgabe sieht etwa so aus: 48°08'35.52" N 010°19'37.78 E"

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Anzahl genutzter und sichtbarer Satelliten und die Satellitenzeit

    <osd enabled="yes" type="text" label="${vehicle.position_sats_used} von ${vehicle.position_qual} Sats. ${vehicle.position_time_iso8601[local;%Y-%m-%d %X]}"
        x="-280" y="30" w="280" h="30" font_size="240" text_color="#ffffff" background_color="#000000B0" />

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    OSDs für die Navigation (zusammengefasst)

    <!-- nächste Richtungsaenderung als Bild -->
    <osd enabled="yes" type="navigation_next_turn" x="0" y="-110" color="#ffffff" background_color="#000000B0"
        enable_expression="route.route_status&amp;1" />

    <!-- Restweg bis zur naechsten Richtungsaenderung -->
    <osd enabled="yes" type="text" label="${navigation.item[1].length[named]}" x="0" y="-40"
        w="120" h="40" font_size="320" text_color="#ffffff" background_color="#000000B0" enable_expression="route.route_status&amp;;1" />

    <!-- Strassennummer und -name, in die demnaechst abgebogen wird -->
    <osd enabled="yes" type="text" label="${navigation.item[1].street_name_systematic} ${navigation.item[1].street_name}" x="120" y="-40" w="494" h="40"
        font_size="320" text_color="#ffffff" background_color="#000000B0" enable_expression="route.route_status&amp;1" />

    <!-- vorraussichtliche Ankunftszeit am Ziel -->
    <osd enabled="yes" type="text" label="ETA ${navigation.item.destination_time[arrival]}" x="-160" y="-40" w="160" h="40"
        font_size="320" text_color="#ffffff" background_color="#000000B0" enable_expression="route.route_status&amp;1" />

    <!-- vorraussichtliche Restzeit bis zum Ziel -->
    <osd enabled="yes" type="text" label="TR ${navigation.item.destination_time[remaining]}" x="-280" y="-40" w="120" h="40"
        font_size="320" text_color="#ffffff" background_color="#000000B0" enable_expression="route.route_status&amp;1" />

    <!-- Restweg bis zum Ziel -->
    <osd enabled="yes" type="text" label="DR ${navigation.item.destination_length[named]}" x="-410" y="-40" w="130" h="40"
        font_size="320" text_color="#ffffff" background_color="#000000B0" enable_expression="route.route_status&amp;1" />

    <!-- Nachtrag, danke an Benjamin für diese Idee: Ausgeschilderte Ortschaft auf Wegweisern, sofern verfügbar-->
    <osd enabled="yes" type="text" label="${navigation.item[1].street_destination}" x="120" y="-40" w="494" h="40"
        font_size="320" text_color="#ffffff" background_color="#000000B0" enable_expression="route.route_status&amp;1" />

    <!-- Die komplette nächste Navigationsanweisung, also "In 5 Kilometern rechts abbiegen auf die Meierstraße Richtung Meierstadt." -->
    <osd enabled="yes" type="text" label="${navigation.item[1].navigation_long_exact}" x="120" y="-40" w="494" h="40"
        font_size="320" text_color="#ffffff" background_color="#000000B0" enable_expression="route.route_status&amp;1" />

    Aufgrund der enable_expression-Anweisungen sind diese OSDs nur bei einem eingegebenen Ziel sichtbar. Das kann bei einigen Geräten zu einem Flackern führen.

    Bitte probiert nicht alle auf einmal aus.

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Kartenmaßstab (Scala)

    <osd enabled="yes" x="-300" y="-70" w="240" h="26" font_size="150" type="scale" text_color="#ffffff" background_color="#000000B0" />

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Warnung vor stationären Blitzern

    <osd enabled="yes" type="speed_cam" w="600" h="32" x="240" y="40" font_size="700" label="Blitzer in ${distance}" />

    Dieses OSD kann man nur testen, wenn sich ein stationärer Blitzer im Umkreis von maximal 1200m befindet. Ansonsten ist dieses OSD nicht sichtbar. Dabei spielt es keine Rolle, ob sich der Blitzer auf der aktuellen Route befindet. In längeren Tunneln funktioniert dieses OSD nicht, da kein GPS-Empfang vorhanden ist.

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Sprachausgaben aus- und einschalten

    <osd enabled="yes" type="toggle_announcer" x="-65" y="270" w="60" h="60" background_color="#1a6ad700" accesskey="s" />

    Ein kleines Lautsprechersymbol erscheint auf dem Display. Klickt man darauf, wird die Sprachausgabe aus- oder eingeschaltet. Das Lautsprechersymbol kann auf hochaulösenden Displays sehr klein sein, kaum zu erkennen. Deshalb gibt es auf der Navit-Projekt-OSD-Seite eine Möglichkeit, das Bild durch eigene zu ersetzten.

    Wer noch eine reale Tastatur an seinem Gerät hat (Laptop, Netbook), kann die Taste s drücken, um die Sprache ab- oder zuzuschalten.

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Odometer, Messarmaturen

    Odometer sind OSDs, die weitere Infos zur aktuellen Tour berechnen und anzeigen. Wie der Name Meter sagt, handelt es sich hier um Messgeräte.

    Eine aktive Navigation ist dazu nicht notwendig. Zu den Odometern gehöhren:

    In folgendem Beispiel lassen sich die Odometer mit einem Klick anhalten und mit einem weiteren Klick wieder starten. Einen Reset (Rücksetzten, Neustart) macht man mit einem Doppelklick. Ein weiterer Klick ist danach zum Starten notwendig. Folgendes Beispiel zeigt, wie Ihr alle 4 aufgezählten Möglichkeiten als ein Odometer anwenden könnt.

    <osd enabled="yes" type="odometer" x="-100" y="70" w="100" h="72" font_size="240"
        label="${avg_spd} km/h&#10;${max_spd} km/h&#10;${distance}&#10;${time}" name="mein_odometer" autostart="1"
        text_color="#ffffff" background_color="#00000080" />

    Im Parameter lable wird definiert, was ausgegeben werden soll. Dieses komische &#10; bewirkt einen Zeilenumbruch in der Anzeige (Enter-Zeichen).

    Der Parameter name ist wichtig, da Navit beim Beenden diese Daten in eine Textdatei speichern muss, damit diese beim nächsten Start zur Verfügung stehen.

    Der Parameter autostart="1" bewirkt, dass der Odometer nach dem Start von Navit läuft.

    Odometer lassen sich auch einzeln und mehrfach (z.Bsp. 2 Tageskilometerzähler) definieren, dann aber bitte neue Namen verwenden.

    Odometer speichern ihre Messergebnisse beim Beenden von Navit in der Datei odometer.txt ab. Bei einem Neustart von Navit können so Messungen fortgeführt werden.

    Es gibt noch einen weiteren Odometer, die derzeitige Beschleunigung.

    <!-- akuelle Beschleunigung in m/s² -->
    <osd enabled="yes" type="odometer" name="beschleunigung" label="a=${acceleration}"
        x="240" y="80" w="240" h="40" font_size="512" text_color="#ffffff" background_color="#00000040" />

    zu den allgemeinen OSD-Parametern

    zur Übersicht

    Layouts, das Aussehen der Karte anpassen und verändern

    Ein Layout ist eine so genannte Kartenansicht. Hier legt man fest, was man auf der Karte sehen und nicht sehen will, wann die einzelnen Objekte gezeichnet werden in welcher Farbe und Größe. Um eigene Layouts zu erstellen, ist viel Geduld, Zeit und Experimentierfreudigkeit notwendig. Dieser Absatz wird sehr groß, deshalb sollte man hier mit Kommentaren nicht sparen, sonst läuft man Gefahr, die Übersicht zu verlieren. Ein fertiges Layout hat man nicht in 2 Stunden erstellt. Ich selbst habe Monate damit verbracht, meine Layouts so zu gestalten, wie ich sie will. Immer wieder nachlesen, selbst gestalten. Und am nächsten Tag auf der Fahrt zur Arbeit hat mir dann doch wieder was nicht gefallen.

    Eine regelmäßige Datensicherung ist unumgänglich. Die Layouts von Navit sollten auch gesichert sein, falls einer darin umher fuschen will.

    In Navit kann man sich sehr viele Sachen auf der Karte zeichnen lassen: Das fängt an mit Wiesen, Feldern, Wäldern, Flüsse, Bäche, Seen, geht dann weiter zu den ganzen Straßen, Rad-, Fuß-, Wanderwege und Eisenbahnen, führt dann weiter zu den Ortsnamen und Stadtteilen, der Postbriefkasten und die Telefonzelle um die Ecke, achso der Name der Pizzaria wäre nicht schlecht, Parks oder Parkplätze, Bahnhöfe und Bushatestellen ... und die Hausnummern sollen auch noch drauf.

    Damit das Ganze nicht so einfach wird, muss man das für jede Zoomstufe machen, das sind nur 19, es sei denn, ihr braucht mehr. Also Ihr seht, das Ganze wird spannend und fast unlösbar. Ich habe es doch auch hinbekommen.

    Auf den Navit-Seiten gibt es fertige Layouts von anderen Nutzern zum Download. Diese braucht man nur mit Kopieren und Einfügen in die eigene navit.xml einzubauen.

    zur Übersicht

    Grundlegender Syntax für Layouts

    <navit ... >

        <!-- ++++++++++++++++++++++++++++++++++++++++ Meine Tagesansicht ++++++++++++++++++++++++++++++++++++ -->
        <layout name="Tagansicht" nightlayout="Nachtansicht" color="#ffefb7" font="Liberation Sans">

            <!-- Cursor definieren -->
            <cursor w="26" h="26">
                <itemgra>
                    <circle color="#0000ff" radius="24" width="4">
                        <coord x="0" y="0" />
                    </circle>
                </itemgra>
            </cursor>

            <!-- Flaechen -->
            <layer name="Flaechen">
                <!-- weitere Elemente -->
            </layer>

            <!-- Wege und Strassen -->
            <layer name="Strassen">
                <!-- weitere Elemente -->
            </layer>

            <!-- interessante Kartenpunkte -->
            <layer name="POIs">
                <!-- weitere Elemente -->
            </layer>
        </layout>

    </navit>

    Man definiert einen <layout>-Tag mit folgenden Parametern:

    Innerhalb des <layout>-Tags werden die <layer>-Objekte angelegt. Diese dienen zu einer gewissen Gliederung der einzelnen Elemente, können aber auch mit Hilfe eines OSDs ab- und zugeschaltet werden. Innerhalb dieser Layer-Objekte werden die vielen, vielen einzelnen Elemente angelegt, die auf der Karte angezeigt werden.

    Layer-Objekte können auch außerhalb des Layout-Objektes definiert werden. Das macht Sinn, wenn man solche Layer in mehreren Layouts verwenden möchte. Beispiel:

    <navit ... >

        <!-- Interessante Kartenpunkte werden extern festgelegt -->
        <layer name="meine_pois">
            <!-- die vielen Poi-Elemente -->
        </layer>

        <!-- ++++++++++++++++++++++++++++++++++++++++ Meine Tagesansicht ++++++++++++++++++++++++++++++++++++ -->
        <layout name="Tagansicht" nightlayout="Nachtansicht" color="#ffefb7" font="Liberation Sans">

            <!-- Cursor definieren -->
            <cursor w="26" h="26">
                <itemgra>
                    <circle color="#0000ff" radius="24" width="4">
                        <coord x="0" y="0"/>
                    </circle>
                </itemgra>
            </cursor>

            <!-- Flaechen -->
            <layer name="Flaechen">
                <!-- weitere Elemente -->
            </layer>

            <!-- Wege und Strassen -->
            <layer name="Strassen">
                <!-- weitere Elemente -->
            </layer>

            <!-- Hier werden interessante Kartenpunkte extern eingebunden-->
            <layer name="POIs" ref="meine_pois" />

        </layout>

    </navit>

    Den Namen der Layer-Objekte kann man selbst festlegen, bitte ohne Umlaute usw..

    Weiterhin wird innerhalb des Layout-Objekts das <cursor>-Objekt angelegt. Das ist eine Darstellung des aktuellen Standorts. In diesen Beispielen ist das einfach nur ein blauer Kreis mit einem Radius von 24 Pixeln und einer Dicke von 4 Pixeln. Auch hier lassen sich weitere Inline-Elemente anlegen, z.Bsp. ein Pfeil in Fahrtrichtung. Sogar kleine Bilder sind möglich.

    zur Übersicht

    Elemente, um in den Layouts etwas darzustellen

    Layouts sind Geschmacksache. In Navit kann man sich das individuell konfigurieren. Was auf der einen Seite schön ist, ist auf der anderen Seite sehr aufwendig. Jedes einzelne Element, ob Wald, ob Wiese, ob Straße, ob Autobahn usw., muss für jede Zoom-Stufe definiert werden. Und dann sollen noch Tankstellen, Geschäfte, Sportanlagen, stationäre Blitzer usw. noch dazu.

    Und dann macht es doch keinen Sinn, bei einem Kartenausschnitt von meheren 100 km sich jede Gaststätte anzeigen zu lassen. Das gäbe nur großes Chaos. Über die CPU-Auslastung beim Anzeigen mehrerer Tausend Objekte wollen wir erst gar nicht reden.

    Hier ist also Fingerspitzengefühl notwendig sowie viel Experimentierfreudigkeit.

    Der Syntax für solche Elemente:

    <navit ... >

        <!-- Interessante Kartenpunkte werden extern festgelegt -->
        <layer name="meine_pois">
            <!-- Hotels -->
            <itemgra item_types="poi_hotel" order="11">
                <icon src="hotel.png" w="8" h="8" />
            </itemgra>
            <itemgra item_types="poi_hotel" order="12">
                <icon src="hotel.png" w="12" h="12" />
            </itemgra>
            <itemgra item_types="poi_hotel" order="13">
                <icon src="hotel_16_16.png" w="16" h="16" />
            </itemgra>
            <itemgra item_types="poi_hotel" order="14">
                <icon src="hotel_32_32.png" w="24" h="24" />
            </itemgra>
            <itemgra item_types="poi_hotel" order="15">
            <icon src="hotel_32_32.png" w="32" h="32" />
            </itemgra>
            <itemgra item_types="poi_hotel" order="16">
                <icon src="hotel_48_48.png" w="40" h="40" />
            </itemgra>
            <itemgra item_types="poi_hotel" order="17">
                <icon src="hotel_48_48.png" w="48" h="48" />
            </itemgra>
            <itemgra item_types="poi_hotel" order="18">
                <icon src="hotel_64_64.png" w="64" h="64" />
            </itemgra>
            <!-- viele weitere POI-Elemente -->
        </layer>

        <!-- ++++++++++++++++++++++++++++++++++++++++ Meine Tagesansicht ++++++++++++++++++++++++++++++++++++ -->
        <layout name="Tagansicht" nightlayout="Nachtansicht" color="#ffefb7" font="Liberation Sans">
            <!-- Cursor definieren -->
            <cursor w="26" h="26">
                <itemgra>
                    <circle color="#0000ff" radius="24" width="4">
                        <coord x="0" y="0"/>
                    </circle>
                </itemgra>
            </cursor>

            <!-- Flaechen -->
            <layer name="Flaechen">
                <!-- Nationalparks -->
                <itemgra item_types="border_national_park" order="4-18">
                    <polygon color="#80ff88" />
                    <polyline color="#50d058" width="1" />
                </itemgra>
                <!-- weitere Flaechen-Elemente -->
            </layer>

            <!-- Wege und Strassen -->
            <layer name="Strassen">
                <!-- Bundesstrassen in Zoom-Stufe 10 -- >
                <itemgra item_types="street_4_city,street_4_land,street_n_lanes" order="10">
                    <polyline color="#404040" width="8" />
                    <polyline color="#c00000" width="6" />
                    <text text_size="6" color="#000000" background_color="#ffffff" />
                </itemgra>
                <!-- weitere Wege-Elemente -->
            </layer>

            <!-- Hier werden interessante Kartenpunkte extern eingebunden-->
            <layer name="POIs" ref="meine_pois" />

        </layout>

    </navit>

    Jetzt wird es unübersichtlch. Wenn man ein wenig Ordnung hät, kommt man aber zurecht.

    Aus dem Beispiel wird ersichtlich, dass man ein Objekt mit dem <itemgra>-Objekt festlegt. Bei der Definierung legt man mit dem Parameter item_types fest, was dargestellt werden soll. Welche unzähligen Möglichkeiten es da gibt, schaut bitte auf den Navit-Seiten nach.

    Als zweiten Parameter gibt es im <itemgra> den Parameter order. Dieser Parameter legt die Zoom-Stufe fest. Hier sind Werte von 0 (ganze Welt) bis 18 (größter Kartenausschnitt) definiert. Hier sind kombinierte Angaben möglich: order="3-10" bedeutet, dass der Eintrag in den Zoomstufen 3 bis 10 gültig ist. Ein order="0-" beinhaltet alle Zoom-Stufen. Ein order="-10" beinhaltet die Zoomstufen kleiner gleich 10.

    Innerhalb von <itemgra> gibt es weitere Objekte, um etwas darzustellen.

    Um Flächen darzustellen, gibt es das <polygon>-Objekt, hier erfolgt die Angabe der Farbe mit color-Parameter im hexadezimalen Format #RGB.

    Das Objekt <polyline> zeichnet den Rand von Flächen und Linien (z.Bsp. Straßen). Der Parameter width gibt die Breite der Linien in Pixeln an.

    Das Objekt <text> soll den Namen des darzustellenden Objektes anzeigen.

    Das Objekt <icon> zeichnet ein Bild an einen Kartenpunkt, also interessant für interessante Kartenpunkte (POIs).

    Layout zum Download

    Auf verschiedene Seiten im Internet gibt es weitere Layouts zum Download, z.Bsp. im Wiki von Navit.

    Man kann hier in den Quellcode nachsehen, welche weiteren Parameter es gibt.

    zur Übersicht

    Feedback

    Keine Garantie! Aber gern bereit, Fehler zu beseitigen. Bitte hier Fehler, Kritik und Wünsche melden. Nutzt einfach dort das Formular.

    Fehlerteufel

    Im grundlegendem Syntax (Absätze und Einrückungen) am Anfang der Seite habe ich einen Fehler eingebaut (wahrscheinlich nicht nur da). Habt Ihr ihn gefunden?

    Der Tag Wellensittich wird nicht geschlossen.