1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-07-16 03:44:24 +02:00

Compare commits

...

30 Commits
13.28 ... 13.31

Author SHA1 Message Date
cd44f350e1 Split light rails from trams 2024-11-22 08:12:05 +01:00
90534c991c Added missing rails 2024-11-22 07:52:52 +01:00
071b16f76d Use the boundingbox center instead of the centroid like Mapsforge does 2024-11-21 19:05:08 +01:00
6d450023b0 Centroid computation cleanup 2024-11-21 17:52:54 +01:00
890985bacd Fixed debug builds 2024-11-21 10:59:32 +01:00
496065b549 Version++ 2024-11-21 10:58:00 +01:00
33b9354212 Some more POIs 2024-11-20 20:27:05 +01:00
cee20e2e9f Increased objects chache size 2024-11-20 19:10:44 +01:00
e10c6547ac Some more POI enhancements 2024-11-20 19:05:09 +01:00
2c1d340a44 Millitary areas zoom levels 2024-11-20 09:24:40 +01:00
848bde0f80 Properly mix the way and node POIs 2024-11-20 09:13:59 +01:00
5d3d2d7571 Embassies 2024-11-19 23:49:23 +01:00
72ae27f724 Distinguish schools and universities 2024-11-19 21:33:41 +01:00
a433ca3e1d Lock gates 2024-11-19 21:06:53 +01:00
26c99af3dc Observation towers 2024-11-19 20:46:13 +01:00
47b936dede Adjusted POI appearance levels 2024-11-19 19:12:25 +01:00
e8c8b86b81 Removed accidentally left debug output 2024-11-19 19:08:41 +01:00
62651666e1 Unified point and areal labels processing 2024-11-19 09:40:26 +01:00
7c59998f96 Do not duplicate the label rules 2024-11-19 01:45:34 +01:00
d577eab66e Improved natural POIs priorities 2024-11-19 00:32:32 +01:00
c4de36c7e4 Saddles + natural POIs cleanup 2024-11-19 00:25:12 +01:00
bf68ac8145 Give the artefact a better name 2024-11-18 22:27:26 +01:00
6169bcc67a Remove Qt version from the name as we only build for Qt6 now 2024-11-18 18:30:56 +01:00
94d62ab2b8 Dropped MacOS Qt5 build 2024-11-18 18:22:02 +01:00
3658c09403 Less agressive water labels 2024-11-18 16:55:16 +01:00
07085983ee Make the style more compatible with the original Mapsforge rendering engine 2024-11-18 15:01:00 +01:00
0e1244da6d Version++ 2024-11-18 14:37:30 +01:00
4a6deeaa16 Fixed graveyard rendering 2024-11-18 14:31:47 +01:00
8d3784e142 Make the patterns work with Qt5 2024-11-18 10:59:37 +01:00
67c1c1fd27 Version++ 2024-11-18 10:58:59 +01:00
31 changed files with 484 additions and 435 deletions

View File

@ -1,4 +1,4 @@
version: 13.28.{build}
version: 13.31.{build}
configuration:
- Release

View File

@ -6,32 +6,8 @@ on:
- master
jobs:
qt5:
name: GPXSee Qt5 build
runs-on: macos-12
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '5.15.2'
- name: Create localization
run: lrelease gpxsee.pro
- name: Configure build
run: qmake gpxsee.pro
- name: Build project
run: make -j3
- name: Create DMG
run: macdeployqt GPXSee.app -dmg -appstore-compliant
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: GPXSee-qt5.dmg
path: GPXSee.dmg
qt6:
name: GPXSee Qt6 build
build:
name: GPXSee
runs-on: macos-latest
steps:
- name: Checkout
@ -39,7 +15,7 @@ jobs:
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '6.7.2'
version: '6.8.0'
modules: qtpositioning qtserialport qtimageformats
- name: Create localization
run: lrelease gpxsee.pro
@ -52,5 +28,5 @@ jobs:
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: GPXSee-qt6.dmg
path: GPXSee.dmg
name: GPXSee.dmg

View File

@ -49,10 +49,10 @@
<area fill="#e4efcf"/>
</rule>
<rule e="way" closed="yes" k="landuse" v="orchard" zoom-min="10">
<area src=":/patterns/orchard.svg" symbol-width="28"/>
<area src=":/patterns/orchard.svg" symbol-width="7"/>
</rule>
<rule e="way" closed="yes" k="landuse" v="vineyard" zoom-min="10">
<area src=":/patterns/vineyard.svg" symbol-width="28" symbol-height="32"/>
<area src=":/patterns/vineyard.svg" symbol-width="7" symbol-height="8"/>
</rule>
<!-- Hillshading -->
@ -82,34 +82,33 @@
<!-- Water -->
<rule e="way" closed="yes" k="natural" v="water">
<area fill="#9fc4e1"/>
<rule e="way" k="*" v="*" zoom-min="11" zoom-max="13">
<caption fill="#9fc4e1" font-size="12" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
</rule>
<rule e="way" k="*" v="*" zoom-min="14" zoom-max="19">
<caption fill="#9fc4e1" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
<rule e="way" k="*" v="*" zoom-min="14">
<caption fill="#ffffff" font-size="12" font-family="serif" font-style="italic" k="name" stroke="#9fc4e1" stroke-width="2"/>
</rule>
</rule>
<rule e="way" closed="yes" k="natural" v="marsh|wetland|mud" zoom-min="13">
<area src=":/patterns/wetland.svg" symbol-height="32"/>
<rule e="way" closed="yes" k="natural" v="marsh|wetland|mud" zoom-min="12">
<area src=":/patterns/wetland.svg" symbol-height="4"/>
</rule>
<rule e="way" k="waterway" v="river" zoom-min="8">
<line stroke="#9fc4e1" stroke-width="1.2"/>
<pathText fill="#9fc4e1" font-size="12" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
<rule e="way" k="*" v="*" zoom-min="12">
<rule e="way" k="*" v="*" zoom-min="10" zoom-max="13">
<pathText fill="#ffffff" font-size="12" font-family="serif" font-style="italic" k="name" stroke="#9fc4e1" stroke-width="2"/>
</rule>
<rule e="way" k="*" v="*" zoom-min="14">
<lineSymbol src=":/symbols/flow.svg" symbol-width="16" symbol-height="8"/>
<pathText fill="#ffffff" font-size="14" font-family="serif" font-style="italic" k="name" stroke="#9fc4e1" stroke-width="2"/>
</rule>
</rule>
<rule e="way" k="waterway" v="stream|drain|ditch">
<rule e="way" k="waterway" v="stream|drain|ditch" zoom-min="10">
<rule e="way" k="intermittent" v="~|no">
<rule e="way" k="*" v="*" zoom-min="10" zoom-max="13">
<rule e="way" k="*" v="*" zoom-max="13">
<line stroke="#9fc4e1" stroke-width="1"/>
<pathText fill="#9fc4e1" font-size="11" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
</rule>
<rule e="way" k="*" v="*" zoom-min="14">
<line stroke="#9fc4e1" stroke-width="0.6"/>
<pathText fill="#9fc4e1" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
<rule e="way" k="name" v="*">
<pathText fill="#ffffff" font-size="12" font-family="serif" font-style="italic" k="name" stroke="#9fc4e1" stroke-width="2"/>
<rule e="way" k="name" v="*" zoom-min="16">
<lineSymbol src=":/symbols/flow.svg" symbol-width="16" symbol-height="8"/>
</rule>
</rule>
@ -127,9 +126,12 @@
<rule e="way" closed="yes" k="waterway" v="dam" zoom-min="10">
<area fill="#bbbbbb"/>
</rule>
<rule e="way" k="waterway" v="lock_gate" zoom-min="10">
<line stroke="#000000" stroke-width="0.1"/>
</rule>
<rule e="way" k="waterway" v="weir" zoom-min="10">
<lineSymbol src=":/symbols/cliff.svg" repeat="true" display="always" repeat-gap="0" repeat-start="0" symbol-width="4" symbol-height="5"/>
<pathText fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
<pathText fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2"/>
</rule>
<rule e="way" k="man_made" v="pier" zoom-min="10">
<line stroke="#ededed" stroke-width="0.5" stroke-linecap="butt"/>
@ -152,20 +154,20 @@
<!-- City areas -->
<rule e="way" closed="yes" k="landuse" v="cemetery">
<area src=":/patterns/cemetery.svg" symbol-width="30" symbol-height="28"/>
<area src=":/patterns/cemetery.svg" symbol-width="6" symbol-height="7"/>
<rule e="way" k="*" v="*" zoom-min="15">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2"/>
</rule>
</rule>
<rule e="way" closed="yes" k="amenity" v="grave_yard">
<area src=":/patterns/cemetery.svg" symbol-width="30" symbol-height="28"/>
<area src=":/patterns/cemetery.svg" symbol-width="6" symbol-height="7"/>
</rule>
<rule e="way" closed="yes" k="bridge" v="yes|true|viaduct|aqueduct|suspension|culvert|swing" zoom-min="10">
<area fill="#ffffff"/>
</rule>
<rule e="way" closed="yes" k="amenity" v="parking" zoom-min="10">
<area fill="#ffffff" stroke="#d5cdc0" stroke-width="0.1"/>
<rule e="way" k="*" v="*" zoom-min="16">
<rule e="way" k="*" v="*" zoom-min="17">
<symbol id="parking" src=":/POI/parking-11.svg" symbol-width="11"/>
</rule>
</rule>
@ -184,14 +186,16 @@
<!-- Area overlays -->
<rule e="way" k="landuse" v="military" zoom-min="10">
<area src=":/patterns/military-area.svg" symbol-height="32"/>
<caption fill="#ff4040" font-size="10" font-style="italic" text-transform="uppercase" k="name" stroke="#ffffff" stroke-width="1"/>
<area src=":/patterns/military-area.svg" symbol-height="4"/>
<rule e="way" k="*" v="*" zoom-min="16">
<caption fill="#ff4040" font-size="10" font-style="italic" text-transform="uppercase" k="name" stroke="#ffffff" stroke-width="2"/>
</rule>
</rule>
<rule e="way" k="boundary" v="protected_area|national_park" zoom-min="10" zoom-max="14">
<rule e="way" k="protect_class" v="pr_2">
<area src=":/patterns/nature-reserve.svg" symbol-height="32"/>
<rule e="way" k="*" v="*" zoom-max="12">
<caption fill="#9ac269" font-size="10" font-style="italic" text-transform="uppercase" k="name" stroke="#ffffff" stroke-width="1"/>
<area src=":/patterns/nature-reserve.svg" symbol-height="4"/>
<rule e="way" k="*" v="*" zoom-max="11">
<caption fill="#9ac269" font-size="10" font-style="italic" text-transform="uppercase" k="name" stroke="#ffffff" stroke-width="2"/>
</rule>
</rule>
</rule>
@ -203,13 +207,13 @@
<rule e="way" k="building" v="civic">
<area fill="#cfc4b3" stroke="#cdccc4" stroke-width="0.1"/>
<rule e="way" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" priority="-10"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" priority="-10"/>
</rule>
</rule>
<rule e="way" k="building" v="cathedral|church|basilica">
<area fill="#a19d96" stroke="#cdccc4" stroke-width="0.1"/>
<rule e="way" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2"/>
</rule>
</rule>
@ -346,7 +350,7 @@
<line stroke="#ffffff" stroke-width="0.4"/>
</rule>
</rule>
<rule e="way" k="highway" v="tertiary|tertiary_link|residential|living_street">
<rule e="way" k="highway" v="tertiary|tertiary_link|residential|living_street|raceway">
<rule e="way" k="*" v="*" zoom-min="13" zoom-max="13">
<line stroke="#d5cdc0" stroke-width="1.5"/>
<line stroke="#ffffff" stroke-width="0.75"/>
@ -356,7 +360,7 @@
<line stroke="#ffffff" stroke-width="0.75"/>
</rule>
<rule e="way" k="*" v="*" zoom-min="15">
<pathText fill="#000000" font-size="10" k="name" priority="-7" stroke="#FFFFFF" stroke-width="1"/>
<pathText fill="#000000" font-size="10" k="name" priority="-7" stroke="#FFFFFF" stroke-width="2"/>
<rule e="way" k="oneway" v="yes|true|1" zoom-min="16">
<lineSymbol priority="-50" src=":/symbols/oneway.svg" symbol-width="16" symbol-height="8"/>
</rule>
@ -384,7 +388,7 @@
</rule>
</rule>
<rule e="way" k="*" v="*" zoom-min="14">
<pathText fill="#000000" font-size="10" k="name" priority="-5" stroke="#FFFFFF" stroke-width="1"/>
<pathText fill="#000000" font-size="10" k="name" priority="-5" stroke="#FFFFFF" stroke-width="2"/>
<rule e="way" k="oneway" v="yes|true|1" zoom-min="16">
<lineSymbol priority="-50" src=":/symbols/arrow.svg" symbol-width="16" symbol-height="8"/>
</rule>
@ -436,11 +440,11 @@
</rule>
<rule e="way" k="highway" v="motorway" zoom-min="14">
<pathText fill="#FFFFFF" font-size="10" k="ref" stroke="#dd3e3e" stroke-width="1" text-orientation="auto_down"/>
<pathText fill="#FFFFFF" font-size="10" k="ref" stroke="#dd3e3e" stroke-width="2" text-orientation="auto_down"/>
</rule>
<rule e="node" k="highway" v="motorway_junction" zoom-min="16">
<symbol id="exit" src=":/symbols/exit.svg" symbol-width="15" symbol-height="11" priority="100"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="exit"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="exit"/>
</rule>
<!-- Railways -->
@ -462,6 +466,9 @@
<line stroke="#ffffff" stroke-width="0.4608" stroke-dasharray="2,2" stroke-linecap="butt" scale="all"/>
</rule>
</rule>
<rule e="way" k="railway" v="narrow_gauge|light_rail|funicular" zoom-min="15">
<line stroke="#414141" stroke-width="0.2" stroke-linecap="butt"/>
</rule>
<rule e="way" k="railway" v="tram" zoom-min="15">
<line stroke="#717171" stroke-width="0.2" stroke-linecap="butt"/>
</rule>
@ -481,6 +488,9 @@
<line stroke="#878787" stroke-width="0.4144" stroke-linecap="butt" stroke-dasharray="2,1" scale="all"/>
</rule>
</rule>
<rule e="way" k="railway" v="narrow_gauge|light_rail|funicular" zoom-min="15">
<line stroke="#414141" stroke-width="0.2" stroke-linecap="butt" stroke-dasharray="12,4"/>
</rule>
<rule e="way" k="railway" v="tram" zoom-min="15">
<line stroke="#717171" stroke-width="0.2" stroke-linecap="butt" stroke-dasharray="12,4"/>
</rule>
@ -507,7 +517,7 @@
<rule e="way" closed="no" k="aerialway" v="*">
<line stroke="#202020" stroke-linecap="butt" stroke-width="0.3"/>
<rule e="any" k="*" v="*" zoom-min="15">
<pathText fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1"/>
<pathText fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2"/>
</rule>
</rule>
@ -524,62 +534,76 @@
</rule>
<!-- Town & vilage names -->
<rule e="node" k="place" v="locality" zoom-min="14">
<caption fill="#000000" font-size="10" k="name" priority="10" stroke="#FFFFFF" stroke-width="1"/>
<rule e="node" k="place" v="locality|isolated_dwelling|farm" zoom-min="14">
<caption fill="#000000" font-size="10" k="name" priority="10" stroke="#FFFFFF" stroke-width="2"/>
</rule>
<rule e="node" k="place" v="hamlet" zoom-min="12">
<caption fill="#000000" font-size="12" k="name" priority="20" stroke="#FFFFFF" stroke-width="1"/>
<caption fill="#000000" font-size="12" k="name" priority="20" stroke="#FFFFFF" stroke-width="2"/>
</rule>
<rule e="node" k="place" v="village" zoom-min="11">
<caption fill="#000000" font-size="12" k="name" priority="20" stroke="#FFFFFF" stroke-width="1"/>
<caption fill="#000000" font-size="12" k="name" priority="20" stroke="#FFFFFF" stroke-width="2"/>
</rule>
<rule e="node" k="place" v="town" zoom-min="9">
<caption fill="#000000" font-size="14" k="name" priority="30" stroke="#FFFFFF" stroke-width="1"/>
<caption fill="#000000" font-size="14" k="name" priority="30" stroke="#FFFFFF" stroke-width="2"/>
</rule>
<rule e="node" k="place" v="city">
<rule e="node" k="capital" v="yes|1|2">
<caption fill="#000000" font-size="16" font-style="bold" k="name" priority="40" stroke="#FFFFFF" stroke-width="1" text-transform="uppercase"/>
<caption fill="#000000" font-size="16" font-style="bold" k="name" priority="40" stroke="#FFFFFF" stroke-width="2" text-transform="uppercase"/>
</rule>
<rule e="node" k="capital" v="no|~">
<caption fill="#000000" font-size="16" font-style="bold" k="name" priority="35" stroke="#FFFFFF" stroke-width="1"/>
<caption fill="#000000" font-size="16" font-style="bold" k="name" priority="35" stroke="#FFFFFF" stroke-width="2"/>
</rule>
</rule>
<!-- Nature POIs -->
<rule e="node" k="natural" v="peak" zoom-min="13">
<rule e="node" k="name" v="*">
<symbol id="peak" src=":/POI/mountain-11.svg" symbol-width="11"/>
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" priority="10" stroke="#FFFFFF" stroke-width="1" symbol-id="peak"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="ele" priority="9" stroke="#FFFFFF" stroke-width="1" symbol-id="peak"/>
</rule>
<symbol id="peak" src=":/POI/mountain-11.svg" symbol-width="11" priority="10"/>
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="peak"/>
</rule>
</rule>
<rule e="node" k="natural" v="saddle" zoom-min="13">
<rule e="node" k="name" v="*">
<symbol id="saddle" src=":/symbols/saddle.svg" symbol-width="9" symbol-height="11" priority="9"/>
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="saddle"/>
</rule>
</rule>
<rule e="node" k="natural" v="volcano" zoom-min="13">
<symbol id="volcano" src=":/POI/volcano-11.svg" symbol-width="11"/>
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" priority="10" stroke="#FFFFFF" stroke-width="1" symbol-id="volcano"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="ele" priority="9" stroke="#FFFFFF" stroke-width="1" symbol-id="volcano"/>
<rule e="node" k="name" v="*">
<symbol id="volcano" src=":/POI/volcano-11.svg" symbol-width="11" priority="10"/>
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="volcano"/>
</rule>
</rule>
<rule e="node" k="waterway" v="waterfall" zoom-min="15">
<symbol id="waterfall" src=":/POI/waterfall-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" priority="10" stroke="#FFFFFF" stroke-width="1" symbol-id="waterfall"/>
<rule e="any" k="name" v="*">
<symbol id="waterfall" src=":/POI/waterfall-11.svg" symbol-width="11" priority="8"/>
<rule e="any" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="waterfall"/>
</rule>
</rule>
</rule>
<rule e="node" k="natural" v="spring" zoom-min="15">
<rule e="any" k="name" v="*">
<symbol id="spring" src=":/POI/water-11.svg" symbol-width="11"/>
<symbol id="spring" src=":/POI/water-11.svg" symbol-width="11" priority="7"/>
<rule e="any" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" priority="10" stroke="#FFFFFF" stroke-width="1" symbol-id="spring"/>
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="spring"/>
</rule>
</rule>
</rule>
<rule e="node" k="natural" v="hot_spring|geyser" zoom-min="15">
<rule e="any" k="name" v="*">
<symbol id="hot-spring" src=":/POI/hot-spring.svg" symbol-width="11" priority="7"/>
<rule e="any" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="hot-spring"/>
</rule>
</rule>
</rule>
<rule e="node" k="tourism" v="viewpoint" zoom-min="15">
<rule e="node" k="name" v="*">
<symbol id="viewpoint" src=":/POI/viewpoint-11.svg" symbol-width="11"/>
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="viewpoint"/>
<rule e="any" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-family="serif" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="viewpoint"/>
</rule>
</rule>
</rule>
@ -588,156 +612,192 @@
<rule e="any" k="name" v="*">
<symbol id="hospital" src=":/POI/hospital-11.svg" symbol-width="11" priority="20"/>
<rule e="any" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="hospital"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="hospital"/>
</rule>
</rule>
</rule>
<rule e="any" k="amenity" v="doctors" zoom-min="16">
<symbol id="doctor" src=":/POI/doctor-11.svg" symbol-width="11"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="doctor"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="doctor"/>
</rule>
<rule e="any" k="amenity|building" v="police" zoom-min="15">
<symbol id="police" src=":/POI/police-11.svg" symbol-width="11" priority="19"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="police"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="police"/>
</rule>
</rule>
<rule e="any" k="amenity|building" v="fire_station" zoom-min="15">
<symbol id="fire-station" src=":/POI/fire-station-11.svg" symbol-width="11" priority="18"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="fire-station"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="fire-station"/>
</rule>
</rule>
<rule e="any" k="barrier" v="border_control|checkpoint" zoom-min="15">
<symbol id="checkpoint" src=":/POI/entrance-alt1-11.svg" symbol-width="11" priority="20"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="checkpoint"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="checkpoint"/>
</rule>
<rule e="any" k="aeroway" v="helipad" zoom-min="14">
<symbol id="heliport" src=":/POI/heliport-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="heliport"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="heliport"/>
</rule>
</rule>
<rule e="any" k="aeroway" v="aerodrome" zoom-min="12">
<symbol id="airport" src=":/POI/airport-11.svg" symbol-width="11"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="airport"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="airport"/>
</rule>
<rule e="any" k="railway" v="station|halt">
<rule e="any" k="station" v="~" zoom-min="14">
<symbol id="train-station" src=":/POI/rail-11.svg" symbol-width="13" priority="20"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="train-station"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="train-station"/>
</rule>
<rule e="any" k="station" v="subway" zoom-min="15">
<symbol id="metro-station" src=":/POI/rail-metro-11.svg" symbol-width="11" priority="20"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="metro-station"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="metro-station"/>
</rule>
<rule e="any" k="station" v="light_rail" zoom-min="15">
<symbol id="light-rail-station" src=":/POI/rail-light-11.svg" symbol-width="11" priority="20"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="light-rail-station"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="light-rail-station"/>
</rule>
</rule>
<rule e="node" k="railway" v="tram_stop" zoom-min="16">
<symbol id="tram-stop" src=":/POI/rail-light-11.svg" symbol-width="11" priority="10"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="tram-stop"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="tram-stop"/>
</rule>
</rule>
<rule e="any" k="amenity" v="bus_station" zoom-min="16">
<symbol id="bus-station" src=":/POI/bus-11.svg" symbol-width="11" priority="10"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="bus-station"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="bus-station"/>
</rule>
<rule e="any" k="highway" v="bus_stop" zoom-min="16">
<symbol id="bus-stop" src=":/POI/bus-11.svg" symbol-width="11" priority="5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="bus-stop"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="bus-stop"/>
</rule>
</rule>
<rule e="any" k="amenity" v="ferry_terminal" zoom-min="16">
<symbol id="ferry" src=":/POI/ferry-11.svg" symbol-width="11" priority="10"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="ferry"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="ferry"/>
</rule>
</rule>
<rule e="any" k="amenity" v="fuel" zoom-min="15">
<symbol id="fuel" src=":/POI/fuel-11.svg" symbol-width="11" priority="15"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="fuel"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="fuel"/>
</rule>
</rule>
<rule e="any" k="amenity" v="shelter" zoom-min="16">
<symbol id="shelter" src=":/POI/shelter-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="shelter"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="shelter"/>
</rule>
</rule>
<rule e="any" k="tourism|building" v="alpine_hut|hotel|hostel|guest_house|chalet|motel" zoom-min="16">
<rule e="any" k="tourism|building" v="alpine_hut" zoom-min="15">
<symbol id="alpine_hut" src=":/POI/home-11.svg" symbol-width="11" priority="5"/>
<rule e="any" k="*" v="*" zoom-min="16">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="alpine_hut"/>
</rule>
</rule>
<rule e="any" k="tourism|building" v="hotel|hostel|guest_house|chalet|motel" zoom-min="17">
<symbol id="lodging" src=":/POI/lodging-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="lodging"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="lodging"/>
</rule>
</rule>
<rule e="any" k="tourism|accommodation" v="camp_site|caravan_site" zoom-min="16">
<symbol id="camp" src=":/POI/campsite-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="camp"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="camp"/>
</rule>
</rule>
<rule e="any" k="man_made" v="lighthouse" zoom-min="16">
<rule e="any" k="man_made" v="lighthouse" zoom-min="15">
<symbol id="lighthouse" src=":/POI/lighthouse-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="lighthouse"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="lighthouse"/>
</rule>
</rule>
<rule e="any" k="tower" v="communication" zoom-min="16">
<symbol id="com-tower" src=":/POI/communications-tower-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="com-tower"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="com-tower"/>
</rule>
</rule>
<rule e="any" k="tower" v="observation" zoom-min="16">
<symbol id="obs-tower" src=":/POI/observation-tower.svg" symbol-width="11" priority="5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="obs-tower"/>
</rule>
</rule>
<rule e="any" k="power" v="generator" zoom-min="16">
<rule e="any" k="generator:source" v="wind">
<symbol id="wind-turbine" src=":/POI/cross-11.svg" symbol-width="11" priority="5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="wind-turbine"/>
</rule>
</rule>
</rule>
<rule e="any" k="man_made" v="watermill" zoom-min="16">
<symbol id="watermill" src=":/POI/watermill-11.svg" symbol-width="11" priority="5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="watermill"/>
</rule>
</rule>
<rule e="any" k="man_made|tower" v="windmill" zoom-min="16">
<symbol id="windmill" src=":/POI/windmill-11.svg" symbol-width="11" priority="5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="windmill"/>
</rule>
</rule>
<rule e="any" k="amenity" v="theatre" zoom-min="16">
<symbol id="theatre" src=":/POI/theatre-11.svg" symbol-width="11"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="theatre"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="theatre"/>
</rule>
</rule>
<rule e="any" k="amenity" v="cinema" zoom-min="16">
<symbol id="cinema" src=":/POI/cinema-11.svg" symbol-width="11"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="cinema"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="cinema"/>
</rule>
</rule>
<rule e="any" k="tourism" v="museum" zoom-min="16">
<symbol id="museum" src=":/POI/museum-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="museum"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="museum"/>
</rule>
</rule>
<rule e="any" k="amenity|building" v="library" zoom-min="16">
<symbol id="library" src=":/POI/library-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="library"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="library"/>
</rule>
</rule>
<rule e="any" k="amenity" v="post_office" zoom-min="16">
<symbol id="post" src=":/POI/post-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="post"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="post"/>
</rule>
</rule>
<rule e="any" k="historic" v="memorial" zoom-min="17">
<symbol id="memorial" src=":/POI/monument-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="memorial"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="memorial"/>
</rule>
</rule>
<rule e="any" k="amenity" v="bank" zoom-min="16">
<rule e="any" k="amenity" v="bank" zoom-min="17">
<symbol id="bank" src=":/POI/bank-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="bank"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="bank"/>
</rule>
</rule>
<rule e="any" k="amenity" v="toilets" zoom-min="16">
@ -746,138 +806,202 @@
<rule e="any" k="information" v="visitor_centre|office" zoom-min="16">
<symbol id="information" src=":/POI/information-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="information"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="information"/>
</rule>
</rule>
<rule e="any" k="historic" v="castle" zoom-min="16">
<symbol id="castle" src=":/POI/castle-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="castle"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="castle"/>
</rule>
</rule>
<rule e="any" k="amenity" v="townhall" zoom-min="16">
<symbol id="townhall" src=":/POI/town-hall-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="townhall"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="townhall"/>
</rule>
</rule>
<rule e="any" k="amenity" v="school|university" zoom-min="16">
<rule e="any" k="amenity" v="university" zoom-min="16">
<symbol id="university" src=":/POI/college-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="university"/>
</rule>
</rule>
<rule e="any" k="amenity" v="school" zoom-min="16">
<symbol id="school" src=":/POI/school-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="school"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="school"/>
</rule>
</rule>
<rule e="any" k="amenity|building" v="embassy" zoom-min="16">
<symbol id="embassy" src=":/POI/embassy-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="embassy"/>
</rule>
</rule>
<rule e="any" k="leisure" v="stadium" zoom-min="16">
<symbol id="stadium" src=":/POI/stadium-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="stadium"/>
</rule>
</rule>
<rule e="any" k="tourism" v="zoo" zoom-min="16">
<symbol id="zoo" src=":/POI/zoo-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="zoo"/>
</rule>
</rule>
<rule e="any" k="leisure" v="park" zoom-min="16">
<rule e="any" k="name" v="*">
<symbol id="park" src=":/POI/park-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="park"/>
</rule>
</rule>
</rule>
<rule e="any" k="leisure" v="garden" zoom-min="16">
<rule e="any" k="name" v="*">
<symbol id="garden" src=":/POI/garden-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="garden"/>
</rule>
</rule>
</rule>
<rule e="any" k="sport" v="swimming" zoom-min="16">
<symbol id="swimming" src=":/POI/swimming-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="swimming"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="swimming"/>
</rule>
</rule>
<rule e="any" k="sport" v="golf" zoom-min="16">
<rule e="any" k="sport|leisure" v="golf|golf_course" zoom-min="17">
<symbol id="golf" src=":/POI/golf-11.svg" symbol-width="11"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="golf"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="golf"/>
</rule>
<rule e="any" k="sport" v="soccer" zoom-min="16">
<rule e="any" k="sport" v="soccer" zoom-min="17">
<symbol id="soccer" src=":/POI/soccer-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="soccer"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="soccer"/>
</rule>
</rule>
<rule e="any" k="sport" v="tennis" zoom-min="16">
<rule e="any" k="sport" v="tennis" zoom-min="17">
<symbol id="tennis" src=":/POI/tennis-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="tennis"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="tennis"/>
</rule>
</rule>
<rule e="any" k="sport" v="skateboard" zoom-min="16">
<rule e="any" k="sport" v="skateboard" zoom-min="17">
<symbol id="skateboard" src=":/POI/skateboard-11.svg" symbol-width="11"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="skateboard"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="skateboard"/>
</rule>
</rule>
<rule e="any" k="amenity" v="restaurant" zoom-min="16">
<rule e="any" k="amenity" v="restaurant" zoom-min="17">
<symbol id="restaurant" src=":/POI/restaurant-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="restaurant"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="restaurant"/>
</rule>
</rule>
<rule e="any" k="amenity" v="fast_food" zoom-min="16">
<rule e="any" k="amenity" v="fast_food" zoom-min="17">
<symbol id="fast-food" src=":/POI/fast-food-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="fast-food"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="fast-food"/>
</rule>
</rule>
<rule e="any" k="amenity" v="cafe" zoom-min="16">
<rule e="any" k="amenity" v="cafe" zoom-min="17">
<symbol id="cafe" src=":/POI/cafe-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="cafe"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="cafe"/>
</rule>
</rule>
<rule e="any" k="amenity" v="bar" zoom-min="17">
<symbol id="bar" src=":/POI/bar-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="bar"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="bar"/>
</rule>
</rule>
<rule e="any" k="amenity" v="pub" zoom-min="16">
<rule e="any" k="amenity" v="pub|biergarten" zoom-min="17">
<symbol id="pub" src=":/POI/beer-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="pub"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="pub"/>
</rule>
</rule>
<rule e="any" k="amenity" v="ice_cream" zoom-min="17">
<symbol id="ice-cream" src=":/POI/ice-cream-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="ice-cream"/>
</rule>
</rule>
<rule e="any" k="shop" v="car|car_repair|car_parts" zoom-min="16">
<symbol id="car-repair" src=":/POI/car-repair-11.svg" symbol-width="11" priority="-5"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="car-repair"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="car-repair"/>
</rule>
<rule e="any" k="shop" v="supermarket" zoom-min="16">
<symbol id="supermarket" src=":/POI/grocery-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="supermarket"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="supermarket"/>
</rule>
</rule>
<rule e="any" k="shop" v="convenience" zoom-min="16">
<rule e="any" k="shop" v="convenience" zoom-min="17">
<symbol id="convenience" src=":/POI/shop-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="convenience"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="convenience"/>
</rule>
</rule>
<rule e="any" k="shop" v="doityourself|hardware" zoom-min="16">
<rule e="any" k="shop" v="doityourself|hardware" zoom-min="17">
<symbol id="hardware" src=":/POI/hardware-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="hardware"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="hardware"/>
</rule>
</rule>
<rule e="any" k="shop" v="bakery" zoom-min="16">
<rule e="any" k="shop" v="bakery" zoom-min="17">
<symbol id="bakery" src=":/POI/bakery-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="bakery"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="bakery"/>
</rule>
</rule>
<rule e="any" k="amenity" v="pharmacy" zoom-min="16">
<symbol id="pharmacy" src=":/POI/pharmacy-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="pharmacy"/>
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="pharmacy"/>
</rule>
</rule>
<rule e="any" k="shop" v="bicycle" zoom-min="16">
<rule e="any" k="shop" v="bicycle" zoom-min="17">
<symbol id="bikeshop" src=":/POI/bicycle-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="bikeshop"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="bikeshop"/>
</rule>
</rule>
<rule e="any" k="shop" v="hairdresser" zoom-min="16">
<rule e="any" k="shop" v="hairdresser" zoom-min="17">
<symbol id="hairdresser" src=":/POI/hairdresser-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="hairdresser"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="hairdresser"/>
</rule>
</rule>
<rule e="any" k="shop" v="beverages|alcohol" zoom-min="16">
<rule e="any" k="shop" v="beverages|alcohol" zoom-min="17">
<symbol id="alcohol" src=":/POI/alcohol-shop-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="17">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="1" symbol-id="alcohol"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="alcohol"/>
</rule>
</rule>
<rule e="any" k="shop" v="travel_agency" zoom-min="17">
<symbol id="travel-agency" src=":/POI/beach-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="travel-agency"/>
</rule>
</rule>
<rule e="any" k="shop" v="laundry" zoom-min="17">
<symbol id="laundry" src=":/POI/laundry-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="laundry"/>
</rule>
</rule>
<rule e="any" k="shop" v="butcher" zoom-min="17">
<symbol id="butcher" src=":/POI/slaughterhouse-11.svg" symbol-width="11" priority="-5"/>
<rule e="any" k="*" v="*" zoom-min="18">
<caption fill="#000000" font-size="10" font-style="italic" k="name" stroke="#FFFFFF" stroke-width="2" symbol-id="butcher"/>
</rule>
</rule>

View File

@ -3,7 +3,7 @@ unix:!macx:!android {
} else {
TARGET = GPXSee
}
VERSION = 13.28
VERSION = 13.31
QT += core \

View File

@ -10,6 +10,7 @@
<file alias="exit.svg">icons/map/symbols/exit.svg</file>
<file alias="flow.svg">icons/map/symbols/flow.svg</file>
<file alias="oneway.svg">icons/map/symbols/oneway.svg</file>
<file alias="saddle.svg">icons/map/symbols/saddle.svg</file>
</qresource>
<!-- POIs (IMG, Mapsforge & ENC style) -->
@ -40,13 +41,16 @@
<file alias="cemetery-11.svg">icons/map/POI/cemetery-11.svg</file>
<file alias="cinema-11.svg">icons/map/POI/cinema-11.svg</file>
<file alias="clothing-store-11.svg">icons/map/POI/clothing-store-11.svg</file>
<file alias="college-11.svg">icons/map/POI/college-11.svg</file>
<file alias="communications-tower-11.svg">icons/map/POI/communications-tower-11.svg</file>
<file alias="convenience-11.svg">icons/map/POI/convenience-11.svg</file>
<file alias="cross-11.svg">icons/map/POI/cross-11.svg</file>
<file alias="dam-11.svg">icons/map/POI/dam-11.svg</file>
<file alias="danger-11.svg">icons/map/POI/danger-11.svg</file>
<file alias="doctor-11.svg">icons/map/POI/doctor-11.svg</file>
<file alias="drinking-water-11.svg">icons/map/POI/drinking-water-11.svg</file>
<file alias="fast-food-11.svg">icons/map/POI/fast-food-11.svg</file>
<file alias="embassy-11.svg">icons/map/POI/embassy-11.svg</file>
<file alias="entrance-alt1-11.svg">icons/map/POI/entrance-alt1-11.svg</file>
<file alias="ferry-11.svg">icons/map/POI/ferry-11.svg</file>
<file alias="fire-station-11.svg">icons/map/POI/fire-station-11.svg</file>
@ -61,15 +65,20 @@
<file alias="harbor-11.svg">icons/map/POI/harbor-11.svg</file>
<file alias="hardware-11.svg">icons/map/POI/hardware-11.svg</file>
<file alias="heliport-11.svg">icons/map/POI/heliport-11.svg</file>
<file alias="home-11.svg">icons/map/POI/home-11.svg</file>
<file alias="hospital-11.svg">icons/map/POI/hospital-11.svg</file>
<file alias="hot-spring.svg">icons/map/POI/hot-spring.svg</file>
<file alias="ice-cream-11.svg">icons/map/POI/ice-cream-11.svg</file>
<file alias="information-11.svg">icons/map/POI/information-11.svg</file>
<file alias="landmark-11.svg">icons/map/POI/landmark-11.svg</file>
<file alias="laundry-11.svg">icons/map/POI/laundry-11.svg</file>
<file alias="library-11.svg">icons/map/POI/library-11.svg</file>
<file alias="lighthouse-11.svg">icons/map/POI/lighthouse-11.svg</file>
<file alias="lodging-11.svg">icons/map/POI/lodging-11.svg</file>
<file alias="monument-11.svg">icons/map/POI/monument-11.svg</file>
<file alias="mountain-11.svg">icons/map/POI/mountain-11.svg</file>
<file alias="museum-11.svg">icons/map/POI/museum-11.svg</file>
<file alias="observation-tower.svg">icons/map/POI/observation-tower.svg</file>
<file alias="park-11.svg">icons/map/POI/park-11.svg</file>
<file alias="parking-11.svg">icons/map/POI/parking-11.svg</file>
<file alias="pharmacy-11.svg">icons/map/POI/pharmacy-11.svg</file>
@ -93,7 +102,9 @@
<file alias="shop-11.svg">icons/map/POI/shop-11.svg</file>
<file alias="skateboard-11.svg">icons/map/POI/skateboard-11.svg</file>
<file alias="skiing-11.svg">icons/map/POI/skiing-11.svg</file>
<file alias="slaughterhouse-11.svg">icons/map/POI/slaughterhouse-11.svg</file>
<file alias="soccer-11.svg">icons/map/POI/soccer-11.svg</file>
<file alias="stadium-11.svg">icons/map/POI/stadium-11.svg</file>
<file alias="swimming-11.svg">icons/map/POI/swimming-11.svg</file>
<file alias="telephone-11.svg">icons/map/POI/telephone-11.svg</file>
<file alias="tennis-11.svg">icons/map/POI/tennis-11.svg</file>
@ -105,7 +116,9 @@
<file alias="volcano-11.svg">icons/map/POI/volcano-11.svg</file>
<file alias="water-11.svg">icons/map/POI/water-11.svg</file>
<file alias="waterfall-11.svg">icons/map/POI/waterfall-11.svg</file>
<file alias="watermill-11.svg">icons/map/POI/watermill-11.svg</file>
<file alias="wetland-11.svg">icons/map/POI/wetland-11.svg</file>
<file alias="windmill-11.svg">icons/map/POI/windmill-11.svg</file>
<file alias="zoo-11.svg">icons/map/POI/zoo-11.svg</file>
</qresource>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="college-11" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11">
<g>
<path d="M2,7.3c0.3-0.2,0.5-0.5,0.5-0.8c0-0.4-0.2-0.7-0.6-0.9V4.4L5.5,6L11,3.5L5.5,1L0,3.5L1.2,4v1.6&#xA; C0.8,5.8,0.6,6.1,0.6,6.5c0,0.3,0.2,0.6,0.5,0.8L0.6,9c-0.3,1,0.5,1,0.5,1h1c0,0,0.8,0,0.5-1L2,7.3z"/>
<path d="M3.5,6.2c0,0.1,0,0.2,0,0.3c0,0.4-0.2,0.8-0.4,1.1C3.3,8,3.5,8.4,3.5,9v0.6C4,9.8,4.7,10,5.5,10&#xA; C8,10,9,8.5,9,8.5v-3L5.5,7.1L3.5,6.2z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 526 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" id="cross-11" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11">
<path d="M2.2,1.19l3.3,3.3L8.8,1.2C8.9314,1.0663,9.1127,0.9938,9.3,1C9.6761,1.0243,9.9757,1.3239,10,1.7&#xA;&#x9;c0.0018,0.1806-0.0705,0.3541-0.2,0.48L6.49,5.5L9.8,8.82C9.9295,8.9459,10.0018,9.1194,10,9.3C9.9757,9.6761,9.6761,9.9757,9.3,10&#xA;&#x9;c-0.1873,0.0062-0.3686-0.0663-0.5-0.2L5.5,6.51L2.21,9.8c-0.1314,0.1337-0.3127,0.2062-0.5,0.2C1.3265,9.98,1.02,9.6735,1,9.29&#xA;&#x9;C0.9982,9.1094,1.0705,8.9359,1.2,8.81L4.51,5.5L1.19,2.18C1.0641,2.0524,0.9955,1.8792,1,1.7C1.0243,1.3239,1.3239,1.0243,1.7,1&#xA;&#x9;C1.8858,0.9912,2.0669,1.06,2.2,1.19z"/>
</svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" id="embassy-11" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11">
<path d="M5.5,2C4.6014,2.0766,3.7537,2.4494,3.09,3.06C3.0316,3.1262,2.9995,3.2117,3,3.3v3.32&#xA;&#x9;C2.9889,6.8074,3.1318,6.9684,3.3193,6.9796C3.4115,6.985,3.5021,6.9527,3.57,6.89C4.1239,6.4637,4.8011,6.2286,5.5,6.22&#xA;&#x9;C6.61,6.22,6.85,7,8,7c0.6869-0.0671,1.3313-0.3629,1.83-0.84C9.9401,6.0917,10.0051,5.9695,10,5.84V2.37&#xA;&#x9;c0.0309-0.1908-0.0987-0.3705-0.2896-0.4014C9.6387,1.9569,9.5652,1.9679,9.5,2C9.0686,2.3529,8.5507,2.5842,8,2.67&#xA;&#x9;C6.85,2.67,6.65,2,5.5,2z M1.5,1.5c0.5523,0,1,0.4477,1,1s-0.4477,1-1,1s-1-0.4477-1-1S0.9477,1.5,1.5,1.5z M2,4.5v6&#xA;&#x9;C2,10.7761,1.7761,11,1.5,11S1,10.7761,1,10.5v-6C1,4.2239,1.2239,4,1.5,4S2,4.2239,2,4.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 838 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11" id="home-11">
<path d="M10.0015,4.7507c0,0.13807-0.11193,0.25-0.25,0.25H1.25c-0.13807,0-0.25-0.11193-0.25-0.25&#xA;&#x9;c-0.00054-0.07163,0.02839-0.14033,0.08-0.19l4.2378-3.4545l0.016-0.016c0.10112-0.09209,0.2577-0.08493,0.35,0.016l2.3174,1.8892&#xA;&#x9;V1.5c0-0.27614,0.22386-0.5,0.5-0.5s0.5,0.22386,0.5,0.5v2.31l0.92,0.75C9.9731,4.60979,10.00215,4.67878,10.0015,4.7507z M2,9.7514&#xA;&#x9;c-0.00111,0.13696,0.10902,0.24889,0.24598,0.25c0.00001,0,0.00001,0,0.00002,0h2.7547v-2h1v2h2.7526&#xA;&#x9;c0.13697,0,0.248-0.11103,0.248-0.248l0,0l0,0V6.0009H2V9.7514z"/>
</svg>

After

Width:  |  Height:  |  Size: 712 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="hot-spring" xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15">
<path d="M6.682,5.759c-.505-.725-.781-1.121-.63-2.376,.139-1.156,.678-1.616,1.198-2.059,.404-.345,.797-.68,.981-1.324,.301,.722-.036,1.47-.349,2.164-.311,.691-.599,1.329-.211,1.836,.971,1.271,1.963,2.88,.971,4.586-.214,.393-.539,.681-.861,.968-.422,.375-.841,.747-1.004,1.348-.269-.677,.008-1.366,.285-2.052,.306-.759,.61-1.516,.172-2.251-.203-.34-.389-.607-.551-.84Zm3.371-1.174c-.098-.632,.034-1.281,.368-1.809,.367-.45,.701-.642,.991-.81,.345-.199,.627-.362,.83-.877,.289,.684,0,1.188-.304,1.718-.119,.207-.24,.418-.329,.645-.191,.61,.101,.893,.467,1.247,.358,.346,.786,.76,.899,1.617,.083,.635-.036,1.156-.372,1.684-.356,.436-.681,.655-.965,.846-.356,.24-.648,.437-.856,.965-.292-.688,.031-1.259,.353-1.828,.123-.217,.246-.434,.334-.658,.073-.558-.234-.867-.581-1.217-.357-.36-.757-.763-.834-1.523Zm-8.018,0c-.098-.632,.005-1.3,.368-1.809,.376-.528,.729-.717,1.035-.881,.323-.173,.594-.318,.786-.806,.289,.683-.014,1.208-.325,1.749-.122,.212-.246,.427-.336,.655-.152,.385,.131,1.014,.501,1.242,1.002,.801,1.227,2.286,.547,3.353-.366,.448-.704,.648-.999,.823-.353,.209-.645,.382-.849,.898-.278-.656,.008-1.18,.3-1.714,.131-.24,.263-.481,.345-.737,.179-.557-.134-.884-.51-1.277-.349-.365-.752-.785-.863-1.498Zm10.965,4.414c.7,2.616-3.474,3-5.5,3s-6.2-.484-5.5-3c-.633,.316-1,.961-1,1.5,0,1.519,2.91,2.9,6.5,2.9s6.5-1.381,6.5-2.9c0-.539-.367-1.184-1-1.5Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" id="ice-cream-11" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11">
<path d="M4,6c0.541,0.0007,1.0676-0.1748,1.5-0.5C5.9324,5.8252,6.459,6.0007,7,6l-1,4.69c-0.1082,0.2541-0.4019,0.3723-0.656,0.264&#xA;&#x9;c-0.1188-0.0506-0.2134-0.1452-0.264-0.264L4,6z M7,2H6.91c0.2826-0.7787-0.1195-1.6391-0.8982-1.9218S4.3726,0.1978,4.09,0.9765&#xA;&#x9;C3.97,1.3071,3.97,1.6694,4.09,2H4C3.1716,2,2.5,2.6716,2.5,3.5S3.1716,5,4,5s1.5-0.6716,1.5-1.5l0,0l0,0l0,0&#xA;&#x9;C5.5,4.3284,6.1716,5,7,5s1.5-0.6716,1.5-1.5S7.8284,2,7,2z"/>
</svg>

After

Width:  |  Height:  |  Size: 615 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" id="laundry-11" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11">
<path id="path3291" d="M5,0L4,2H2c0,0-1,0-1,1v7c0,0,0,1,1,1h7c1,0,1-1,1-1V1c0-1-1-1-1-1H5z M6,1h3v1H6V1z M5.5,4&#xA;&#x9;C6.8807,4,8,5.1193,8,6.5S6.8807,9,5.5,9S3,7.8807,3,6.5S4.1193,4,5.5,4z"/>
</svg>

After

Width:  |  Height:  |  Size: 360 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15" id="observation-tower">
<path d="M12 12.5H11.5L10 9V7C10.9951 7 10.9951 6.25 10.9951 6.25L11.5 3C11.5 3 11.5 2.5 11 2.5H10C10 2.5 10 2 9.5 2H8.5V1.5C8.5 1.5 8.5 0.5 7.5 0.5C6.5 0.5 6.5 1.5 6.5 1.5V2H5.5C5 2 5 2.5 5 2.5H4C3.5 2.5 3.5 3 3.5 3L4.0049 6.25C4.0049 6.25 4.0049 7 5 7V9L3.5 12.5H3C3 12.5 2 12.5 2 13.25C2 14 3 14 3 14H12C12 14 13 14 13 13.25C13 12.5 12 12.5 12 12.5ZM10.25 3.5L10 5H5L4.75 3.4971L10.25 3.5ZM8.5 7V8H6.5V7H8.5ZM6.5006 9.4971H8.4994L9.5 12.5H5.5L6.5006 9.4971Z"/>
</svg>

After

Width:  |  Height:  |  Size: 618 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="slaughterhouse-11" xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewBox="0 0 11 11">
<path d="M11,5.75v.241C11,7,10,6.5,10,6.5H8A3.081,3.081,0,0,1,7,8a2.848,2.848,0,0,1-.416.9.26.26,0,0,0-.05.242l.458,1.55A.227.227,0,0,1,7,10.75a.25.25,0,0,1-.25.25.259.259,0,0,1-.244-.173L6,9V8.5H2.75l-.21.42a.25.25,0,0,0-.02.168L3,10.75a.25.25,0,0,1-.25.25.26.26,0,0,1-.237-.172L2,9V8.5a4.013,4.013,0,0,1-.843-.139,1.383,1.383,0,0,1-.5,1.045.242.242,0,0,0-.094.282l.414.99a.213.213,0,0,1,.011.072.25.25,0,0,1-.25.25.253.253,0,0,1-.228-.148L0,9.5a6.031,6.031,0,0,0,0-2v-2A1.486,1.486,0,0,1,2,4.1s.768.132,1.1.154A2.457,2.457,0,0,0,4,4.087,1.666,1.666,0,0,1,4.5,4a1.648,1.648,0,0,1,.844.257,3.166,3.166,0,0,0,.9.23L7,4.5s.966-.484,1-.5V3.5l.5.5A1.474,1.474,0,0,1,10,3.5.914.914,0,0,0,9,4l1,1,.68.529a.425.425,0,0,1,.07-.029A.238.238,0,0,1,11,5.75Z"/>
</svg>

After

Width:  |  Height:  |  Size: 904 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" id="stadium-11" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11">
<path id="path4177" d="M5,0v3v0.0117&#xA;&#x9;C2.7922,3.1089,1.0876,3.8182,1,4.6816c0,0,0,2.4594,0,3.6816C0.9995,9.2672,3.0143,10,5.5,10s4.5005-0.7328,4.5-1.6367V4.6816&#xA;&#x9;C9.9122,3.8177,8.2093,3.1082,6,3.0117V2.5723L8.5,1.5L5,0z M1.8184,5.752C2.1366,5.9302,2.5373,6.0838,3,6.2051v2.459&#xA;&#x9;C2.2493,8.4283,1.8213,8.0972,1.8184,7.75V5.752z M9.1816,5.7559V7.75C9.1803,8.0979,8.7521,8.4298,8,8.666V6.2031&#xA;&#x9;C8.4614,6.0836,8.862,5.932,9.1816,5.7559z M4,6.3984C4.4815,6.4652,4.9888,6.4995,5.5,6.5C6.0112,6.4995,6.5185,6.4652,7,6.3984&#xA;&#x9;v2.4922C6.5282,8.9624,6.0171,8.9997,5.5,9C4.9829,8.9997,4.4718,8.9624,4,8.8906V6.3984z"/>
</svg>

After

Width:  |  Height:  |  Size: 811 B

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" id="watermill-11" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11">
<path d="M9.9874,4.375C9.9216,2.5436,8.4563,1.0784,6.625,1.0126V1h-0.25v0.0126C5.274,1.0521,4.3123,1.6034,3.7004,2.4301L2.5059,1&#xA;&#x9;L0,4h1v4l1.8-1l1.8,1l1.1202-0.6218C5.2513,7.2512,4.825,7.021,4.4765,6.7003L6.252,4.9247c0.0385,0.0226,0.0788,0.0383,0.123,0.05&#xA;&#x9;v2.0399L6.4014,7L6.625,7.1243V4.9747c0.0442-0.0117,0.0845-0.0274,0.123-0.05l1.7755,1.7755&#xA;&#x9;C8.1429,7.0505,7.6736,7.3016,7.1526,7.4177l0.5937,0.3301C9.0195,7.2596,9.9359,6.0602,9.9874,4.625H10v-0.25H9.9874z&#xA;&#x9; M4.2997,6.5235C3.8347,6.0182,3.5435,5.3568,3.5126,4.625h2.5126c0.0117,0.0442,0.0274,0.0845,0.05,0.123L4.2997,6.5235z&#xA;&#x9; M6.0253,4.375H3.5126c0.0308-0.7318,0.3221-1.3932,0.7871-1.8985L6.0753,4.252C6.0527,4.2905,6.037,4.3308,6.0253,4.375z&#xA;&#x9; M6.375,4.0253c-0.0442,0.0117-0.0845,0.0274-0.123,0.05L4.4765,2.2997c0.5053-0.465,1.1667-0.7563,1.8985-0.7871V4.0253z&#xA;&#x9; M6.625,4.0253V1.5126c0.7318,0.0308,1.3932,0.3221,1.8985,0.7871L6.748,4.0753C6.7095,4.0527,6.6692,4.037,6.625,4.0253z&#xA;&#x9; M8.7003,6.5235L6.9247,4.748c0.0226-0.0385,0.0383-0.0788,0.05-0.123h2.5126C9.4565,5.3568,9.1653,6.0182,8.7003,6.5235z&#xA;&#x9; M6.9747,4.375c-0.0117-0.0442-0.0274-0.0845-0.05-0.123l1.7755-1.7755c0.465,0.5053,0.7563,1.1667,0.7871,1.8985H6.9747z M6.4014,8&#xA;&#x9;L4.6,9L3.808,8.56l0,0L2.8,8L1.792,8.56l0,0L1,9v1l1.8-1l1.8,1l1.8014-1L8.2,10L10,9V8L8.2,9L6.4014,8z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" id="windmill-11" xmlns="http://www.w3.org/2000/svg" width="11px" height="11px" viewBox="0 0 11 11">
<path d="M6.375,3.9375L5.9375,3.5L6.375,3.0625h0.4375L9,0.875L8.125,0L5.9375,2.1875V2.625L5.5,3.0625L5.0625,2.625V2.1875L2.875,0&#xA;&#x9;L2,0.875l2.1875,2.1875H4.625L5.0625,3.5L4.625,3.9375H4.1875L2,6.125L2.875,7l2.1875-2.1875V4.375L5.5,3.9375L5.9375,4.375v0.4375&#xA;&#x9;L8.125,7L9,6.125L6.8125,3.9375H6.375z M8.5,10H8L7,7.5L5.5,6L4,7.5L3,10H2.5C2.2239,10,2,10.2238,2,10.5&#xA;&#x9;C2,10.7761,2.2239,11,2.5,11h6C8.7761,11,9,10.7761,9,10.5C9,10.2238,8.7761,10,8.5,10z M6,9.9717C6,9.9873,5.9874,10,5.9717,10&#xA;&#x9;H5.0283C5.0126,10,5,9.9873,5,9.9717v-0.972C5,8.7238,5.2238,8.5,5.4998,8.5C5.7761,8.5,6,8.7239,6,9.0002V9.9717z"/>
</svg>

After

Width:  |  Height:  |  Size: 798 B

View File

@ -1,11 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="30" height="28" version="1.1" viewBox="0 0 30 28">
<defs>
<pattern id="crosses" patternUnits="userSpaceOnUse" width="6" height="7">
<path d="M 1.5,0.5 L 1.5,3.5" stroke="#444444" stroke-width="1"/>
<path d="M 0.5,1.5 L 2.5,1.5" stroke="#444444" stroke-width="1"/>
</pattern>
</defs>
<rect x="0" y="0" width="100%" height="100%" fill="url(#crosses)"/>
<svg width="6" height="7" version="1.1" viewBox="0 0 6 7">
<path d="M 1.5,0.5 L 1.5,3.5 M 0.5,1.5 L 2.5,1.5" stroke="#444444" stroke-width="1"/>
</svg>

Before

Width:  |  Height:  |  Size: 423 B

After

Width:  |  Height:  |  Size: 192 B

View File

@ -1,10 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32" height="32" version="1.1" viewBox="0 0 32 32">
<defs>
<pattern id="diagonalHatch" patternUnits="userSpaceOnUse" width="4" height="4">
<path d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2" stroke="red" stroke-width="1"/>
</pattern>
</defs>
<rect x="0" y="0" width="100%" height="100%" fill="url(#diagonalHatch)"/>
<svg width="4" height="4" version="1.1" viewBox="0 0 4 4">
<path d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2" stroke="red" stroke-width="1"/>
</svg>

Before

Width:  |  Height:  |  Size: 376 B

After

Width:  |  Height:  |  Size: 182 B

View File

@ -1,10 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32" height="32" version="1.1" viewBox="0 0 32 32">
<defs>
<pattern id="diagonalHatch" patternUnits="userSpaceOnUse" width="4" height="4">
<path d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2" stroke="#9ac269" stroke-width="1"/>
</pattern>
</defs>
<rect x="0" y="0" width="100%" height="100%" fill="url(#diagonalHatch)"/>
<svg width="4" height="4" version="1.1" viewBox="0 0 4 4">
<path d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2" stroke="#9ac269" stroke-width="1"/>
</svg>

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 186 B

View File

@ -1,11 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28" height="28" version="1.1" viewBox="0 0 28 28">
<defs>
<pattern id="circles" patternUnits="userSpaceOnUse" width="7" height="7">
<circle cx="3" cy="3" r="1.5" stroke="#c9d69c" stroke-width="1" fill="none"/>
</pattern>
</defs>
<rect x="0" y="0" width="100%" height="100%" fill="#dee9bc"/>
<rect x="0" y="0" width="100%" height="100%" fill="url(#circles)"/>
<svg width="7" height="7" version="1.1" viewBox="0 0 7 7">
<rect x="0" y="0" width="7" height="7" fill="#dee9bc"/>
<circle cx="3" cy="3" r="1.5" stroke="#c9d69c" stroke-width="1" fill="none"/>
</svg>

Before

Width:  |  Height:  |  Size: 429 B

After

Width:  |  Height:  |  Size: 241 B

View File

@ -1,11 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28" height="32" version="1.1" viewBox="0 0 28 32">
<defs>
<pattern id="circles" patternUnits="userSpaceOnUse" width="7" height="8">
<path d="M 3,2 L 3,6" stroke="#c9d69c" stroke-width="1"/>
</pattern>
</defs>
<rect x="0" y="0" width="100%" height="100%" fill="#dee9bc"/>
<rect x="0" y="0" width="100%" height="100%" fill="url(#circles)"/>
<svg width="7" height="8" version="1.1" viewBox="0 0 7 8">
<rect x="0" y="0" width="7" height="8" fill="#dee9bc"/>
<path d="M 3,2 L 3,6" stroke="#c9d69c" stroke-width="1"/>
</svg>

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 221 B

View File

@ -1,10 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32" height="32" version="1.1" viewBox="0 0 32 32">
<defs>
<pattern id="diagonalHatch" patternUnits="userSpaceOnUse" width="4" height="4">
<path d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2" stroke="#9fc4e1" stroke-width="1"/>
</pattern>
</defs>
<rect x="0" y="0" width="100%" height="100%" fill="url(#diagonalHatch)"/>
<svg width="4" height="4" version="1.1" viewBox="0 0 4 4">
<path d="M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2" stroke="#9fc4e1" stroke-width="1"/>
</svg>

Before

Width:  |  Height:  |  Size: 380 B

After

Width:  |  Height:  |  Size: 186 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 9 11" height="11" width="9" version="1.1">
<g>
<path d="M 1.5,1.5 L3,3 L 3,8 L 1.5,9.5" stroke-width="1" stroke="#000000" fill="none"/>
<path d="M 7.5,1.5 L6,3 L 6,8 L 7.5,9.5" stroke-width="1" stroke="#000000" fill="none"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 300 B

View File

@ -37,7 +37,7 @@ Unicode true
; The name of the installer
Name "GPXSee"
; Program version
!define VERSION "13.28"
!define VERSION "13.31"
; The file to write
OutFile "GPXSee-${VERSION}_x64.exe"

View File

@ -39,6 +39,16 @@ static void copyPoints(const RectC &rect, const QList<MapData::Point> *src,
}
}
static void copyPoints(const RectC &rect, const QList<MapData::Path> *src,
QList<MapData::Point> *dst)
{
for (int i = 0; i < src->size(); i++) {
const MapData::Path &path = src->at(i);
if (path.closed && rect.contains(path.point.coordinates))
dst->append(path.point);
}
}
static double distance(const Coordinates &c1, const Coordinates &c2)
{
return hypot(c1.lon() - c2.lon(), c1.lat() - c2.lat());
@ -425,8 +435,8 @@ MapData::MapData(const QString &fileName)
if (!readHeader(file))
return;
_pathCache.setMaxCost(256);
_pointCache.setMaxCost(256);
_pathCache.setMaxCost(1024);
_pointCache.setMaxCost(1024);
_valid = true;
}
@ -528,9 +538,9 @@ void MapData::points(const VectorTile *tile, const RectC &rect, int zoom,
_pointLock.lock();
QList<Point> *cached = _pointCache.object(key);
QList<Point> *tilePoints = _pointCache.object(key);
if (!cached) {
if (!tilePoints) {
QList<Point> *p = new QList<Point>();
if (readPoints(tile, zoom, p)) {
copyPoints(rect, p, list);
@ -538,9 +548,26 @@ void MapData::points(const VectorTile *tile, const RectC &rect, int zoom,
} else
delete p;
} else
copyPoints(rect, cached, list);
copyPoints(rect, tilePoints, list);
_pointLock.unlock();
_pathLock.lock();
QList<Path> *tilePaths = _pathCache.object(key);
if (!tilePaths) {
QList<Path> *p = new QList<Path>();
if (readPaths(tile, zoom, p)) {
copyPoints(rect, p, list);
_pathCache.insert(key, p);
} else
delete p;
} else
copyPoints(rect, tilePaths, list);
_pathLock.unlock();
}
void MapData::paths(const RectC &searchRect, const RectC &boundsRect, int zoom,
@ -613,16 +640,16 @@ bool MapData::readPaths(const VectorTile *tile, int zoom, QList<Path> *list)
paths.reserve(paths[zoom - info.min]);
for (unsigned i = 0; i < paths[zoom - info.min]; i++) {
Path p;
qint32 lon = 0, lat = 0;
Path p(subfile.pos());
if (!(subfile.readVUInt32(unused) && subfile.readUInt16(bitmap)
&& subfile.readByte(sb)))
return false;
p.layer = sb >> 4;
p.point.layer = sb >> 4;
int tags = sb & 0x0F;
if (!readTags(subfile, tags, _pathTags, p.tags))
if (!readTags(subfile, tags, _pathTags, p.point.tags))
return false;
if (!subfile.readByte(flags))
@ -631,17 +658,17 @@ bool MapData::readPaths(const VectorTile *tile, int zoom, QList<Path> *list)
if (!subfile.readString(name))
return false;
name = name.split('\r').first();
p.tags.append(Tag(ID_NAME, name));
p.point.tags.append(Tag(ID_NAME, name));
}
if (flags & 0x40) {
if (!subfile.readString(houseNumber))
return false;
p.tags.append(Tag(ID_HOUSE, houseNumber));
p.point.tags.append(Tag(ID_HOUSE, houseNumber));
}
if (flags & 0x20) {
if (!subfile.readString(reference))
return false;
p.tags.append(Tag(ID_REF, reference));
p.point.tags.append(Tag(ID_REF, reference));
}
if (flags & 0x10) {
if (!(subfile.readVInt32(lat) && subfile.readVInt32(lon)))
@ -660,8 +687,10 @@ bool MapData::readPaths(const VectorTile *tile, int zoom, QList<Path> *list)
const QVector<Coordinates> &outline = p.poly.first();
p.closed = isClosed(outline);
if (flags & 0x10)
p.labelPos = Coordinates(outline.first().lon() + MD(lon),
p.point.coordinates = Coordinates(outline.first().lon() + MD(lon),
outline.first().lat() + MD(lat));
else if (p.closed)
p.point.coordinates = p.poly.boundingRect().center();
list->append(p);
}
@ -747,7 +776,7 @@ QDebug operator<<(QDebug dbg, const Mapsforge::MapData::Tag &tag)
QDebug operator<<(QDebug dbg, const MapData::Path &path)
{
dbg.nospace() << "Path(" << path.poly.boundingRect() << ", "
<< path.tags << ")";
<< path.point.tags << ")";
return dbg.space();
}

View File

@ -39,6 +39,8 @@ public:
struct Point {
Point(quint64 id) : id(id) {}
bool center() const {return (id & 1ULL<<63) != 0;}
quint64 id;
Coordinates coordinates;
QVector<Tag> tags;
@ -46,14 +48,14 @@ public:
};
struct Path {
Path(quint64 id) : point(id | 1ULL<<63) {}
Point point;
Polygon poly;
QVector<Tag> tags;
Coordinates labelPos;
int layer;
bool closed;
bool operator<(const Path &other) const
{return layer < other.layer;}
{return point.layer < other.point.layer;}
};
RectC bounds() const;

View File

@ -16,32 +16,6 @@ using namespace Mapsforge;
static double LIMIT = cos(deg2rad(170));
static bool rectNearPolygon(const QPainterPath &path, const QRectF &rect)
{
return (path.boundingRect().contains(rect)
&& (path.contains(rect.topLeft()) || path.contains(rect.topRight())
|| path.contains(rect.bottomLeft()) || path.contains(rect.bottomRight())));
}
static QPointF centroid(const QPainterPath &polygon)
{
qreal area = 0;
qreal cx = 0, cy = 0;
for (int i = 0; i < polygon.elementCount(); i++) {
int j = (i == polygon.elementCount() - 1) ? 0 : i + 1;
qreal f = (polygon.elementAt(i).x * polygon.elementAt(j).y
- polygon.elementAt(j).x * polygon.elementAt(i).y);
area += f;
cx += (polygon.elementAt(i).x + polygon.elementAt(j).x) * f;
cy += (polygon.elementAt(i).y + polygon.elementAt(j).y) * f;
}
qreal factor = 1.0 / (3.0 * area);
return QPointF(cx * factor, cy * factor);
}
static const QByteArray *label(unsigned key, const QVector<MapData::Tag> &tags)
{
for (int i = 0; i < tags.size(); i++) {
@ -100,12 +74,12 @@ static QPainterPath parallelPath(const QPainterPath &p, double dy)
return h;
}
void RasterTile::processPointLabels(const QList<MapData::Point> &points,
void RasterTile::processLabels(const QList<MapData::Point> &points,
QList<TextItem*> &textItems) const
{
QList<const Style::TextRender*> labels(_style->pointLabels(_zoom));
QList<const Style::Symbol*> symbols(_style->pointSymbols(_zoom));
QList<PointText> items;
QList<Label> items;
QList<const Style::TextRender*> labels(_style->labels(_zoom));
QList<const Style::Symbol*> symbols(_style->symbols(_zoom));
for (int i = 0; i < points.size(); i++) {
const MapData::Point &point = points.at(i);
@ -115,7 +89,7 @@ void RasterTile::processPointLabels(const QList<MapData::Point> &points,
for (int j = 0; j < symbols.size(); j++) {
const Style::Symbol *ri = symbols.at(j);
if (ri->rule().match(point.tags)) {
if (ri->rule().match(point.center(), point.tags)) {
si = ri;
break;
}
@ -123,7 +97,7 @@ void RasterTile::processPointLabels(const QList<MapData::Point> &points,
for (int j = 0; j < labels.size(); j++) {
const Style::TextRender *ri = labels.at(j);
if (ri->rule().match(point.tags)) {
if (ri->rule().match(point.center(), point.tags)) {
if ((lbl = label(ri->key(), point.tags))) {
if (!si || si->id() == ri->symbolId()) {
ti = ri;
@ -134,20 +108,20 @@ void RasterTile::processPointLabels(const QList<MapData::Point> &points,
}
if (ti || si)
items.append(PointText(&point, lbl, si, ti));
items.append(Label(&point, lbl, si, ti));
}
std::sort(items.begin(), items.end());
for (int i = 0; i < items.size(); i++) {
const PointText &p = items.at(i);
const QImage *img = p.si ? &p.si->img() : 0;
const QFont *font = p.ti ? &p.ti->font() : 0;
const QColor *color = p.ti ? &p.ti->fillColor() : 0;
const QColor *hColor = p.ti ? haloColor(p.ti) : 0;
const Label &l = items.at(i);
const QImage *img = l.si ? &l.si->img() : 0;
const QFont *font = l.ti ? &l.ti->font() : 0;
const QColor *color = l.ti ? &l.ti->fillColor() : 0;
const QColor *hColor = l.ti ? haloColor(l.ti) : 0;
PointItem *item = new PointItem(ll2xy(p.p->coordinates).toPoint(),
p.lbl, font, img, color, hColor);
PointItem *item = new PointItem(ll2xy(l.point->coordinates).toPoint(),
l.lbl, font, img, color, hColor);
if (item->isValid() && !item->collides(textItems))
textItems.append(item);
else
@ -155,73 +129,12 @@ void RasterTile::processPointLabels(const QList<MapData::Point> &points,
}
}
void RasterTile::processAreaLabels(const QVector<PainterPath> &paths,
QList<TextItem*> &textItems) const
{
QList<const Style::TextRender*> labels(_style->areaLabels(_zoom));
QList<const Style::Symbol*> symbols(_style->areaSymbols(_zoom));
QList<PathText> items;
for (int i = 0; i < paths.size(); i++) {
const PainterPath &path = paths.at(i);
const Style::TextRender *ti = 0;
const Style::Symbol *si = 0;
const QByteArray *lbl = 0;
if (!path.path->closed)
continue;
for (int j = 0; j < symbols.size(); j++) {
const Style::Symbol *ri = symbols.at(j);
if (ri->rule().match(path.path->closed, path.path->tags)) {
si = ri;
break;
}
}
for (int j = 0; j < labels.size(); j++) {
const Style::TextRender *ri = labels.at(j);
if (ri->rule().match(path.path->closed, path.path->tags)) {
if ((lbl = label(ri->key(), path.path->tags))) {
if (!si || si->id() == ri->symbolId()) {
ti = ri;
break;
}
}
}
}
if (ti || si)
items.append(PathText(&path, lbl, si, ti));
}
std::sort(items.begin(), items.end());
for (int i = 0; i < items.size(); i++) {
const PathText &p = items.at(i);
const QImage *img = p.si ? &p.si->img() : 0;
const QFont *font = p.ti ? &p.ti->font() : 0;
const QColor *color = p.ti ? &p.ti->fillColor() : 0;
const QColor *hColor = p.ti ? haloColor(p.ti) : 0;
QPointF pos = p.p->path->labelPos.isNull()
? centroid(p.p->pp) : ll2xy(p.p->path->labelPos);
PointItem *item = new PointItem(pos.toPoint(), p.lbl, font, img, color,
hColor);
if (item->isValid() && rectNearPolygon(p.p->pp, item->boundingRect())
&& !item->collides(textItems))
textItems.append(item);
else
delete item;
}
}
void RasterTile::processLineLabels(const QVector<PainterPath> &paths,
QList<TextItem*> &textItems) const
{
QList<const Style::TextRender*> labels(_style->pathLabels(_zoom));
QList<const Style::Symbol*> symbols(_style->lineSymbols(_zoom));
QList<PathText> items;
QList<LineLabel> items;
QSet<QByteArray> set;
for (int i = 0; i < paths.size(); i++) {
@ -235,7 +148,7 @@ void RasterTile::processLineLabels(const QVector<PainterPath> &paths,
for (int j = 0; j < symbols.size(); j++) {
const Style::Symbol *ri = symbols.at(j);
if (ri->rule().match(path.path->closed, path.path->tags)) {
if (ri->rule().matchPath(path.path->closed, path.path->point.tags)) {
si = ri;
break;
}
@ -243,8 +156,8 @@ void RasterTile::processLineLabels(const QVector<PainterPath> &paths,
for (int j = 0; j < labels.size(); j++) {
const Style::TextRender *ri = labels.at(j);
if (ri->rule().match(path.path->closed, path.path->tags)) {
if ((lbl = label(ri->key(), path.path->tags))) {
if (ri->rule().matchPath(path.path->closed, path.path->point.tags)) {
if ((lbl = label(ri->key(), path.path->point.tags))) {
if (!si || si->id() == ri->symbolId()) {
ti = ri;
break;
@ -254,57 +167,57 @@ void RasterTile::processLineLabels(const QVector<PainterPath> &paths,
}
if (ti || si)
items.append(PathText(&path, lbl, si, ti));
items.append(LineLabel(&path, lbl, si, ti));
}
std::sort(items.begin(), items.end());
for (int i = 0; i < items.size(); i++) {
const PathText &p = items.at(i);
const QImage *img = p.si ? &p.si->img() : 0;
const QFont *font = p.ti ? &p.ti->font() : 0;
const QColor *color = p.ti ? &p.ti->fillColor() : 0;
const QColor *hColor = p.ti ? haloColor(p.ti) : 0;
bool rotate = p.si ? p.si->rotate() : false;
const LineLabel &l = items.at(i);
const QImage *img = l.si ? &l.si->img() : 0;
const QFont *font = l.ti ? &l.ti->font() : 0;
const QColor *color = l.ti ? &l.ti->fillColor() : 0;
const QColor *hColor = l.ti ? haloColor(l.ti) : 0;
bool rotate = l.si ? l.si->rotate() : false;
bool limit = false;
if (p.ti) {
limit = (p.ti->key() == ID_ELE || p.ti->key() == ID_REF
|| (!p.si && p.ti->shield()));
if (limit && set.contains(*p.lbl))
if (l.ti) {
limit = (l.ti->key() == ID_ELE || l.ti->key() == ID_REF
|| (!l.si && l.ti->shield()));
if (limit && set.contains(*l.lbl))
continue;
}
if (!p.si && p.ti && p.ti->shield()) {
if (p.ti && p.lbl && set.contains(*p.lbl))
if (!l.si && l.ti && l.ti->shield()) {
if (l.ti && l.lbl && set.contains(*l.lbl))
continue;
if (p.p->pp.length() < _rect.width() / 3.0)
if (l.path->pp.length() < _rect.width() / 3.0)
continue;
QPointF pos = p.p->pp.pointAtPercent(0.5);
QPointF pos = l.path->pp.pointAtPercent(0.5);
PointItem *item = new PointItem(pos.toPoint(), p.lbl, font, color,
PointItem *item = new PointItem(pos.toPoint(), l.lbl, font, color,
hColor);
if (item->isValid() && _rect.contains(item->boundingRect().toRect())
&& !item->collides(textItems)) {
textItems.append(item);
if (p.ti && p.lbl)
set.insert(*p.lbl);
if (l.ti && l.lbl)
set.insert(*l.lbl);
} else
delete item;
} else {
PathItem *item = new PathItem(p.p->pp, p.lbl, img, _rect, font,
PathItem *item = new PathItem(l.path->pp, l.lbl, img, _rect, font,
color, hColor, rotate);
if (item->isValid() && !item->collides(textItems)) {
textItems.append(item);
if (limit)
set.insert(*p.lbl);
set.insert(*l.lbl);
} else {
delete item;
if (img && p.lbl) {
PathItem *item = new PathItem(p.p->pp, 0, img, _rect, 0, 0,
0, rotate);
if (img && l.lbl) {
PathItem *item = new PathItem(l.path->pp, 0, img, _rect, 0,
0, 0, rotate);
if (item->isValid() && !item->collides(textItems))
textItems.append(item);
else
@ -374,13 +287,13 @@ void RasterTile::pathInstructions(const QList<MapData::Path> &paths,
for (int i = 0; i < paths.size(); i++) {
const MapData::Path &path = paths.at(i);
PainterPath &rp = painterPaths[i];
PathKey key(_zoom, path.closed, path.tags);
PathKey key(_zoom, path.closed, path.point.tags);
rp.path = &path;
if (!(ri = cache.object(key))) {
ri = new QList<const Style::PathRender*>(_style->paths(_zoom,
path.closed, path.tags));
path.closed, path.point.tags));
for (int j = 0; j < ri->size(); j++)
instructions.append(RenderInstruction(ri->at(j), &rp));
cache.insert(key, ri);
@ -543,8 +456,7 @@ void RasterTile::render()
drawPaths(&painter, paths, points, renderPaths);
processPointLabels(points, textItems);
processAreaLabels(renderPaths, textItems);
processLabels(points, textItems);
processLineLabels(renderPaths, textItems);
drawTextItems(&painter, textItems);

View File

@ -43,44 +43,44 @@ private:
const MapData::Path *path;
};
struct PointText {
PointText(const MapData::Point *p, const QByteArray *lbl,
struct Label {
Label(const MapData::Point *p, const QByteArray *lbl,
const Style::Symbol *si, const Style::TextRender *ti)
: p(p), lbl(lbl), ti(ti), si(si)
: point(p), lbl(lbl), ti(ti), si(si)
{
Q_ASSERT(si || ti);
}
bool operator<(const PointText &other) const
bool operator<(const Label &other) const
{
if (priority() == other.priority())
return p->id < other.p->id;
return point->id < other.point->id;
else
return (priority() > other.priority());
}
int priority() const {return si ? si->priority() : ti->priority();}
const MapData::Point *p;
const MapData::Point *point;
const QByteArray *lbl;
const Style::TextRender *ti;
const Style::Symbol *si;
};
struct PathText {
PathText(const PainterPath *p, const QByteArray *lbl,
struct LineLabel {
LineLabel(const PainterPath *p, const QByteArray *lbl,
const Style::Symbol *si, const Style::TextRender *ti)
: p(p), lbl(lbl), ti(ti), si(si)
: path(p), lbl(lbl), ti(ti), si(si)
{
Q_ASSERT(si || ti);
}
bool operator<(const PathText &other) const
bool operator<(const LineLabel &other) const
{
return (priority() > other.priority());
}
int priority() const {return si ? si->priority() : ti->priority();}
const PainterPath *p;
const PainterPath *path;
const QByteArray *lbl;
const Style::TextRender *ti;
const Style::Symbol *si;
@ -120,7 +120,7 @@ private:
int layer() const
{
if (_path)
return _path->path->layer;
return _path->path->point.layer;
else if (_point)
return _point->layer;
else
@ -208,9 +208,7 @@ private:
{return _transform.proj2img(_proj.ll2xy(c));}
Coordinates xy2ll(const QPointF &p) const
{return _proj.xy2ll(_transform.img2proj(p));}
void processPointLabels(const QList<MapData::Point> &points,
QList<TextItem*> &textItems) const;
void processAreaLabels(const QVector<PainterPath> &paths,
void processLabels(const QList<MapData::Point> &points,
QList<TextItem*> &textItems) const;
void processLineLabels(const QVector<PainterPath> &paths,
QList<TextItem*> &textItems) const;

View File

@ -126,8 +126,13 @@ Style::Rule::Filter::Filter(const MapData &data, const QList<QByteArray> &keys,
_vals = valList(vc);
}
bool Style::Rule::match(const QVector<MapData::Tag> &tags) const
bool Style::Rule::match(bool path, const QVector<MapData::Tag> &tags) const
{
Type type = path ? WayType : NodeType;
if (!(_type == Rule::AnyType || _type == type))
return false;
for (int i = 0; i < _filters.size(); i++)
if (!_filters.at(i).match(tags))
return false;
@ -135,7 +140,7 @@ bool Style::Rule::match(const QVector<MapData::Tag> &tags) const
return true;
}
bool Style::Rule::match(bool closed, const QVector<MapData::Tag> &tags) const
bool Style::Rule::matchPath(bool closed, const QVector<MapData::Tag> &tags) const
{
Closed cl = closed ? YesClosed : NoClosed;
@ -471,12 +476,8 @@ void Style::text(QXmlStreamReader &reader, const MapData &data,
if (fontSize) {
if (line)
_pathLabels.append(ri);
else {
if (rule._type == Rule::WayType || rule._type == Rule::AnyType)
_areaLabels.append(ri);
if (rule._type == Rule::NodeType || rule._type == Rule::AnyType)
_pointLabels.append(ri);
}
else
_labels.append(ri);
}
reader.skipCurrentElement();
@ -806,8 +807,7 @@ void Style::load(const MapData &data, qreal ratio)
std::sort(_symbols.begin(), _symbols.end());
std::sort(_lineSymbols.begin(), _lineSymbols.end());
std::stable_sort(_pointLabels.begin(), _pointLabels.end());
std::stable_sort(_areaLabels.begin(), _areaLabels.end());
std::stable_sort(_labels.begin(), _labels.end());
std::stable_sort(_pathLabels.begin(), _pathLabels.end());
}
@ -816,8 +816,7 @@ void Style::clear()
_paths = QList<PathRender>();
_circles = QList<CircleRender>();
_pathLabels = QList<TextRender>();
_pointLabels = QList<TextRender>();
_areaLabels = QList<TextRender>();
_labels = QList<TextRender>();
_symbols = QList<Symbol>();
_lineSymbols = QList<Symbol>();
_hillShading = HillShadingRender();
@ -864,38 +863,14 @@ QList<const Style::TextRender*> Style::pathLabels(int zoom) const
return list;
}
QList<const Style::TextRender*> Style::pointLabels(int zoom) const
QList<const Style::TextRender*> Style::labels(int zoom) const
{
QList<const TextRender*> list;
for (int i = 0; i < _pointLabels.size(); i++)
if (_pointLabels.at(i).rule()._zooms.contains(zoom))
list.append(&_pointLabels.at(i));
return list;
}
QList<const Style::TextRender*> Style::areaLabels(int zoom) const
{
QList<const TextRender*> list;
for (int i = 0; i < _areaLabels.size(); i++)
if (_areaLabels.at(i).rule()._zooms.contains(zoom))
list.append(&_areaLabels.at(i));
return list;
}
QList<const Style::Symbol*> Style::pointSymbols(int zoom) const
{
QList<const Symbol*> list;
for (int i = 0; i < _symbols.size(); i++) {
const Symbol &symbol = _symbols.at(i);
const Rule &rule = symbol.rule();
if (rule._zooms.contains(zoom) && (rule._type == Rule::AnyType
|| rule._type == Rule::NodeType))
list.append(&symbol);
for (int i = 0; i < _labels.size(); i++) {
const TextRender &label= _labels.at(i);
if (label.rule()._zooms.contains(zoom))
list.append(&label);
}
return list;
@ -914,15 +889,13 @@ QList<const Style::Symbol*> Style::lineSymbols(int zoom) const
return list;
}
QList<const Style::Symbol*> Style::areaSymbols(int zoom) const
QList<const Style::Symbol*> Style::symbols(int zoom) const
{
QList<const Symbol*> list;
for (int i = 0; i < _symbols.size(); i++) {
const Symbol &symbol = _symbols.at(i);
const Rule &rule = symbol.rule();
if (rule._zooms.contains(zoom) && (rule._type == Rule::AnyType
|| rule._type == Rule::WayType))
if (symbol.rule()._zooms.contains(zoom))
list.append(&symbol);
}

View File

@ -18,11 +18,8 @@ public:
public:
Rule() : _type(AnyType), _closed(AnyClosed), _zooms(0, 127) {}
bool match(const QVector<MapData::Tag> &tags) const;
bool match(bool closed, const QVector<MapData::Tag> &tags) const;
bool match(int zoom, bool closed,
const QVector<MapData::Tag> &tags) const;
bool match(int zoom, const QVector<MapData::Tag> &tags) const;
bool match(bool path, const QVector<MapData::Tag> &tags) const;
bool matchPath(bool closed, const QVector<MapData::Tag> &tags) const;
private:
enum Type {
@ -109,8 +106,12 @@ public:
if (!filter.isTautology())
_filters.append(filter);
}
bool match(int zoom, Type type, Closed closed,
const QVector<MapData::Tag> &tags) const;
bool match(int zoom, bool closed,
const QVector<MapData::Tag> &tags) const;
bool match(int zoom, const QVector<MapData::Tag> &tags) const;
friend class Style;
@ -266,9 +267,9 @@ public:
QList<const CircleRender *> circles(int zoom,
const QVector<MapData::Tag> &tags) const;
QList<const TextRender*> pathLabels(int zoom) const;
QList<const TextRender*> pointLabels(int zoom) const;
QList<const TextRender*> labels(int zoom) const;
QList<const TextRender*> areaLabels(int zoom) const;
QList<const Symbol*> pointSymbols(int zoom) const;
QList<const Symbol*> symbols(int zoom) const;
QList<const Symbol*> areaSymbols(int zoom) const;
QList<const Symbol*> lineSymbols(int zoom) const;
const HillShadingRender *hillShading(int zoom) const;
@ -317,7 +318,7 @@ private:
HillShadingRender _hillShading;
QList<PathRender> _paths;
QList<CircleRender> _circles;
QList<TextRender> _pathLabels, _pointLabels, _areaLabels;
QList<TextRender> _labels, _pathLabels;
QList<Symbol> _symbols, _lineSymbols;
bool loadXml(const QString &path, const MapData &data, qreal ratio);