Tagged: RenderTheme
-
AuthorPosts
-
April 15, 2019 at 09:23 #28140ThomasMeisterParticipant
Hallo zusammen,
ich habe (wieder) eine Verständnisfrage zur Renderreihenfolge. Ich habe gelesen: “was zuerst in der Theme-Datei kommt, wird zuerst gerendert”. Aber was heißt das genau: es kann sein, dass später etwas “darübergelegt” wird, nicht mehr sichtbar ist. Oder: Es kann nichts darübergelegt werden, weil kein Platz mehr ist.
Konkretes Beispiel, aus einem Theme:
<rule e=”any” k=”amenity” v=”fountain” zoom-min=”17″>
<rule e=”any” k=”drinking_water” v=”yes”>
<symbol src=”file:/svg/drinking_water.svg” symbol-scaling=”size” symbol-height=”16″ symbol-width=”16″ />
</rule>
<rule e=”any” k=”*” v=”*”>
<symbol src=”file:/svg/fountain.svg” symbol-scaling=”size” symbol-height=”16″ symbol-width=”16″ />
</rule>
</rule>Die zweite Bedingung trifft ja auf jeden Fall zu, wenn auch die erste Bedingung zutrifft.
Ist also die Logik “wenn Trinkwasser, dann Trinkwassersymbol und für das andere Symbol ist kein Platz mehr”?April 15, 2019 at 13:03 #28148TobiasKeymasterDer Satz bezieht sich auf Linien und Flächen. Für Symbole und Beschriftungen gilt das mit Einschränkung, da diese nach dem Prinzip “wenn Platz” dargestellt werden. Zum Glück lässt sich das mittels display= und/oder priority= sehr gut beeinflussen (mapsforge 0.5 oder höher notwendig), ich würde bei dem Beispiel von Dir einfach dem wichtigeren (das, was Du sehen willst), eine höhere Priorität geben und fertig.
Developer of Elevate mapstyle
April 15, 2019 at 14:39 #28152ThomasMeisterParticipantOK. Danke 😉 Das Beispiel habe ich aus einem bestehenden Theme kopiert (ist nicht von mir) und ich war mir nicht sicher, ob das SO funktioniert. Anscheinend schon, da bei der zweiten Regel “kein Platz mehr ist” (oder)?
April 15, 2019 at 16:21 #28154TobiasKeymasterFunktionieren tut es, wenn es darum geht, etwas bevorzugt darzustellen. Um 100% sicher zu gehen, arbeite ich dann bei wirklich wichtigen Sachen mit priority oder display=always. “Mit Einschränkung” bezieht sich darauf, dass bei Linien und Flächen halt alles dargestellt wird, nur übereinander in der Reihenfolge wie es in der XML-Datei vorkommt, während von mehreren caption oder symbol nur eines dargestellt wird (außer display=always).
Developer of Elevate mapstyle
1 user thanked author for this post.
April 15, 2019 at 19:17 #28160ThomasMeisterParticipantNoch eine kurze Frage (Ich komm mir langsam schon doof vor) :
Ist es möglich, einen frei wählbaren Text als Caption zu nehmen. Also nichts aus den Daten sondern in dem Beispiel oben das Wort “Trinkwasser” oder eben nichts oder “kein Trinkwasser”?April 15, 2019 at 20:06 #28162TobiasKeymasterNein, geht nicht. Was möglich ist, erschließt sich am besten aus dem xsd:
https://github.com/mapsforge/mapsforge/blob/master/resources/renderTheme.xsd<xs:complexType name="caption"> <xs:attribute name="cat" type="xs:string" use="optional" /> <xs:attribute name="priority" default="0" type="xs:integer" use="optional" /> <xs:attribute name="k" type="tns:textKey" use="required" />
Das bedeutet, für “k” muss der Wert ein “textKey” sein. Diese sind auch definiert:
<xs:simpleType name="textKey"> <xs:restriction base="xs:string"> <xs:enumeration value="ele" /> <xs:enumeration value="addr:housenumber" /> <xs:enumeration value="name" /> <xs:enumeration value="ref" /> </xs:restriction> </xs:simpleType>
Andere sind leider nicht zugelassen (außer bei Karten V5, die gibt’s nur bei mapsforge direkt, und da sind auch nur in den Karten vorhandene Werte möglich).
Developer of Elevate mapstyle
1 user thanked author for this post.
April 15, 2019 at 21:32 #28166ThomasMeisterParticipantSchade und VIELEN DANK für die Aufklärung!
-
AuthorPosts
- You must be logged in to reply to this topic.