LocusPro + Openandromaps : Ortsangabe / Namensangabe nicht bei allen Zoomstufen?

Started by bezel, October 10, 2016, 15:00:22

0 Members and 1 Guest are viewing this topic.

bezel

Hallo!
Ich nutze LocusPro in Kombination mit openandromaps schon eine Weile, aber jedes mal ärgert es mich, dass manchmal nur bei einer Zoomstufe/-einstellung der Ortsname eines Dorfes oder Kleinstadt angezeigt wird.
Ist je nach eingestelltem Kartentheme unterschiedlich, besonders aber bei den von mir geliebten Themes "Elevate" und "Elements", passiert aber auch bei den "Locusinternen"-Themes.

Es kommt wie gesagt gerade bei Dörfern/ Kleinstädten vor, dass
- entweder nur bei einer ganz speziellen Zoomstufe
- nur bei ganz bestimmten wenigen Zoomstufen der Ortsname angezeigt wird,
manchmal wird er auch nur ganz in 'grau', schwer lesbar angezeigt (siehe Beispiel 2).

Sehr praktisch ist das unterwegs nicht, wenn man einer Strecke folgt, der Ortsname aber nicht angezeigt wird oder man ewig hin und herzoomen muss, bis die richtige Einstellung zur Anzeige gefunden ist.

Gibt es das eine Lösungsmöglichkeit?
Wie kann man das Problem umgehen, so dass in allen Zoomstufen/ Ansichten der Ortsname angezeigt wird?

Beispielscreenshots:


-> hier: Beispiel, bei nur bestimmter Ansicht/ Zoom wird der Ortsname angezeigt - "St.Peter"


-> Beispiel, Ortsname wird nur bei best. Zoomstufe, dann auch nur in grauer Schrift angezeigt - "St.Märgen"


-> Anzeige wieder nur bei bestimmter Ansicht - "Saint Hipployte"

Vielen Dank für Eure Hilfe!
Grüße
  •  
    The following users thanked this post: Tapio

michaelbechtold

Hallo bezel,
ich habe mich etwas in die Theme-XMLs eingewühlt für die Weltkartengenerierung. Hier ein etwas modifizierter Ausschnitt aus Tobias' elevate-File. Der kritische Eintrag ist display="always", er sollte die Darstellung des Objektes (hier Name) erzwingen. Manchmal versagt hier aber die App.

Für town (s.u.) und village (an anderer Stelle im elevate.xml) kannst Du dieses display="always" einfügen nach Geschmack. Bei Zoom level 9 wird es eng, bei Zoom level 8 stark überlappend, deswegen habe ich dort kein "always" verwendet.

      <rule e="node" k="place" v="town">
         <rule e="any" k="*" v="*" zoom-max="8" zoom-min="8">
            <circle radius="2" scale-radius="false" fill="#000000" stroke-width="1" stroke="#FFFFFF" />
            <caption k="name" dy="-8" priority="106" font-style="normal" font-size="12" fill="#000000" stroke="#E5FFFFFF" stroke-width="1"/>      
            </rule>
         <rule e="any" k="*" v="*" zoom-max="9" zoom-min="9">
            <circle radius="2" scale-radius="false" fill="#000000" stroke-width="1" stroke="#FFFFFF" />
            <caption k="name" dy="-8" display="ifspace" priority="107" font-style="normal" font-size="12" fill="#000000" stroke="#E5FFFFFF" stroke-width="1"/>      
            </rule>
         <rule e="any" k="*" v="*" zoom-max="10" zoom-min="10">
            <circle radius="3" scale-radius="false" fill="#000000" stroke-width="1" stroke="#FFFFFF" />
            <caption k="name" dy="-8" display="always" priority="108" font-style="normal" font-size="13" fill="#000000" stroke="#E5FFFFFF" stroke-width="2"/>      
         </rule>         
         <rule e="any" k="*" v="*" zoom-min="11">
            <caption k="name" display="always" priority="107" position="center" symbol-id="s_city" font-style="bold" font-size="15" fill="#000000" stroke="#E5FFFFFF" stroke-width="2" />
         </rule>
      </rule>
  •  

bezel

Hallo!
ich komm' einfach nicht weiter:
ersetzt Du dieses "Original"-html script aus ELEVATE L durch Deines (s. Dein post oben):
</rule>
      <rule cat="city" e="node" k="place" v="town" zoom-max="10" zoom-min="8">
         <caption k="name" priority="104" font-style="normal" font-size="18" fill="#193480" stroke="#E5FFFFFF" stroke-width="4.00" />
      </rule>
      <rule cat="nocity" e="node" k="place" v="town" zoom-max="10" zoom-min="9">
         <caption k="name" priority="104" font-style="normal" font-size="18" fill="#193480" stroke="#E5FFFFFF" stroke-width="4.00" />
      </rule>
      <rule e="node" k="place" v="town" zoom-min="11">
         <caption k="name" priority="104" font-style="bold" font-size="22" fill="#193480" stroke="#E5FFFFFF" stroke-width="4.00" />
      </rule>


Oder von welcher Elevate version (L, XL, SVG...) gehst Du aus?
Welche Passage des html-Textes muss ich löschen und ersetzen, oder füge ich nur überall display="always" ein?

Vielen, vielen Dank - ich hoffe wirklich, endlich eine Lösung gefunden zu haben....
Grüße!
  •  

michaelbechtold

Bitte mit dem Skalpell arbeiten, und NUR dort die display="always" (mit dem Skalpell) einsetzen wo es für Dich Sinn macht.
Ich habe den ganzen Abschnitt kopiert, damit Du die Stelle in dem Dir vorliegenden Theme finden kannst.
  •  

Tobias

Quote from: michaelbechtold on October 11, 2016, 09:37:35
Bitte mit dem Skalpell arbeiten, und NUR dort die display="always" (mit dem Skalpell) einsetzen wo es für Dich Sinn macht.
Ich habe den ganzen Abschnitt kopiert, damit Du die Stelle in dem Dir vorliegenden Theme finden kannst.
display=always funktioniert mit Locus nicht, Du musst  force-draw="1" nehmen.

An Kachelgrenzen hilft das aber auch nicht, da hier, wenn sie ungünstig liegen, Namen und Symbole gar nicht angezeigt werden.

Leider ist force-draw/display keine gute Lösung, da es zur gleichzeitigen, überlappenden Darstellung führt. Hier hilft nur priority, was aber in Locus nicht funktioniert.

Ein drittes Problem ist bei Auflösungen ab 320ppi die kleine konstante Kachelgröße von 256px in Locus, d.h. mehr Kachelgrenzen und weniger Platz pro Zoomlevel, so dass mit größerer Schriftgröße bei höherer Auflösung alles viel dichter wird. Ich habe schon überlegt, alle Zoomlevel Grenzen in der LE Version komplett zu verschieben, um dem vorzubeugen, das kann aber auch unerwünschte Nebenwirkungen haben.
developer of Elevate mapstyle for OpenAndroMaps
  •  

michaelbechtold

Danke, Tobias.
Die Folgen der Locus-eigenen Lib sind ja noch schlimmer als ich dachte.

Das force-draw wird von Locus offenbar auch nicht korrekt verarbeitet, zumindest nicht bei den Stadt-namen. Ich habe die neueste Beta mit dem neuesten Elevate-LE getestet. Städte wie Oberursel oder Bad Homburg erscheinen nicht bei OAM-Germany.

<rule e="node" k="place" v="town">
         <rule cat="city" e="any" k="*" v="*" zoom-max="10" zoom-min="8">
            <caption k="name" force-draw="1" font-style="normal" font-size="9dp" fill="#193480" stroke="#E5FFFFFF" stroke-width="2dp" />
         </rule>
         <rule cat="nocity" e="any" k="*" v="*" zoom-max="10" zoom-min="8">
            <caption k="name" force-draw="1" font-style="normal" font-size="9dp" fill="#193480" stroke="#E5FFFFFF" stroke-width="2dp" />
         </rule>
         <rule e="any" k="*" v="*" zoom-min="11">
            <caption k="name" font-style="bold" font-size="11dp" fill="#193480" stroke="#E5FFFFFF" stroke-width="2dp" />
         </rule>
      </rule>
  •  

bezel

Ich bin ja vollkommener Laie, bin am Rumprobieren und Testen, aber keine Veränderung der Elevate LE - xml Datei bringt den gewünschten Erfolg.

Kann doch eigentlich nicht so schwer sein, bei dem Locusinternen-Theme funktionierts ja auch,
siehe verschiedene Zoomstufen hier:

Ort "Saint Hippolyte" Zoomstufe 13 - 15 - 17


Kann jemand weiterhelfen? Gibt es doch eine Möglichkeit?
Grüße!
  •  

Tobias

Im Locus-internen Theme werden viel weniger Informationen angezeigt, deshalb ist die Darstellung zuverlässiger. Es wird da gar nicht force-draw oder anderes verwendet.

Schalte einfach mal bei Elevate alle Beschriftungen außer den Ortsnamen ab. In Deiner Konfiguration von Elevate werden viele andere Informationen angezeigt, die in Konkurrenz zum Ortsnamen stehen. Am besten zur Ortsnamendarstellung ist der Stadt-Kartenstil. Dass Ortsnamen bevorzugt werden lässt sich nur zuverlässig mit priority steuern, was Locus aber nicht unterstützt.

Elevate ist für Standard-Mapsforge entwickelt und funktioniert da einfach besser. Ich habe viele Optimierungen in die Locus-Version eingebaut, aber manches geht einfach nicht. Wenn ich nur so wenig zulassen würde wie im Locus internen Theme, würde die Standard-Mapsforge-Version für alle anderen Anwendungen darunter leiden. Wie oben geschrieben würde es ggf. Sinn machen, alle Informationen erst einen Zoom-Level höher anzuzeigen, da zögere ich jedoch noch.
developer of Elevate mapstyle for OpenAndroMaps
  •