Compare commits
53 Commits
x7z4w-geon
...
generate-2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0106905c1 | ||
|
|
982009f3c0 | ||
|
|
eb1bda4d1b | ||
|
|
bc10ca3b8c | ||
|
|
b28c0cae65 | ||
|
|
410b027bf8 | ||
|
|
edaef67283 | ||
|
|
8a1855add6 | ||
|
|
6049ab28cf | ||
|
|
a6ed71553a | ||
|
|
c11b1558aa | ||
|
|
d317286024 | ||
|
|
a58f1674dc | ||
|
|
8c2adfd984 | ||
|
|
40e74d032b | ||
|
|
e07413eda5 | ||
|
|
19da703a24 | ||
|
|
7aee6ab160 | ||
|
|
156fc52831 | ||
|
|
88638feba1 | ||
|
|
1d39c726c2 | ||
|
|
056f1cf75a | ||
|
|
af2e923783 | ||
|
|
af5cf0cc4b | ||
|
|
e6d3e75ed4 | ||
|
|
0c8cbdc3de | ||
|
|
29e487ac47 | ||
|
|
d55f04be89 | ||
|
|
14868e1eae | ||
|
|
b4314a0587 | ||
|
|
fef0872ca4 | ||
|
|
36a8425b06 | ||
|
|
378f144761 | ||
|
|
362dae7925 | ||
|
|
2391e1c4e3 | ||
|
|
3c0b6ae782 | ||
|
|
d85922f775 | ||
|
|
bbd69ced6c | ||
|
|
31b60be3e8 | ||
|
|
03adb37007 | ||
|
|
d153579a2b | ||
|
|
d1eb1582ad | ||
|
|
5bf59d3f53 | ||
|
|
d6fcaaa7ec | ||
|
|
1f7a93ff77 | ||
|
|
80ec3057ef | ||
|
|
f579e7ed94 | ||
|
|
957fcbf6bf | ||
|
|
c58c3c01dd | ||
|
|
115a05a57a | ||
|
|
80c0932231 | ||
|
|
144b27adde | ||
|
|
18075e7c8f |
@@ -9,6 +9,7 @@ on:
|
||||
type: choice
|
||||
options:
|
||||
- all
|
||||
- clone-repos
|
||||
- copy-coasts
|
||||
- planet
|
||||
- wiki
|
||||
@@ -16,30 +17,95 @@ on:
|
||||
- subways
|
||||
- tiger
|
||||
- maps
|
||||
- upload
|
||||
reclone:
|
||||
description: 'Force a re-clone of all git repos?'
|
||||
required: false
|
||||
default: 'no'
|
||||
type: choice
|
||||
options:
|
||||
- 'no'
|
||||
- force
|
||||
|
||||
## RCLONE_CONF is multi-line text containing keys and credentials for us2,ru1,fi1,de1 servers
|
||||
|
||||
env:
|
||||
RCLONE_CONF: ${{ secrets.RCLONE_CONF }}
|
||||
WIKIMEDIA_USERNAME: ${{ secrets.WIKIMEDIA_USERNAME }}
|
||||
WIKIMEDIA_PASSWORD: ${{ secrets.WIKIMEDIA_PASSWORD }}
|
||||
S3_KEY_ID: ${{ secrets.S3_KEY_ID }}
|
||||
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
|
||||
S3_ENDPOINT: ${{ secrets.S3_ENDPOINT }}
|
||||
S3_BUCKET: ${{ secrets.S3_BUCKET }}
|
||||
SFTP_USER: ${{ secrets.SFTP_USER }}
|
||||
SFTP_PASSWORD: ${{ secrets.SFTP_PASSWORD }}
|
||||
SFTP_HOST: ${{ secrets.SFTP_HOST }}
|
||||
SFTP_PATH: ${{ secrets.SFTP_PATH }}
|
||||
ZULIP_BOT_EMAIL: ${{ secrets.ZULIP_BOT_EMAIL }}
|
||||
ZULIP_API_KEY: ${{ secrets.ZULIP_API_KEY }}
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
TZ: Etc/UTC
|
||||
|
||||
jobs:
|
||||
clone-repos:
|
||||
if: inputs.jobs == 'clone-repos' || inputs.jobs == 'all'
|
||||
name: Clone Git Repos
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /mnt/4tbexternal:/mnt/4tbexternal
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Clone or update main repo if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
ls -al /mnt
|
||||
ls -al /mnt/4tbexternal
|
||||
if [[ '${{ inputs.reclone }}' == 'force' ]]; then
|
||||
rm -rf /mnt/4tbexternal/comaps-init
|
||||
fi
|
||||
|
||||
if [ ! -d /mnt/4tbexternal/comaps-init ]; then
|
||||
cd /mnt/4tbexternal
|
||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251027 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
||||
else
|
||||
cd /mnt/4tbexternal/comaps-init && git pull origin rebase-generator-pastk-wb251027
|
||||
fi
|
||||
- name: Clone or update wikiparser repo if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ '${{ inputs.reclone }}' == 'force' ]]; then
|
||||
rm -rf /mnt/4tbexternal/wikiparser
|
||||
fi
|
||||
|
||||
if [ ! -d /mnt/4tbexternal/wikiparser ]; then
|
||||
cd /mnt/4tbexternal
|
||||
git clone https://codeberg.org/comaps/wikiparser.git
|
||||
else
|
||||
cd /mnt/4tbexternal/wikiparser && git pull origin main
|
||||
fi
|
||||
- name: Clone or update subways repo if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ '${{ inputs.reclone }}' == 'force' ]]; then
|
||||
rm -rf /mnt/4tbexternal/subways
|
||||
fi
|
||||
|
||||
if [ ! -d /mnt/4tbexternal/subways ]; then
|
||||
cd /mnt/4tbexternal
|
||||
git clone https://codeberg.org/comaps/subways.git
|
||||
else
|
||||
cd /mnt/4tbexternal/subways && git pull origin master
|
||||
fi
|
||||
|
||||
copy-coasts:
|
||||
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all'
|
||||
name: Copy Previously Generated Coasts
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
|
||||
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
|
||||
- /mnt/4tbexternal/subways:/root/OM/subways
|
||||
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
@@ -47,9 +113,9 @@ jobs:
|
||||
- name: Copy Coasts
|
||||
shell: bash
|
||||
run: |
|
||||
if [ -f /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom ]; then
|
||||
cp /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom /media/4tbexternal/osm-planet/latest_coasts.geom
|
||||
cp /media/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.rawgeom /media/4tbexternal/osm-planet/latest_coasts.rawgeom
|
||||
if [ -f /root/OM/osm-maps/*/intermediate_data/WorldCoasts.geom ]; then
|
||||
cp /root/OM/osm-maps/*/intermediate_data/WorldCoasts.geom /home/planet/latest_coasts.geom
|
||||
cp /root/OM/osm-maps/*/intermediate_data/WorldCoasts.rawgeom /home/planet/latest_coasts.rawgeom
|
||||
fi
|
||||
|
||||
update-planet:
|
||||
@@ -57,86 +123,93 @@ jobs:
|
||||
name: Update Planet
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
|
||||
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
|
||||
- /mnt/4tbexternal/subways:/root/OM/subways
|
||||
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
apt-get update -y
|
||||
apt-get install -y pyosmium osmium-tool python3-venv python3-pip wget2
|
||||
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
|
||||
pip3 install "protobuf<4"
|
||||
- name: Download Planet File if Absent
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/osm-planet/planet/ ]; then
|
||||
mkdir -p /media/4tbexternal/osm-planet/planet/
|
||||
if [ ! -d /home/planet/planet/ ]; then
|
||||
mkdir -p /home/planet/planet/
|
||||
fi
|
||||
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
|
||||
cd /media/4tbexternal/osm-planet/planet/
|
||||
wget2 --verbose --progress=bar --continue --debug https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
|
||||
if [ ! -f /home/planet/planet/planet-latest.osm.pbf ]; then
|
||||
cd /home/planet/planet/
|
||||
wget2 --verbose --progress=bar --continue https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
|
||||
fi
|
||||
- name: Update Planet
|
||||
shell: bash
|
||||
run: |
|
||||
cd /media/4tbexternal/osm-planet/planet/
|
||||
cd /home/planet/planet/
|
||||
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -vv --size 16384
|
||||
mv planet-latest-new.osm.pbf planet-latest.osm.pbf
|
||||
- name: Converting planet-latest.osm.pbf to planet.o5m
|
||||
run: /root/OM/osmctools/osmconvert planet-latest.osm.pbf -o=planet.o5m
|
||||
run: |
|
||||
echo "Starting..."
|
||||
cd /home/planet/planet/
|
||||
osmconvert planet-latest.osm.pbf -o=planet.o5m
|
||||
echo "Done."
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Planet update is done!'
|
||||
|
||||
wiki-update:
|
||||
if: inputs.jobs == 'wiki' || inputs.jobs == 'all'
|
||||
name: Update Wikipedia
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
|
||||
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
|
||||
- /mnt/4tbexternal/subways:/root/OM/subways
|
||||
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
apt-get update -y
|
||||
apt-get install -y jq curl wget2 rustc cargo git ca-certificates
|
||||
- name: Clone wikiparser if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/wikiparser ]; then
|
||||
cd /media/4tbexternal
|
||||
git clone https://codeberg.org/comaps/wikiparser.git
|
||||
fi
|
||||
- name: Check for planet file
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
|
||||
echo "ERROR: No file at /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf"
|
||||
ls -al /media/4tbexternal/
|
||||
ls -al /media/4tbexternal/osm-planet/
|
||||
ls -al /media/4tbexternal/osm-planet/planet/
|
||||
if [ ! -f /home/planet/planet/planet-latest.osm.pbf ]; then
|
||||
echo "ERROR: No file at /home/planet/planet/planet-latest.osm.pbf"
|
||||
ls -al /home/planet/
|
||||
ls -al /home/planet/planet/
|
||||
exit 1
|
||||
fi
|
||||
- name: Update Wikipedia from Enterprise API
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p /media/4tbexternal/osm-planet/wikipedia/dumps
|
||||
mkdir -p /media/4tbexternal/osm-planet/wikipedia/build
|
||||
cd /media/4tbexternal/wikiparser
|
||||
#todo: curl in download.sh can fail when rate limited and even save error messages to the output. need to validate.
|
||||
#downloading all languages can also trigger rate limits or fail as well. needs work.
|
||||
#also: a failure to download means a failure to build, and could result in no wiki descriptions etc.
|
||||
#also-also: do we want to remove old wiki data in planet between builds?
|
||||
mkdir -p /home/planet/wikipedia/dumps
|
||||
mkdir -p /home/planet/wikipedia/build
|
||||
cd /root/OM/wikiparser
|
||||
ls -al
|
||||
echo "Downloading ..."
|
||||
./download.sh /media/4tbexternal/osm-planet/wikipedia/dumps
|
||||
./download.sh /home/planet/wikipedia/dumps
|
||||
ls -al /home/planet/wikipedia/dumps/*
|
||||
echo "Running ..."
|
||||
./run.sh /media/4tbexternal/osm-planet/wikipedia/build \
|
||||
/media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf \
|
||||
/media/4tbexternal/osm-planet/wikipedia/dumps/latest/*.tar.gz
|
||||
./run.sh /home/planet/wikipedia/build \
|
||||
/home/planet/planet/planet-latest.osm.pbf \
|
||||
/home/planet/wikipedia/dumps/latest/*.tar.gz
|
||||
echo "DONE"
|
||||
|
||||
update-isolines:
|
||||
@@ -144,74 +217,34 @@ jobs:
|
||||
name: Update Isolines
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
|
||||
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
|
||||
- /mnt/4tbexternal/subways:/root/OM/subways
|
||||
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
apt-get update -qq \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
osmctools \
|
||||
rclone \
|
||||
git \
|
||||
ca-certificates \
|
||||
openssh-client \
|
||||
sshpass \
|
||||
vim \
|
||||
wget \
|
||||
build-essential \
|
||||
clang \
|
||||
cmake \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3.12-venv \
|
||||
qt6-base-dev \
|
||||
qt6-positioning-dev \
|
||||
libc++-dev \
|
||||
libfreetype-dev \
|
||||
libglvnd-dev \
|
||||
libgl1-mesa-dev \
|
||||
libharfbuzz-dev \
|
||||
libicu-dev \
|
||||
libqt6svg6-dev \
|
||||
libqt6positioning6-plugins \
|
||||
libqt6positioning6 \
|
||||
libsqlite3-dev \
|
||||
libxrandr-dev \
|
||||
libxinerama-dev \
|
||||
libxcursor-dev \
|
||||
libxi-dev \
|
||||
zlib1g-dev
|
||||
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
|
||||
pip3 install "protobuf<4"
|
||||
- name: Clone main repo if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/comaps-init ]; then
|
||||
apt-get update -qq && apt-get install -y --no-install-recommends git
|
||||
cd /media/4tbexternal
|
||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
||||
fi
|
||||
# TODO: we only need to update these if our SRTM or countries change
|
||||
# TODO: after update, verify that sizable files exist: /home/planet/isolines/*.isolines
|
||||
- name: Update Isolines
|
||||
shell: bash
|
||||
run: |
|
||||
cd /media/4tbexternal/comaps-init/
|
||||
cd /root/OM/comaps-init/
|
||||
./tools/unix/build_omim.sh -R topography_generator_tool
|
||||
rm -rf ../osm-planet/isolines/
|
||||
mkdir ../osm-planet/isolines/
|
||||
rm -rf /home/planet/isolines/
|
||||
mkdir /home/planet/isolines/
|
||||
../omim-build-relwithdebinfo/topography_generator_tool \
|
||||
--profiles_path=./data/conf/isolines/isolines-profiles.json \
|
||||
--countries_to_generate_path=./data/conf/isolines/countries-to-generate.json \
|
||||
--tiles_isolines_out_dir=../osm-planet/isolines/tmp-tiles/ \
|
||||
--countries_isolines_out_dir=../osm-planet/isolines/ \
|
||||
--tiles_isolines_out_dir=/home/planet/isolines/tmp-tiles/ \
|
||||
--countries_isolines_out_dir=/home/planet/isolines/ \
|
||||
--data_dir=./data/ \
|
||||
--srtm_path=../osm-planet/SRTM-patched-europe/ \
|
||||
--srtm_path=/home/planet/SRTM-patched-europe/ \
|
||||
--threads=22
|
||||
|
||||
update-subways:
|
||||
@@ -219,37 +252,22 @@ jobs:
|
||||
name: Update Subways
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
|
||||
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
|
||||
- /mnt/4tbexternal/subways:/root/OM/subways
|
||||
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
apt-get update -qq && apt-get install -y --no-install-recommends curl osmctools osmium-tool python3-venv ca-certificates git python3-pip
|
||||
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
|
||||
pip3 install "protobuf<4"
|
||||
- name: Clone subways if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/subways ]; then
|
||||
cd /media/4tbexternal
|
||||
git clone https://codeberg.org/comaps/subways.git
|
||||
fi
|
||||
- name: Clone main repo if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/comaps-init ]; then
|
||||
cd /media/4tbexternal
|
||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
||||
fi
|
||||
- name: Update Subways
|
||||
shell: bash
|
||||
run: |
|
||||
cd /media/4tbexternal/comaps-init/
|
||||
cd /root/OM/comaps-init/
|
||||
cp tools/unix/maps/settings.sh.prod tools/unix/maps/settings.sh
|
||||
./tools/unix/maps/generate_subways.sh
|
||||
|
||||
@@ -258,125 +276,127 @@ jobs:
|
||||
name: Update TIGER
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
|
||||
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
|
||||
- /mnt/4tbexternal/subways:/root/OM/subways
|
||||
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
apt-get update -qq && apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
clang \
|
||||
cmake \
|
||||
ninja-build \
|
||||
ca-certificates \
|
||||
git \
|
||||
wget2
|
||||
- name: Clone main repo if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/comaps-init ]; then
|
||||
cd /media/4tbexternal
|
||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
||||
fi
|
||||
- name: Build address_parser
|
||||
shell: bash
|
||||
run: |
|
||||
cd /media/4tbexternal/comaps-init
|
||||
cd /root/OM/comaps-init
|
||||
rm -rf ../omim-build-relwithdebinfo/CMakeCache.txt
|
||||
rm -rf ../omim-build-relwithdebinfo/CMakeFiles
|
||||
./tools/unix/build_omim.sh -R address_parser_tool
|
||||
- name: Update TIGER from Nominatim
|
||||
shell: bash
|
||||
run: |
|
||||
cd /media/4tbexternal/osm-planet/
|
||||
# TODO: maybe remove old osm-planet/tiger first?
|
||||
cd /home/planet/
|
||||
mkdir -p tiger
|
||||
wget2 https://nominatim.org/data/tiger-nominatim-preprocessed-latest.csv.tar.gz
|
||||
tar -xOzf tiger-nominatim-preprocessed-latest.csv.tar.gz | /media/4tbexternal/omim-build-relwithdebinfo/address_parser_tool --output_path=./tiger
|
||||
cd /root/OM/comaps-init
|
||||
tar -xOzf /home/planet/tiger-nominatim-preprocessed-latest.csv.tar.gz | /root/OM/omim-build-relwithdebinfo/address_parser_tool --output_path=/home/planet/tiger
|
||||
|
||||
generate-maps:
|
||||
if: inputs.jobs == 'maps' || inputs.jobs == 'all'
|
||||
name: Generate Maps
|
||||
runs-on: mapfilemaker
|
||||
timeout-minutes: 40320
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
|
||||
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
|
||||
- /mnt/4tbexternal/subways:/root/OM/subways
|
||||
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
|
||||
options: --ulimit nofile=262144:262144
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
apt-get update -qq \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
osmctools \
|
||||
rclone \
|
||||
git \
|
||||
ca-certificates \
|
||||
openssh-client \
|
||||
sshpass \
|
||||
vim \
|
||||
wget \
|
||||
build-essential \
|
||||
clang \
|
||||
cmake \
|
||||
ninja-build \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3.12-venv \
|
||||
qt6-base-dev \
|
||||
qt6-positioning-dev \
|
||||
libc++-dev \
|
||||
libfreetype-dev \
|
||||
libglvnd-dev \
|
||||
libgl1-mesa-dev \
|
||||
libharfbuzz-dev \
|
||||
libicu-dev \
|
||||
libqt6svg6-dev \
|
||||
libqt6positioning6-plugins \
|
||||
libqt6positioning6 \
|
||||
libsqlite3-dev \
|
||||
libxrandr-dev \
|
||||
libxinerama-dev \
|
||||
libxcursor-dev \
|
||||
libxi-dev \
|
||||
zlib1g-dev
|
||||
- name: Clone repo if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/comaps-init ]; then
|
||||
cd /media/4tbexternal
|
||||
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
|
||||
fi
|
||||
- name: Make output folders if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/osm-maps ]; then
|
||||
mkdir -p /media/4tbexternal/osm-maps
|
||||
if [ ! -d /root/OM/osm-maps ]; then
|
||||
mkdir -p /root/OM/osm-maps
|
||||
fi
|
||||
- name: Get SRTM if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/osm-planet/SRTM-patched-europe/ ]; then
|
||||
if [ ! -d /home/planet/SRTM-patched-europe/ ]; then
|
||||
echo "ERROR: NO SRTM"
|
||||
exit 1
|
||||
fi
|
||||
- name: Symlink paths for repo scripts
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p /root/OM
|
||||
ln -s /media/4tbexternal/comaps-init /root/OM/organicmaps
|
||||
ln -s /media/4tbexternal/osm-planet /home/planet
|
||||
ln -s /media/4tbexternal/osm-maps /root/OM/maps_build
|
||||
- name: Run docker_maps_generator.sh
|
||||
shell: bash
|
||||
run: |
|
||||
cd /root/OM/organicmaps
|
||||
./tools/unix/docker_maps_generator.sh
|
||||
cd /root/OM/comaps-init
|
||||
./tools/unix/docker_maps_generator.sh
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Generator is done!'
|
||||
|
||||
upload-maps:
|
||||
if: inputs.jobs == 'upload' || inputs.jobs == 'all'
|
||||
name: Upload Maps
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:96d2a38aa23d
|
||||
volumes:
|
||||
- /mnt/4tbexternal/comaps-init:/root/OM/comaps-init
|
||||
- /mnt/4tbexternal/wikiparser:/root/OM/wikiparser
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
- /mnt/4tbexternal/osm-maps:/root/OM/osm-maps
|
||||
- /mnt/4tbexternal/subways:/root/OM/subways
|
||||
- /mnt/4tbexternal/omim-build-relwithdebinfo:/root/OM/omim-build-relwithdebinfo
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- name: Write config file
|
||||
run: |
|
||||
mkdir -p ~/.config/rclone/
|
||||
echo "${{ secrets.RCLONE_CONF }}" > ~/.config/rclone/rclone.conf
|
||||
head -n3 ~/.config/rclone/rclone.conf
|
||||
- name: Upload map files to CDNs
|
||||
shell: bash
|
||||
run: |
|
||||
shopt -s nullglob
|
||||
buildfolder=$(find /root/OM/osm-maps/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f5)
|
||||
builddate=$(find /root/OM/osm-maps/*/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f6)
|
||||
mwmfiles=( /root/OM/osm-maps/$buildfolder/$builddate/*.mwm )
|
||||
|
||||
if (( ${#mwmfiles[@]} )); then
|
||||
echo "<$(date +%T)> Uploading maps from $buildfolder/$builddate..."
|
||||
cd /root/OM/comaps-init/tools/unix/maps
|
||||
./upload_to_cdn.sh /root/OM/osm-maps/$buildfolder/$builddate
|
||||
else
|
||||
echo "<$(date +%T)> No MWM files in /root/OM/osm-maps/$buildfolder/$builddate/*.mwm, not uploading maps."
|
||||
echo "<$(date +%T)> Found top level: $(ls -alt /root/OM/osm-maps/*)"
|
||||
echo "<$(date +%T)> Found second level: $(ls -alt /root/OM/osm-maps/$buildfolder/*)"
|
||||
fi
|
||||
- name: Notify Zulip
|
||||
run: |
|
||||
curl -X POST https://comaps.zulipchat.com/api/v1/messages \
|
||||
-u $ZULIP_BOT_EMAIL:$ZULIP_API_KEY \
|
||||
--data-urlencode type=stream \
|
||||
--data-urlencode 'to="DevOps"' \
|
||||
--data-urlencode topic=codeberg-bot \
|
||||
--data-urlencode 'content=Upload is done!'
|
||||
|
||||
|
||||
1
.gitignore
vendored
@@ -9,6 +9,7 @@ Makefile.Release
|
||||
object_script.*.Debug
|
||||
object_script.*.Release
|
||||
compile_commands.json
|
||||
*.local.*
|
||||
|
||||
stxxl.errlog
|
||||
stxxl.log
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
• OpenStreetMap-Daten vom 4. November
|
||||
• OpenStreetMap-Daten vom 28. Oktober
|
||||
• Aktualisierte Karten-Icons, inkl. Farben für Unterhaltungs-, Sport- & andere Unternehmen
|
||||
• Informationen zu Steckdosen an EV-Ladestationen
|
||||
• Symbole für Sportzentren, Veranstaltungsorte, Massagesalons, Gästehäuser und einige stillgelegte Unternehmen
|
||||
• Verbesserungen bei der Suche
|
||||
• Behebung eines Absturzes bei der Suche
|
||||
• Verbesserte Sprachführung während der Navigation
|
||||
• Verbesserte Sprachführung während der Navigation (via OM)
|
||||
Weitere Änderungen finden in unseren Codeberg-Versionshinweisen!
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
• OpenStreetMap data as of November 4
|
||||
• Recategorized map icons including some new colors for entertainment, sports and other businesses
|
||||
• Display info about available sockets on charging stations
|
||||
• Added bandstands, backless benches and loungers
|
||||
• New icons for different sport centres, event venues, massage salons, guest houses and some disused businesses
|
||||
• Multiple search improvements and crash fix
|
||||
• Improved voice guidance during navigation
|
||||
• Added icons for different sport centres, event venues, massage salons, guest houses and some disused businesses
|
||||
• Multiple search improvements
|
||||
• Fixed crash in search
|
||||
• Improved voice guidance during navigation (via OM project)
|
||||
Check our Codeberg release notes for more changes!
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
• Datos OSM del 04/11
|
||||
• Datos OSM del 28/10
|
||||
• Iconos del mapa recategorizados, incluyendo nuevos colores
|
||||
• Visualización de información sobre enchufes disponibles en estaciones de recarga
|
||||
• Adición de iconos para diferentes centros deportivos, lugares de eventos, salones de masajes, posadas y algunos establecimientos comerciales desactivados
|
||||
• Varias mejoras y correcciones de errores en la búsqueda
|
||||
• Mejora en la orientación por voz durante la navegación
|
||||
• Mejora en la orientación por voz durante la navegación (via OM)
|
||||
Más detalles en Codeberg
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
• Données OpenStreetMap au 4 novembre
|
||||
• Données OpenStreetMap du 28 octobre
|
||||
• Recatégorisation des icônes sur la carte avec ajout de nouvelles couleurs pour certains types de lieux
|
||||
• Affichage des prises sur les bornes électriques
|
||||
• Ajout d'icônes pour les centres sportifs, salles d'événements, salon de massage et autres lieux
|
||||
• Multiple améliorations dans la recherche
|
||||
• Correction d'un plantage dans la recherche
|
||||
• Amélioration de la synthèse vocale durant la navigation
|
||||
• Amélioration de la synthèse vocale durant la navigation (via le projet OM)
|
||||
Plus d'informations sur notre Codeberg
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
• Dados OSM de 04/11
|
||||
• Dados OSM de 28/10
|
||||
• Ícones do mapa recategorizados, incluindo novas cores
|
||||
• Exibição de informações sobre tomadas disponíveis em eletropostos
|
||||
• Adição de ícones para diferentes centros esportivos, locais de eventos, salões de massagem, pousadas e alguns estabelecimentos comerciais desativados
|
||||
• Diversas melhorias e correção de erro na busca
|
||||
• Melhoria na orientação por voz durante a navegação
|
||||
• Melhoria na orientação por voz durante a navegação (via projeto OM)
|
||||
Confira nossas notas de lançamento no Codeberg para mais detalhes!
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
• Карты OpenStreetMap от 4 ноября
|
||||
• Обновлены цвета иконок на карте, добавлены новые цвета для развлечений, спорта, некоторых бизнесов
|
||||
• На зарядных станциях показываются имеющиеся типы разъёмов
|
||||
• Добавлены эстрады, скамейки без спинок и лежаки
|
||||
• Новые иконки для разных спорт центров, массажных салонов, гостевых домов, некоторых закрытых бизнесов
|
||||
• Несколько улучшений и исправлений в поиске
|
||||
• Улучшены голосовые подсказки при навигации
|
||||
Подробнее смотрите на codeberg.org/comaps/comaps/releases
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package app.organicmaps.background;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.work.Constraints;
|
||||
import androidx.work.ExistingWorkPolicy;
|
||||
import androidx.work.NetworkType;
|
||||
import androidx.work.OneTimeWorkRequest;
|
||||
import androidx.work.OutOfQuotaPolicy;
|
||||
import androidx.work.WorkManager;
|
||||
import androidx.work.Worker;
|
||||
import androidx.work.WorkerParameters;
|
||||
@@ -37,11 +35,7 @@ public class OsmUploadWork extends Worker
|
||||
if (Editor.nativeHasSomethingToUpload() && OsmOAuth.isAuthorized())
|
||||
{
|
||||
final Constraints c = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
|
||||
OneTimeWorkRequest.Builder builder = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(c);
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
builder.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST);
|
||||
}
|
||||
final OneTimeWorkRequest wr = builder.build();
|
||||
final OneTimeWorkRequest wr = new OneTimeWorkRequest.Builder(OsmUploadWork.class).setConstraints(c).build();
|
||||
WorkManager.getInstance(context).beginUniqueWork("UploadOsmChanges", ExistingWorkPolicy.KEEP, wr).enqueue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
<string name="type.amenity.bench">Sitzbank</string>
|
||||
<string name="type.amenity.bench.backless">Sitzbank ohne Rückenlehne</string>
|
||||
<string name="type.amenity.bicycle_parking">Fahrradständer</string>
|
||||
<string name="type.amenity.boat_rental">Bootsverleih</string>
|
||||
<string name="type.amenity.bicycle_rental">Fahrradverleih</string>
|
||||
<string name="type.amenity.bicycle_repair_station">Fahrrad-Reparaturstation</string>
|
||||
<string name="type.amenity.brothel">Bordell</string>
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
<string name="type.amenity.bench.backless">Backless Bench</string>
|
||||
<string name="type.amenity.bicycle_parking">Bicycle Parking</string>
|
||||
<string name="type.amenity.bicycle_parking.covered">Covered Bicycle Parking</string>
|
||||
<string name="type.amenity.boat_rental">Boat Rental</string>
|
||||
<string name="type.amenity.bicycle_rental">Bicycle Rental</string>
|
||||
<string name="type.amenity.bicycle_repair_station">Bicycle Repair Station</string>
|
||||
<string name="type.amenity.biergarten">Biergarten</string>
|
||||
@@ -93,7 +92,6 @@
|
||||
<string name="type.amenity.loading_dock">Loading Dock</string>
|
||||
<string name="type.amenity.lounger">Lounger</string>
|
||||
<string name="type.amenity.luggage_locker">Luggage Locker</string>
|
||||
<string name="type.amenity.mobile_money_agent">Mobile Money Agent</string>
|
||||
<string name="type.amenity.marketplace">Marketplace</string>
|
||||
<string name="type.amenity.motorcycle_parking">Motorcycle Parking</string>
|
||||
<string name="type.amenity.nightclub">Nightclub</string>
|
||||
@@ -123,7 +121,6 @@
|
||||
<string name="type.amenity.parking_space.private">Parking Space</string>
|
||||
<string name="type.amenity.parking_space.underground">Parking Space</string>
|
||||
<string name="type.amenity.parking_space.disabled">Disabled Parking Space</string>
|
||||
<string name="type.amenity.payment_centre">Payment Centre</string>
|
||||
<string name="type.amenity.payment_terminal">Payment Terminal</string>
|
||||
<string name="type.amenity.pharmacy">Pharmacy</string>
|
||||
<string name="type.amenity.place_of_worship">Place of Worship</string>
|
||||
@@ -660,7 +657,6 @@
|
||||
<string name="type.leisure.miniature_golf">Minigolf</string>
|
||||
<string name="type.leisure.hackerspace">Hackerspace</string>
|
||||
<string name="type.leisure.ice_rink">Ice Rink</string>
|
||||
<string name="type.leisure.indoor_play">Indoor Play Centre</string>
|
||||
<string name="type.leisure.marina">Marina</string>
|
||||
<string name="type.leisure.nature_reserve">Nature Reserve</string>
|
||||
<string name="type.leisure.outdoor_seating">Outdoor Seating</string>
|
||||
@@ -1255,7 +1251,6 @@
|
||||
<string name="type.shop.supermarket">Supermarket</string>
|
||||
<string name="type.shop.tattoo">Tattoo Parlour</string>
|
||||
<string name="type.shop.tea">Tea Shop</string>
|
||||
<string name="type.shop.telecommunication">Telecommunication Shop</string>
|
||||
<string name="type.shop.ticket">Ticket Shop</string>
|
||||
<string name="type.shop.toys">Toy Store</string>
|
||||
<string name="type.shop.travel_agency">Travel Agency</string>
|
||||
|
||||
@@ -62,7 +62,6 @@
|
||||
"shop-laundry": "4Laundry|Laundrette|laundromat",
|
||||
"shop-toys|@category_children|@shop": "Toy|toyshop|kids|toys|kids toys",
|
||||
"amenity-marketplace|@category_food": "3Marketplace|market",
|
||||
"amenity-mobile_money_agent": "Mobile Money Agent|mobile money",
|
||||
"amenity-money_transfer": "Money Transfer",
|
||||
"shop-clothes|@category_shopping|@shop": "3Clothes|U+1F45A|U+1F457|U+1F456|U+1F455|clothing|wear",
|
||||
"shop-caravan|@category_rv|@shop": "2RV dealership|4Caravan dealership|Motorhome dealership",
|
||||
@@ -129,7 +128,6 @@
|
||||
"leisure-garden": "3Garden",
|
||||
"leisure-firepit": "5Firepit",
|
||||
"amenity-bench|amenity-bench-backless": "Bench",
|
||||
"amenity-boat_rental": "4Boat Rental|boat|3rental",
|
||||
"amenity-bicycle_rental": "4Bicycle Rental|cycle|bike|3rental|U+1F6B2|U+1F6B4|U+1F6B5|bicycle hire|bike rental",
|
||||
"amenity-bicycle_repair_station": "4Bicycle Repair Station|cycle|bike|4repair of bicycles",
|
||||
"amenity-car_sharing": "Car Share|3carsharing|car|sharing|U+1F697|U+1F698|U+1F699|carpool|carsharing services|car sharing|4rideshare",
|
||||
@@ -421,7 +419,6 @@
|
||||
"amenity-parking_space-disabled|@category_parking": "Disabled Parking Space",
|
||||
"amenity-nursing_home": "4Nursing Home",
|
||||
"amenity-payment_terminal": "Payment Terminal",
|
||||
"amenity-payment_centre": "Payment Centre",
|
||||
"amenity-public_bath": "Public Bath",
|
||||
"amenity-shower": "Shower",
|
||||
"emergency-assembly_point": "Emergency Assembly Point",
|
||||
@@ -453,7 +450,6 @@
|
||||
"natural-glacier|@category_tourism": "Glacier",
|
||||
"highway-ford": "Ford",
|
||||
"leisure-marina": "3Marina",
|
||||
"leisure-indoor_play": "3Indoor Play Centre|indoor play|indoor playground",
|
||||
"piste:type-downhill|piste:type-nordic": "Skiing|3Ski run|4Piste",
|
||||
"amenity-events_venue": "Events Venue",
|
||||
"shop-chocolate|@category_food|@shop": "Chocolate",
|
||||
@@ -463,7 +459,6 @@
|
||||
"shop-music|@shop": "Record|vinyl|Music",
|
||||
"shop-musical_instrument|@shop": "Musical instruments",
|
||||
"shop-tea|@shop": "Tea",
|
||||
"shop-telecommunication|@shop": "Telecommunication",
|
||||
"shop-antiques|@category_shopping|@shop|@category_secondhand": "Antiques",
|
||||
"shop-art|@category_shopping|@shop": "3Artwork|Arts",
|
||||
"shop-baby_goods|@category_children|@shop": "Baby Goods",
|
||||
|
||||
@@ -225,11 +225,11 @@
|
||||
"tourism-alpine_hut|@category_hotel": "4Cabaña|cabaña alpina|hotel de montaña",
|
||||
"shop-hairdresser": "4Peluquería",
|
||||
"aeroway-aerodrome": "3Aeropuerto|3avión|aeródromo",
|
||||
"leisure-stadium": "5Estadio",
|
||||
"leisure-playground|@category_children": "Patio de recreo|4Parque infantil|Corral|Corralito",
|
||||
"leisure-sports_centre|leisure-sports_centre-sport-american_football|leisure-sports_centre-sport-archery|leisure-sports_centre-sport-athletics|leisure-sports_centre-sport-australian_football|leisure-sports_centre-sport-badminton|leisure-sports_centre-sport-baseball|leisure-sports_centre-sport-basketball|leisure-sports_centre-sport-beachvolleyball|leisure-sports_centre-sport-bowls|leisure-sports_centre-sport-climbing|leisure-sports_centre-sport-cricket|leisure-sports_centre-sport-curling|leisure-sports_centre-sport-equestrian|leisure-sports_centre-sport-field_hockey|leisure-sports_centre-sport-futsal|leisure-sports_centre-sport-golf|leisure-sports_centre-sport-gymnastics|leisure-sports_centre-sport-handball|leisure-sports_centre-sport-ice_hockey|leisure-sports_centre-sport-multi|leisure-sports_centre-sport-padel|leisure-sports_centre-sport-pelota|leisure-sports_centre-sport-scuba_diving|leisure-sports_centre-sport-shooting|leisure-sports_centre-sport-skateboard|leisure-sports_centre-sport-skiing|leisure-sports_centre-sport-soccer|leisure-sports_centre-sport-table_tennis|leisure-sports_centre-sport-tennis|leisure-sports_centre-sport-volleyball|leisure-sports_centre-sport-yoga": "Polideportivo|Centro deportivo|deporte",
|
||||
"leisure-golf_course": "Campo de golf|Golf",
|
||||
"leisure-miniature_golf": "5Minigolf|Mini golf",
|
||||
"leisure-stadium": "5Estadio|4deporte",
|
||||
"leisure-playground|@category_children": "Patio de recreo|Parque infantil",
|
||||
"leisure-sports_centre|leisure-sports_centre-sport-american_football|leisure-sports_centre-sport-archery|leisure-sports_centre-sport-athletics|leisure-sports_centre-sport-australian_football|leisure-sports_centre-sport-badminton|leisure-sports_centre-sport-baseball|leisure-sports_centre-sport-basketball|leisure-sports_centre-sport-beachvolleyball|leisure-sports_centre-sport-bowls|leisure-sports_centre-sport-climbing|leisure-sports_centre-sport-cricket|leisure-sports_centre-sport-curling|leisure-sports_centre-sport-equestrian|leisure-sports_centre-sport-field_hockey|leisure-sports_centre-sport-futsal|leisure-sports_centre-sport-golf|leisure-sports_centre-sport-gymnastics|leisure-sports_centre-sport-handball|leisure-sports_centre-sport-ice_hockey|leisure-sports_centre-sport-multi|leisure-sports_centre-sport-padel|leisure-sports_centre-sport-pelota|leisure-sports_centre-sport-scuba_diving|leisure-sports_centre-sport-shooting|leisure-sports_centre-sport-skateboard|leisure-sports_centre-sport-skiing|leisure-sports_centre-sport-soccer|leisure-sports_centre-sport-table_tennis|leisure-sports_centre-sport-tennis|leisure-sports_centre-sport-volleyball|leisure-sports_centre-sport-yoga": "Polideportivo|deporte",
|
||||
"leisure-golf_course": "Campo de golf",
|
||||
"leisure-miniature_golf": "Minigolf",
|
||||
"leisure-escape_game": "Escape room|Sala de escape|Cuarto de escape",
|
||||
"leisure-hackerspace": "Espacio hacker|Espacio para hackers|Hacklab|Hackerspace",
|
||||
"leisure-pitch": "pista|deporte|cancha|campo",
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
"leisure-stadium": "4Stade|4sport",
|
||||
"leisure-playground|@category_children": "Terrain de jeu|aire de jeu",
|
||||
"leisure-sports_centre|leisure-sports_centre-sport-american_football|leisure-sports_centre-sport-archery|leisure-sports_centre-sport-athletics|leisure-sports_centre-sport-australian_football|leisure-sports_centre-sport-badminton|leisure-sports_centre-sport-baseball|leisure-sports_centre-sport-basketball|leisure-sports_centre-sport-beachvolleyball|leisure-sports_centre-sport-bowls|leisure-sports_centre-sport-climbing|leisure-sports_centre-sport-cricket|leisure-sports_centre-sport-curling|leisure-sports_centre-sport-equestrian|leisure-sports_centre-sport-field_hockey|leisure-sports_centre-sport-futsal|leisure-sports_centre-sport-golf|leisure-sports_centre-sport-gymnastics|leisure-sports_centre-sport-handball|leisure-sports_centre-sport-ice_hockey|leisure-sports_centre-sport-multi|leisure-sports_centre-sport-padel|leisure-sports_centre-sport-pelota|leisure-sports_centre-sport-scuba_diving|leisure-sports_centre-sport-shooting|leisure-sports_centre-sport-skateboard|leisure-sports_centre-sport-skiing|leisure-sports_centre-sport-soccer|leisure-sports_centre-sport-table_tennis|leisure-sports_centre-sport-tennis|leisure-sports_centre-sport-volleyball|leisure-sports_centre-sport-yoga": "Centre sportif|sport",
|
||||
"leisure-golf_course": "Terrain de golf|Parcours de golf",
|
||||
"leisure-golf_course": "Terrain de golf",
|
||||
"leisure-miniature_golf": "Minigolf",
|
||||
"leisure-escape_game": "Salle d'évasion",
|
||||
"leisure-pitch": "Terrain de sport|sport",
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
"leisure-stadium": "4Stadion|4sport|U+26BD|U+26BE|U+1F3BE|U+1F3C0|U+1F3C8|U+1F4AA|U+1F3C9|aréna|olimpiai stadion",
|
||||
"leisure-playground|@category_children": "Játszótér",
|
||||
"leisure-sports_centre|leisure-sports_centre-sport-american_football|leisure-sports_centre-sport-archery|leisure-sports_centre-sport-athletics|leisure-sports_centre-sport-australian_football|leisure-sports_centre-sport-badminton|leisure-sports_centre-sport-baseball|leisure-sports_centre-sport-basketball|leisure-sports_centre-sport-beachvolleyball|leisure-sports_centre-sport-bowls|leisure-sports_centre-sport-climbing|leisure-sports_centre-sport-cricket|leisure-sports_centre-sport-curling|leisure-sports_centre-sport-equestrian|leisure-sports_centre-sport-field_hockey|leisure-sports_centre-sport-futsal|leisure-sports_centre-sport-golf|leisure-sports_centre-sport-gymnastics|leisure-sports_centre-sport-handball|leisure-sports_centre-sport-ice_hockey|leisure-sports_centre-sport-multi|leisure-sports_centre-sport-padel|leisure-sports_centre-sport-pelota|leisure-sports_centre-sport-scuba_diving|leisure-sports_centre-sport-shooting|leisure-sports_centre-sport-skateboard|leisure-sports_centre-sport-skiing|leisure-sports_centre-sport-soccer|leisure-sports_centre-sport-table_tennis|leisure-sports_centre-sport-tennis|leisure-sports_centre-sport-volleyball|leisure-sports_centre-sport-yoga": "4Sportközpont|sport",
|
||||
"leisure-golf_course": "Golfpálya|U+26F3",
|
||||
"leisure-golf_course": "Golfpálya",
|
||||
"leisure-miniature_golf": "Minigolf",
|
||||
"leisure-escape_game": "Szabadulószoba",
|
||||
"leisure-pitch": "4Sportpálya|sport|U+26BD|U+26BE|U+1F3BE|U+1F3C0|U+1F3C8|U+1F3C9|U+1F3C3",
|
||||
|
||||
4622
data/countries.txt
@@ -258,10 +258,6 @@
|
||||
<include field="outdoor_seating" />
|
||||
<include field="website_menu" />
|
||||
</type>
|
||||
<type id="amenity-boat_rental">
|
||||
<include group="poi_internet" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="amenity-bicycle_rental">
|
||||
<include field="website" />
|
||||
<include field="opening_hours" />
|
||||
@@ -1062,9 +1058,6 @@
|
||||
<type id="shop-tea" group="shop">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="shop-telecommunication" group="shop">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="shop-trade" group="shop">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
@@ -1133,7 +1126,6 @@
|
||||
<type id="amenity-bench" />
|
||||
<type id="amenity-compressed_air" />
|
||||
<type id="amenity-bbq" />
|
||||
<type id="leisure-slipway" />
|
||||
<type id="amenity-shelter">
|
||||
<include field="name" />
|
||||
</type>
|
||||
@@ -1205,9 +1197,6 @@
|
||||
<type id="amenity-social_facility">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-payment_centre">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-payment_terminal">
|
||||
<include field="operator" />
|
||||
<include field="level" />
|
||||
@@ -1237,9 +1226,6 @@
|
||||
<type id="amenity-money_transfer">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-mobile_money_agent">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="amenity-vehicle_inspection">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
@@ -1302,9 +1288,6 @@
|
||||
<include group="poi" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="leisure-indoor_play">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
<type id="leisure-fitness_centre">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
|
||||
@@ -642,7 +642,7 @@ deprecated|deprecated;519;x
|
||||
sport|diving;520;
|
||||
#~270k uses.
|
||||
man_made|utility_pole;521;
|
||||
amenity|payment_centre;522;
|
||||
deprecated:boundary|administrative|suburb:04.2024;[boundary=administrative][border_type=suburb];x;name;int_name;522;
|
||||
# Generic unspecified barrier, could be node (50k) or way (100k)
|
||||
barrier|yes;523;
|
||||
railway|monorail|tunnel;[railway=monorail][tunnel?];;name;int_name;524;
|
||||
@@ -663,7 +663,7 @@ deprecated|deprecated;538;x
|
||||
railway|funicular|tunnel;[railway=funicular][tunnel?];;name;int_name;539;
|
||||
barrier|cycle_barrier;540;
|
||||
addr:interpolation;[addr:interpolation];;addr:housenumber;name;541;
|
||||
leisure|indoor_play;542;
|
||||
deprecated:amenity|speed_trap:10.2021;542;highway|speed_camera
|
||||
area:highway|track;543;
|
||||
area:highway|primary;544;
|
||||
deprecated|deprecated;545;x
|
||||
@@ -857,7 +857,7 @@ sport|skiing;732;
|
||||
tourism|museum;733;
|
||||
tourism|guest_house;734;
|
||||
tourism|motel;735;
|
||||
shop|telecommunication;736;
|
||||
deprecated:boundary|administrative|4|state:01.2022;[boundary=administrative][admin_level=4][border_type=state];x;name;int_name;736;boundary|administrative|4
|
||||
place|state|USA;[place=state][addr:country=US],[place=state][is_in=USA],[place=state][is_in:country=USA],[place=state][is_in:country_code=us];;name;int_name;737;
|
||||
building|address;[addr:housenumber][addr:street];;addr:housenumber;name;738;
|
||||
amenity|parking|no-access;[amenity=parking][access=not],[amenity=parking][access=no];;name;int_name;739;
|
||||
@@ -980,7 +980,8 @@ railway|rail|tourism|bridge;[railway=rail][usage=tourism][!service][bridge?];;na
|
||||
railway|rail|highspeed|tunnel;[railway=rail][highspeed?][!service][tunnel?];;name;int_name;854;
|
||||
railway|rail|tourism|tunnel;[railway=rail][usage=tourism][!service][tunnel?];;name;int_name;855;
|
||||
mapswithme|grid;856;
|
||||
amenity|mobile_money_agent;857;
|
||||
# service=bus/busway is deprecated in OSM
|
||||
deprecated:highway|service|busway:10.2023;[highway=service][service=busway];x;name;int_name;857;highway|busway
|
||||
highway|busway;[highway=busway],[highway=service][service=busway],[highway=service][service=bus];;name;int_name;858;
|
||||
highway|busway|bridge;[highway=busway][bridge?];;name;int_name;859;
|
||||
highway|busway|tunnel;[highway=busway][tunnel?];;name;int_name;860;
|
||||
@@ -988,7 +989,7 @@ natural|salt_pond;861;landuse|salt_pond
|
||||
amenity|conference_centre;862;
|
||||
amenity|exhibition_centre;863;
|
||||
deprecated:railway|siding|tunnel:06.2023;864;x
|
||||
amenity|boat_rental;865;
|
||||
deprecated:railway|yard|tunnel:06.2023;865;x
|
||||
area:highway|footway;866;
|
||||
junction|circular;867;
|
||||
area:highway|residential;868;
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 7 and column 16.
|
@@ -231,14 +231,14 @@
|
||||
@subway_label: #9E9E9E;
|
||||
@indigenous_label: #6A512F;
|
||||
@shop_label: #6B425C;
|
||||
@industry_label: #574469;
|
||||
@industry_label: #000000;
|
||||
@food_label: #8C491C;
|
||||
@entertainment_label: #8C311B;
|
||||
@entertainment_label: #000000;
|
||||
@culture_label: #6E4426;
|
||||
@hotel_label: #614A43;
|
||||
@sport_label: #2B5C4B;
|
||||
@nature_label: #3C612E;
|
||||
@water_label: #0A6074;
|
||||
@sport_label: #000000;
|
||||
@nature_label: #000000;
|
||||
@water_label: #000000;
|
||||
@neutral_label: #51585E;
|
||||
@healthcare_label: #983E44;
|
||||
@public_transport_label: #2F6499;
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 19 19" width="19" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(.3312 .9588)"><circle cx="9" cy="9" fill="#000" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#6B425C" r="8.25"/><path d="m7.44735 6.64155c.6266775 0 1.16175-.4049325 1.36425-.964125h2.49225v.4820625c0 .2651325.21693.4820625.4820625.4820625s.4820625-.21693.4820625-.4820625v-.4820625c.2651325 0 .4820625-.21693.4820625-.4820625s-.21693-.4820625-.4820625-.4820625h-3.456375c-.23139-.6507825-.9063-1.07985-1.65345-.935175-.5640075.1108725-1.02195.5736525-1.132875 1.137675-.16872.9159.530265 1.72575 1.422075 1.72575zm0-1.92825c.2651325 0 .4820625.21693.4820625.4820625s-.21693.4820625-.4820625.4820625-.4820625-.21693-.4820625-.4820625.21693-.4820625.4820625-.4820625zm-1.71484793 7.891702h7.01753543c-.3091683 1-.9781318 1.5-2.0068907 1.5h-3.48081229c-.71478849 0-1.3302781-.5043681-1.47074931-1.2052179zm3.18749793-4.99999999c.89379424.94861026 1.4893498 1.67776089 1.7866668 2.18745192.297317.50969107.6428103 1.28054037 1.03648 2.31254807h-2.62497531c.12331455-.8424798.18497182-1.538368.18497182-2.0876646 0-.54929651-.12771443-1.35340832-.38314331-2.41233539zm-.17685315 1.00499799-2.12 3.495002h2.12z" fill="#000"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1 +0,0 @@
|
||||
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><circle cx="9" cy="9" fill="#000" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#802D19" r="8.25"/><path d="m4.33219182 13.4602521c-.56625353-.145147-1.05995548-.6661354-1.19210692-1.258018-.08901014-.3987537-.02672993-.8612893.16530454-1.2277241.12702014-.2423618.39770557-.5208347.63150605-.6497263.3295444-.1816314.40961456-.1970143 1.12899472-.2169742.63145117-.0175177.6551594-.0202617.79691486-.0920999.08035554-.04072105.70197217-.49045301 1.3813886-.99942263.67941643-.50894766 1.24429795-.91666337 1.25538374-.90596174.01106385.01065224.01704578.81354355.01328649 1.78426388l-.00683807 1.76489119-1.06258973.792744c-.58441886.4360174-1.1343181.827044-1.22196172.8689725-.32774983.1566993-.47121206.1788709-1.14046468.1762641-.38992905-.0015367-.66223894-.0150646-.74883983-.0372582zm4.82934464-.0252997-.05776137-.0649397v-8.76545977l2.19822491-1.10462793 2.198225 1.11900654v8.77369176l-.0627116.0536399c-.0527947.0451499-.1065663.0536618-.3399057.0536618-.2588862 0-.2815024-.004577-.3423974-.0688966l-.0652031-.0688746v-1.9666855h-2.78928433v1.9824361l-.06148224.0610103c-.05507774.0546497-.09057971.0610103-.34071252.0610103-.25752517 0-.28371947-.005049-.33698616-.0649452zm3.52846524-6.90776623v-1.05221738h-2.78928432v2.10443476h2.78928432z" fill="#000"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1 +1 @@
|
||||
<svg height="19" viewBox="0 0 18 19" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(0 .9588)"><circle cx="9" cy="9" fill="#000" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#0a6074" r="8.25"/><path d="m14.3284836 9.91216592c-.3125594 1.01096838-.8687086 1.68342498-1.6684475 2.01736998-.1656091-.072627-.3256156-.1651861-.4807525-.2805759-.950475.675-2.27887502.675-3.23467502 0-.950475.675-2.284275.675-3.223875 0-.27744671.2030098-.56714237.3353526-.8659383.4186755-.45689288-.1859843-.80641259-.5898173-.90791437-1.0962377l-.21230169-1.05923188zm-5.78195173-7.54816592.48488347.52149022.44267432.49043051c.84313944.94980132 1.43302404 1.71324441 1.76965374 2.29032927.4488396.76944648.9704078 1.93314626 1.5647046 3.49109933h-3.96274987c.18615974-1.27183553.27923961-2.32237144.27923961-3.15160773s-.19280196-2.04315016-.57840587-3.6417416zm-.26698338 1.51717831v5.27617102h-3.20042235zm5.55269401 9.95882169c-.5724075 0-1.1124-.13-1.62-.4-.9936.54-2.241.54-3.234675 0-.9936.54-2.241.54-3.223875 0-.6642075.3726-1.4256.427-2.16.4v-.88c.7614.027 1.4958-.054 2.16-.54.9396.675 2.2734.675 3.223875 0 .9558.675 2.2842.675 3.234675 0 .6534075.486 1.3932.567 2.1492.54v.88z" fill="#000" fill-rule="evenodd"/></g></svg>
|
||||
<svg height="18" viewBox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><circle cx="12" cy="12" fill="#000" opacity=".6" r="12"/><circle cx="12" cy="12" fill="#0a6074" r="11"/><path d="m5.5116 12.152 5.7601-8.2584v8.2584zm6.8401 0c.97201-2.7.84241-6.3288 0-9 3.4272 1.1088 6.0481 5.328 6.0913 9zm6.1921 2.5776c-.2952.4608-.64081.8568-1.044 1.1952-.46801-.2088-.88561-.5328-1.2168-.8928-1.0728 1.3896-3.24 1.3896-4.3129 0-1.0584 1.3896-3.24 1.3896-4.2985 0-.36.36-.75601.684-1.224.8928-.82081-.6768-1.44-1.6416-1.656-2.6928h14.357c-.1152.54-.3168 1.0368-.60481 1.4976m-.1008 4.2624c-.76321 0-1.4832-.18-2.16-.54-1.3248.72-2.988.72-4.3129 0-1.3248.72-2.988.72-4.2985 0-.88561.4968-1.9008.576-2.88.54v-1.44c1.0152.036 1.9944-.072 2.88-.72 1.2528.9 3.0312.9 4.2985 0 1.2744.9 3.0456.9 4.3129 0 .87121.648 1.8576.756 2.8656.72v1.44z" fill="#000"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 878 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#294c88" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#294c88" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#136c30" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#136c30" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f1a17" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#999" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f1a17" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#212121" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f5a17" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 920 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#212121" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#9f5a17" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 920 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 19 19" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m2.885 12.0615528 12.23 3.2475375h-12.23zm1.11669573-3.0534098 10.69279887 2.8651268c-.8793687 1.3974981-2.1028262 1.8862358-3.6703724 1.4662131l-5.30380311-1.4211498c-1.08914156-.2918346-1.82105491-1.311646-1.74895082-2.43690057zm6.89827777-6.31723332.3483726.65749533c.7729657 1.48426312 1.2666065 2.61927763 1.4809223 3.40504355.2449323.89801819.4566462 2.21363954.6351416 3.94686404l-3.99974232-1.07172772c.53186611-1.23336117.90993282-2.26853038 1.13420022-3.10550762.2242674-.83697725.3579692-2.11436644.4011056-3.83216758zm-.6797974 1.45913545-1.4269431 5.32542429-3.23029843-.86555585z" fill="#777" transform="translate(.6688 .9588)"/></svg>
|
||||
|
Before Width: | Height: | Size: 741 B |
@@ -1 +1,7 @@
|
||||
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><path d="m6.64671389 3.10072399 4.64689821 2.90418648-1.74258684.00012489v3.50840813l1.16109904-.73671178v1.92381589l-1.16109904.768305v3.8301576h-5.80862274v-9.29397484l-1.74258682-.00012489zm6.09842831 4.3876552v1.86805307l-1.1617245.76789994v-1.89941965zm-4.93670376-.90257077h-2.3234491v3.48526288h2.3234491zm6.36104506.00008921.8303322 1.28040112-1.3833801.91391814v-1.84365686z" fill="#777"/></svg>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>toll_booth-m</title>
|
||||
<g id="toll_booth-m" stroke="none" fill="none" fill-rule="nonzero">
|
||||
<path d="M6.60018429,3 L3.60018429,4.8 L3.60018429,13.8 L3.00018429,13.8 L3.00018429,15 L10.2001843,15 L10.2001843,13.8 L9.60018429,13.8 L9.60018429,11.0437714 L10.4439386,10.5000171 L10.3126929,9.18756 L9.60019286,9.61880571 L9.60019286,4.80003429 L6.60019286,3 L6.60018429,3 Z M4.80018429,6 L8.40018429,6 L8.40018429,10.2 L4.80018429,10.2 L4.80018429,6 L4.80018429,6 Z M14.3436129,6.6 L13.8561129,6.9 L13.9873586,8.21245714 L14.9998157,7.61245714 L14.34357,6.6 L14.3436129,6.6 Z M13.3123843,7.2 L12.2999271,7.85624571 L12.4124271,9.18747429 L13.4436557,8.51247429 L13.31241,7.2 L13.3123843,7.2 Z M11.8123843,8.15622857 L10.7999271,8.81247429 L10.9124271,10.1437029 L11.9436557,9.48745714 L11.81241,8.15622857 L11.8123843,8.15622857 Z" id="Shape" fill="#51585E"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 487 B After Width: | Height: | Size: 1.1 KiB |
@@ -1 +1,7 @@
|
||||
<svg height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"><path d="m4.49576922.7499232 4 2.4998925-1.5.0001075v3.02l.99946155-.63415358v1.656l-.99946155.66134875v3.29695843h-5v-8.0001536l-1.49999999-.0001075zm5.24946155 3.77684642v1.608l-1 .661v-1.635zm-4.24946155-.77692321h-2v3.00007679h2zm5.47551918.00007679.7147411 1.10215552-1.1907987.7866909v-1.587z" fill="#777"/></svg>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>toll_booth-s</title>
|
||||
<g id="toll_booth-s" stroke="none" fill="none" fill-rule="nonzero">
|
||||
<path d="M4.50856084,0.999846424 L7.00863763,2.49992107 L7.00863763,6.51568727 L10.9615733,3.99993857 L11.5084615,4.84367877 L7.00863048,7.70319517 L7.00863048,10.0001229 L7.50864584,10.0001229 L7.50864584,11.0001536 L1.50846155,11.0001536 L1.50846155,10.0001229 L2.00847691,10.0001229 L2.00847691,2.4998925 L4.50856084,0.999846424 Z M6.00859977,3.49992321 L3.00850762,3.49992321 L3.00850762,7.00003072 L6.00859977,7.00003072 L6.00859977,3.49992321 Z" id="Shape" fill="#51585E"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 402 B After Width: | Height: | Size: 797 B |
@@ -1 +0,0 @@
|
||||
<svg height="18" viewBox="0 0 19 18" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m7.33124024 14.0849349.37500187-.5625h-.95625l-1.125 1.6875h.35416688c.37614937 0 .727425-.1879875.93605625-.5009625l.04102537-.0615375h4.08751879l.0410253.0615375c.2086482.312975.5599069.5009625.9360563.5009625h.3541669l-1.125-1.6875h-.95625l.3750018.5625zm.19884375-7.87500002h2.93979371c.90675 0 1.6513875.71656875 1.6862625 1.62264375l.1739082 4.52159997c.0222862.5794951-.3977995 1.073387-.9587146 1.1561005l-.1438562.0119417-4.43342261.0002141c-.579915 0-1.057322-.4387607-1.11839886-1.0024188l-.00576993-.1658206.17390813-4.52160017c.03291306-.8557375.69896291-1.542455 1.53673222-1.61611578zm-.2607975 1.40623031c-.293265 0-.5373225.22532907-.56071125.51766032l-.13678875 1.73235656c0 .31065753.2518425.56250003.5625.56250003l3.75384621-.0004472.0224103-.0013416c.3096732-.0247736.5406244-.2958919.5158519-.60558748l-.135-1.6875c-.0233887-.29233125-.2674406-.51764063-.5607112-.51764063zm.04320281 4.78126971c.3106575 0 .5625-.2518425.5625-.5625s-.2518425-.5625-.5625-.5625-.5625.2518425-.5625.5625.2518425.5625.5625.5625zm3.375 0c.3106575 0 .5625-.2518425.5625-.5625s-.2518425-.5625-.5625-.5625-.5625.2518425-.5625.5625.2518425.5625.5625.5625zm-2.671875-5.62500002c-.07766437 0-.140625.06296062-.140625.140625s.06296063.140625.140625.140625h1.96875003c.07766437 0 .14062497-.06296062.14062497-.140625s-.0629606-.140625-.14062497-.140625zm-4.2392211-1.60024446 5.2236068-2.6118034 5.2236068 2.6118034c.2469892.12349462.3471014.42383114.2236068.67082039s-.4238311.34710142-.6708204.2236068l-4.7763932-2.3882136-4.7763932 2.3882136c-.219546.109773-.48124293.04286902-.62342158-.1468222l-.04739882-.0767846c-.12349462-.24698925-.02338245-.54732577.2236068-.67082039z" fill="#777" transform="translate(.6869)"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
@@ -224,13 +224,13 @@ area|z10-17[boundary=protected_area][protect_class=1],
|
||||
|
||||
line|z10-[boundary=national_park],
|
||||
line|z10-[boundary=protected_area][protect_class=1],
|
||||
{width: 0.5; opacity: 0.3; color: @protected_nature;}
|
||||
{width: 2; color: @protected_nature;}
|
||||
|
||||
area|z10-16[boundary=aboriginal_lands],
|
||||
{fill-opacity: 0.07; fill-color: @indigenous_lands;}
|
||||
|
||||
line|z10-[boundary=aboriginal_lands],
|
||||
{width: 0.5; opacity: 0.3; color: @indigenous_lands;}
|
||||
{width: 2; color: @indigenous_lands;}
|
||||
|
||||
/* ToDo: Assume that military areas already have fences? */
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ node|z18-[office],
|
||||
{icon-image: office-m.svg;}
|
||||
|
||||
node|z18-[craft],
|
||||
{icon-image: craft-m.svg;}
|
||||
{text-color: @industry_label;text-halo-radius: 1;text-halo-opacity: 0.9;text-halo-color: @label_halo_light;icon-image: craft-m.svg;}
|
||||
|
||||
node|z16-[shop],
|
||||
{icon-min-distance: 10;}
|
||||
@@ -441,15 +441,17 @@ node|z18-[historic=stone],
|
||||
|
||||
node|z12-14[historic=fort],
|
||||
node|z12-14[historic=castle],
|
||||
{icon-image: remains-s.svg;text-offset: 1;icon-min-distance: 12;}
|
||||
{icon-image: castle-s.svg;text-offset: 1;icon-min-distance: 12;}
|
||||
node|z15[historic=fort],
|
||||
node|z15[historic=castle],
|
||||
{icon-image: remains-m.svg;icon-min-distance: 5;}
|
||||
{icon-image: castle-m.svg;icon-min-distance: 5;}
|
||||
node|z16[historic=fort],
|
||||
node|z16[historic=castle],
|
||||
{icon-image: remains-m.svg;text-offset: 1;}
|
||||
{icon-image: castle-m.svg;text-offset: 1;}
|
||||
node|z17-[historic=fort],
|
||||
node|z17-[historic=castle],
|
||||
{icon-image: castle-m.svg;}
|
||||
node|z17-[historic=ruins][name],
|
||||
{icon-image: remains-m.svg;}
|
||||
|
||||
node|z12-14[historic=castle][castle_type=castrum],
|
||||
@@ -844,7 +846,6 @@ node|z17-[amenity=casino],
|
||||
node|z17-[amenity=gambling],
|
||||
node|z17-[leisure=adult_gaming_centre],
|
||||
node|z17-[leisure=amusement_arcade],
|
||||
node|z17-[leisure=indoor_play],
|
||||
node|z17-[amenity=courthouse],
|
||||
node|z17-[amenity=nursing_home],
|
||||
node|z17-[amenity=social_facility],
|
||||
@@ -866,11 +867,9 @@ node|z17-[amenity=vending_machine][vending=parking_tickets],
|
||||
node|z17-[amenity=vending_machine][vending=public_transport_tickets],
|
||||
node|z17-[amenity=payment_terminal],
|
||||
node|z17-[amenity=shower],
|
||||
node|z17-[amenity=slipway],
|
||||
node|z17-[amenity=motorcycle_rental],
|
||||
node|z17-[amenity=bicycle_rental],
|
||||
node|z17-[amenity=bicycle_repair_station],
|
||||
node|z17-[amenity=boat_rental],
|
||||
node|z17-[amenity=post_office],
|
||||
node|z17-[amenity=library],
|
||||
node|z18-[post_office=post_partner],
|
||||
@@ -924,8 +923,6 @@ node|z18-[amenity=toilets],
|
||||
node|z18-[amenity=atm],
|
||||
node|z18-[amenity=bureau_de_change],
|
||||
node|z18-[amenity=money_transfer],
|
||||
node|z18-[amenity=mobile_money_agent],
|
||||
node|z18-[amenity=payment_centre],
|
||||
node|z18-[amenity=waste_disposal],
|
||||
node|z18-[amenity=recycling],
|
||||
node|z16-[amenity=recycling][recycling_type=centre],
|
||||
@@ -1424,9 +1421,6 @@ node|z17-[leisure=amusement_arcade],
|
||||
node|z18-[shop=lottery],
|
||||
{icon-image: lottery-m.svg;}
|
||||
|
||||
node|z17-[leisure=indoor_play],
|
||||
{icon-image: indoor_play-m.svg;icon-min-distance: 20;}
|
||||
|
||||
node|z17-[amenity=courthouse],
|
||||
{icon-image: public-building-m.svg;}
|
||||
|
||||
@@ -1460,9 +1454,6 @@ node|z16-17[building=guardhouse],
|
||||
node|z16-[building=guardhouse]::int_name,
|
||||
{text: none;}
|
||||
|
||||
node|z17-[building=train_station],
|
||||
{icon-image: train_building-m.svg; font-size: 11; text-offset: 1;}
|
||||
|
||||
node|z17-[amenity=prison],
|
||||
{icon-image: prison-m.svg;}
|
||||
node|z18-[amenity=prison],
|
||||
@@ -1481,11 +1472,6 @@ node|z17-[amenity=motorcycle_rental],
|
||||
node|z18-[amenity=motorcycle_rental],
|
||||
{font-size: 11;}
|
||||
|
||||
node|z17-[amenity=boat_rental],
|
||||
{icon-image: boat-rental.svg;}
|
||||
node|z18-[amenity=boat_rental],
|
||||
{font-size: 11;}
|
||||
|
||||
node|z17-[amenity=bicycle_rental],
|
||||
{icon-image: bicycle-rental.svg;}
|
||||
node|z18-[amenity=bicycle_rental],
|
||||
@@ -1554,9 +1540,6 @@ node|z15-[power=plant][plant:source=wind],
|
||||
node|z16-[power=plant][plant:source=wind],
|
||||
{text: name;text-color: @neutral_label;text-halo-radius: 1;text-halo-opacity: 0.9;text-halo-color: @label_halo_light; text-offset: 1; font-size: 10;}
|
||||
|
||||
node|z17-[leisure=slipway],
|
||||
{icon-image: slipway-m.svg;}
|
||||
|
||||
node|z17-[amenity=shower],
|
||||
{icon-image: shower-m.svg;}
|
||||
|
||||
@@ -1581,8 +1564,6 @@ node|z17-[aeroway=gate],
|
||||
|
||||
node|z17-[amenity=bureau_de_change],
|
||||
node|z17-[amenity=money_transfer],
|
||||
node|z17-[amenity=mobile_money_agent],
|
||||
node|z17-[amenity=payment_centre],
|
||||
{icon-image: banknote-m.svg;font-size: 11;}
|
||||
|
||||
node|z16-[amenity=fire_station],
|
||||
@@ -1729,7 +1710,6 @@ node|z16-[shop=laundry],
|
||||
node|z16-[shop=lighting],
|
||||
node|z16-[shop=dry_cleaning],
|
||||
node|z16-[shop=mobile_phone],
|
||||
node|z16-[shop=telecommunication],
|
||||
node|z16-[shop=optician],
|
||||
node|z16-[shop=outdoor],
|
||||
node|z16-[shop=rental],
|
||||
@@ -1896,7 +1876,6 @@ node|z16[shop=laundry],
|
||||
node|z16[shop=dry_cleaning],
|
||||
{icon-image:dry_cleaning-m.svg;}
|
||||
node|z16[shop=mobile_phone],
|
||||
node|z16[shop=telecommunication],
|
||||
{icon-image: mobile_phone-m.svg;}
|
||||
node|z16[shop=optician],
|
||||
{icon-image: optician-m.svg;}
|
||||
@@ -2043,7 +2022,6 @@ node|z17-[shop=laundry],
|
||||
node|z17-[shop=dry_cleaning],
|
||||
{icon-image:dry_cleaning-m.svg;icon-min-distance: 24;}
|
||||
node|z17-[shop=mobile_phone],
|
||||
node|z17-[shop=telecommunication],
|
||||
{icon-image: mobile_phone-m.svg;icon-min-distance: 24;}
|
||||
node|z17-[shop=optician],
|
||||
{icon-image: optician-m.svg;icon-min-distance: 24;}
|
||||
@@ -2293,4 +2271,239 @@ node|z18-[amenity=parking_space][parking_space=disabled],
|
||||
|
||||
/* 8. Colored Labels */
|
||||
|
||||
@import("../../default/include/Icons_Label_Colors.mapcss");
|
||||
node[amenity=car_rental],
|
||||
node[amenity=car_sharing],
|
||||
node[amenity=internet_cafe],
|
||||
node[amenity=marketplace],
|
||||
node[amenity=motorcycle_rental],
|
||||
node[shop=alcohol],
|
||||
node[shop=antiques],
|
||||
node[shop=art],
|
||||
node[shop=auction],
|
||||
node[shop=bakery],
|
||||
node[shop=beauty],
|
||||
node[shop=beverages],
|
||||
node[shop=bicycle],
|
||||
node[shop=books],
|
||||
node[shop=butcher],
|
||||
node[shop=camera],
|
||||
node[shop=car],
|
||||
node[shop=caravan],
|
||||
node[shop=charity],
|
||||
node[shop=cheese],
|
||||
node[shop=chemist],
|
||||
node[shop=chocolate],
|
||||
node[shop=clothes],
|
||||
node[shop=collector],
|
||||
node[shop=computer],
|
||||
node[shop=confectionery],
|
||||
node[shop=convenience],
|
||||
node[shop=copyshop],
|
||||
node[shop=cosmetics],
|
||||
node[shop=deli],
|
||||
node[shop=department_store],
|
||||
node[shop=doityourself],
|
||||
node[shop=dry_cleaning],
|
||||
node[shop=dry_cleaning],
|
||||
node[shop=electronics],
|
||||
node[shop=erotic],
|
||||
node[shop=fabric],
|
||||
node[shop=farm],
|
||||
node[shop=florist],
|
||||
node[shop=furniture],
|
||||
node[shop=garden_centre],
|
||||
node[shop=gift],
|
||||
node[shop=greengrocer],
|
||||
node[shop=grocery],
|
||||
node[shop=hairdresser],
|
||||
node[shop=hardware],
|
||||
node[shop=health_food],
|
||||
node[shop=hearing_aids],
|
||||
node[shop=houseware],
|
||||
node[shop=interior_decoration],
|
||||
node[shop=jewelry],
|
||||
node[shop=kiosk],
|
||||
node[shop=kitchen],
|
||||
node[shop=laundry],
|
||||
node[shop=laundry],
|
||||
node[shop=lighting],
|
||||
node[shop=mall],
|
||||
node[shop=mobile_phone],
|
||||
node[shop=motorcycle],
|
||||
node[shop=music],
|
||||
node[shop=musical_instrument],
|
||||
node[shop=optician],
|
||||
node[shop=outdoor],
|
||||
node[shop=pasta],
|
||||
node[shop=pastry],
|
||||
node[shop=pawnbroker],
|
||||
node[shop=pet],
|
||||
node[shop=photo],
|
||||
node[shop=rental],
|
||||
node[shop=rental][rental=bike],
|
||||
node[shop=seafood],
|
||||
node[shop=second_hand],
|
||||
node[shop=sewing],
|
||||
node[shop=shoes],
|
||||
node[shop=sports],
|
||||
node[shop=stationery],
|
||||
node[shop=supermarket],
|
||||
node[shop=ticket],
|
||||
node[shop=tobacco],
|
||||
node[shop=toys],
|
||||
node[shop=variety_store],
|
||||
node[shop=video],
|
||||
node[shop=video_games],
|
||||
node[shop=wine],
|
||||
node[shop],
|
||||
{text-color: @shop_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[amenity=car_wash],
|
||||
node[amenity=fuel],
|
||||
node[amenity=studio],
|
||||
node[amenity=vehicle_inspection],
|
||||
node[craft=beekeeper],
|
||||
node[craft=blacksmith],
|
||||
node[craft=carpenter],
|
||||
node[craft=caterer],
|
||||
node[craft=electrician],
|
||||
node[craft=electronics_repair],
|
||||
node[craft=grinding_mill],
|
||||
node[craft=handicraft],
|
||||
node[craft=hvac],
|
||||
node[craft=key_cutter],
|
||||
node[craft=locksmith],
|
||||
node[craft=metal_construction],
|
||||
node[craft=painter],
|
||||
node[craft=plumber],
|
||||
node[craft=sawmill],
|
||||
node[craft],
|
||||
node[landuse=industrial][industrial=mine],
|
||||
node[landuse=quarry],
|
||||
node[man_made=works],
|
||||
node[office],
|
||||
node[shop=agrarian],
|
||||
node[shop=car_parts],
|
||||
node[shop=car_repair],
|
||||
node[shop=car_repair][service=tyres],
|
||||
node[shop=funeral_directors],
|
||||
node[shop=gas],
|
||||
node[shop=motorcycle_repair],
|
||||
node[shop=tattoo],
|
||||
node[shop=trade],
|
||||
node[shop=tyres],
|
||||
node[shop=wholesale],
|
||||
{text-color: @industry_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[amenity=bar],
|
||||
node[amenity=biergarten],
|
||||
node[amenity=cafe],
|
||||
node[amenity=fast_food],
|
||||
node[amenity=food_court],
|
||||
node[amenity=ice_cream],
|
||||
node[amenity=nightclub],
|
||||
node[amenity=pub],
|
||||
node[amenity=restaurant],
|
||||
{text-color: @food_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[amenity=casino],
|
||||
node[amenity=cinema],
|
||||
node[amenity=gambling],
|
||||
node[amenity=stripclub],
|
||||
node[amenity=theatre],
|
||||
node[leisure=adult_gaming_centre],
|
||||
node[leisure=amusement_arcade],
|
||||
node[leisure=bowling_alley],
|
||||
node[leisure=escape_game],
|
||||
node[shop=bookmaker],
|
||||
node[shop=lottery],
|
||||
node[tourism=aquarium],
|
||||
node[tourism=theme_park],
|
||||
node[tourism=zoo],
|
||||
{text-color: @entertainment_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[amenity=arts_centre],
|
||||
node[amenity=community_centre],
|
||||
node[amenity=conference_centre],
|
||||
node[amenity=events_venue],
|
||||
node[amenity=exhibition_centre],
|
||||
node[amenity=place_of_worship]
|
||||
node[amenity=social_facility],
|
||||
node[historic=ship],
|
||||
node[leisure=hackerspace],
|
||||
node[tourism=attraction],
|
||||
node[tourism=gallery],
|
||||
node[tourism=museum],
|
||||
{text-color: @culture_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[leisure=resort],
|
||||
node[tourism=alpine_hut],
|
||||
node[tourism=apartment],
|
||||
node[tourism=chalet],
|
||||
node[tourism=guest_house],
|
||||
node[tourism=hostel],
|
||||
node[tourism=hotel],
|
||||
node[tourism=motel],
|
||||
node[tourism=wilderness_hut],
|
||||
{text-color: @hotel_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[leisure=dance],
|
||||
node[leisure=fitness_centre],
|
||||
node[leisure=sports_centre],
|
||||
node[leisure=stadium],
|
||||
{text-color: @sport_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[landuse=plant_nursery],
|
||||
{text-color: @nature_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[amenity=public_bath],
|
||||
node[leisure=beach_resort],
|
||||
node[leisure=marina],
|
||||
node[leisure=sports_centre][sport=scuba_diving],
|
||||
node[leisure=sports_centre][sport=swimming],
|
||||
node[shop=massage],
|
||||
{text-color: @water_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
area[amenity=university][name]
|
||||
node[aeroway=gate],
|
||||
node[amenity=atm],
|
||||
node[amenity=bank],
|
||||
node[amenity=bureau_de_change],
|
||||
node[amenity=charging_station][motorcar?],
|
||||
node[amenity=childcare],
|
||||
node[amenity=college],
|
||||
node[amenity=courthouse],
|
||||
node[amenity=driving_school],
|
||||
node[amenity=fire_station],
|
||||
node[amenity=kindergarten],
|
||||
node[amenity=language_school],
|
||||
node[amenity=library],
|
||||
node[amenity=money_transfer],
|
||||
node[amenity=music_school],
|
||||
node[amenity=nursing_home],
|
||||
node[amenity=police],
|
||||
node[amenity=post_office],
|
||||
node[amenity=prison],
|
||||
node[amenity=school],
|
||||
node[amenity=townhall],
|
||||
node[amenity=university][name],
|
||||
node[barrier=border_control],
|
||||
node[building=guardhouse],
|
||||
node[office=security],
|
||||
node[shop=money_lender],
|
||||
node[tourism=information][information=office],
|
||||
{text-color: @neutral_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
area[amenity=hospital],
|
||||
node[amenity=clinic],
|
||||
node[amenity=dentist],
|
||||
node[amenity=doctors],
|
||||
node[amenity=hospital],
|
||||
node[amenity=pharmacy],
|
||||
node[amenity=veterinary],
|
||||
node[healthcare],
|
||||
{text-color: @healthcare_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[amenity=bicycle_rental],
|
||||
node[amenity=taxi],
|
||||
{text-color: @public_transport_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/* Setting the colors for all POI icons */
|
||||
/* Please add new items so that they fit in the existing alphabetical order */
|
||||
|
||||
node[amenity=boat_rental],
|
||||
node[amenity=car_rental],
|
||||
node[amenity=car_sharing],
|
||||
node[amenity=internet_cafe],
|
||||
@@ -32,8 +30,8 @@ node[shop=tyres],
|
||||
node[shop=wholesale],
|
||||
{text-color: @industry_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[craft=photographer],
|
||||
node[craft=tailor],
|
||||
node[craft=photographer],
|
||||
{text-color: @shop_label}
|
||||
|
||||
node[amenity=bar],
|
||||
@@ -57,7 +55,6 @@ node[leisure=adult_gaming_centre],
|
||||
node[leisure=amusement_arcade],
|
||||
node[leisure=bowling_alley],
|
||||
node[leisure=escape_game],
|
||||
node[leisure=indoor_play],
|
||||
node[shop=bookmaker],
|
||||
node[shop=lottery],
|
||||
node[tourism=aquarium],
|
||||
@@ -89,7 +86,6 @@ node[tourism=motel],
|
||||
node[tourism=wilderness_hut],
|
||||
{text-color: @hotel_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
node[amenity=dojo],
|
||||
node[leisure=dance],
|
||||
node[leisure=fitness_centre],
|
||||
node[leisure=sports_centre],
|
||||
@@ -120,11 +116,9 @@ node[amenity=fire_station],
|
||||
node[amenity=kindergarten],
|
||||
node[amenity=language_school],
|
||||
node[amenity=library],
|
||||
node[amenity=mobile_money_agent],
|
||||
node[amenity=money_transfer],
|
||||
node[amenity=music_school],
|
||||
node[amenity=nursing_home],
|
||||
node[amenity=payment_centre],
|
||||
node[amenity=police],
|
||||
node[amenity=post_office],
|
||||
node[amenity=prison],
|
||||
|
||||
@@ -400,7 +400,7 @@ building # area z14- (also has captio
|
||||
building-garage # area z14- (also has caption z17-)
|
||||
building-guardhouse # area z14- (also has icon z18-, caption(optional) z18-)
|
||||
building-has_parts # area z14- (also has caption z17-)
|
||||
building-train_station # area z14- (also has icon z17-, caption(optional) z17-)
|
||||
building-train_station # area z14- (also has caption z17-)
|
||||
=== 130
|
||||
|
||||
piste:type-connection # line z15-
|
||||
|
||||
@@ -773,7 +773,6 @@ shop-health_food # icon z16- (also has captio
|
||||
=== 2700
|
||||
|
||||
amenity-bicycle_rental # icon z17- (also has caption(optional) z17-)
|
||||
amenity-boat_rental # icon z17- (also has caption(optional) z17-)
|
||||
amenity-car_sharing # icon z18- (also has caption(optional) z18-)
|
||||
amenity-taxi # icon z16- (also has caption(optional) z16-)
|
||||
=== 2600
|
||||
@@ -867,7 +866,6 @@ shop-shoes # icon z16- (also has captio
|
||||
shop-sports # icon z16- (also has caption(optional) z16-)
|
||||
shop-stationery # icon z16- (also has caption(optional) z16-)
|
||||
shop-tea # icon z18- (also has caption(optional) z18-)
|
||||
shop-telecommunication # icon z16- (also has caption(optional) z16-)
|
||||
shop-toys # icon z16- (also has caption(optional) z16-)
|
||||
shop-travel_agency # icon z18- (also has caption(optional) z18-)
|
||||
shop-wine # icon z16- (also has caption(optional) z16-)
|
||||
@@ -918,7 +916,7 @@ natural-wetland-tidalflat # caption z16- (also has are
|
||||
tourism-picnic_site # icon z16- (also has caption(optional) z16-)
|
||||
=== 1800
|
||||
|
||||
building-train_station # icon z17- (also has caption(optional) z17-, area z14-)
|
||||
building-train_station # caption z17- (also has area z14-)
|
||||
railway-level_crossing # icon z17-
|
||||
=== 1700
|
||||
|
||||
@@ -968,10 +966,8 @@ amenity-childcare # icon z17- (also has captio
|
||||
amenity-doctors # icon z17- (also has caption(optional) z17-, area z15-)
|
||||
amenity-driving_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-language_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-mobile_money_agent # icon z17- (also has caption(optional) z18-)
|
||||
amenity-money_transfer # icon z17- (also has caption(optional) z18-)
|
||||
amenity-music_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-payment_centre # icon z17- (also has caption(optional) z18-)
|
||||
amenity-recycling-centre # icon z16- (also has caption(optional) z16-, area z15-)
|
||||
amenity-veterinary # icon z16- (also has caption(optional) z16-)
|
||||
craft-electrician # icon z17- (also has caption(optional) z18-)
|
||||
@@ -1204,7 +1200,6 @@ healthcare-psychotherapist # icon z17- (also has captio
|
||||
healthcare-speech_therapist # icon z17- (also has caption(optional) z17-)
|
||||
leisure-adult_gaming_centre # icon z17- (also has caption(optional) z17-)
|
||||
leisure-amusement_arcade # icon z17- (also has caption(optional) z17-)
|
||||
leisure-indoor_play # icon z17- (also has caption(optional) z17-)
|
||||
office-company # icon z18- (also has caption(optional) z18-)
|
||||
office-ngo # icon z18- (also has caption(optional) z18-)
|
||||
office-telecommunication # icon z18- (also has caption(optional) z18-)
|
||||
@@ -1321,7 +1316,7 @@ landuse-railway # caption z15- (also has are
|
||||
landuse-residential # caption z17-
|
||||
landuse-retail # caption z16- (also has area z13-)
|
||||
leisure-common # caption z17-
|
||||
leisure-slipway # icon z17- (also has caption(optional) z17-)
|
||||
leisure-slipway # caption z17-
|
||||
leisure-track # caption z16- (also has line z15-)
|
||||
leisure-track-area # caption z16- (also has area z15-)
|
||||
man_made-petroleum_well # icon z17- (also has caption(optional) z18-)
|
||||
@@ -1815,7 +1810,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# === -7300
|
||||
|
||||
# amenity-bicycle_rental # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-boat_rental # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-car_sharing # caption(optional) z18- (also has icon z18-)
|
||||
# amenity-taxi # caption(optional) z16- (also has icon z16-)
|
||||
# === -7400
|
||||
@@ -1905,7 +1899,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# shop-sports # caption(optional) z16- (also has icon z16-)
|
||||
# shop-stationery # caption(optional) z16- (also has icon z16-)
|
||||
# shop-tea # caption(optional) z18- (also has icon z18-)
|
||||
# shop-telecommunication # caption(optional) z16- (also has icon z16-)
|
||||
# shop-toys # caption(optional) z16- (also has icon z16-)
|
||||
# shop-travel_agency # caption(optional) z18- (also has icon z18-)
|
||||
# shop-wine # caption(optional) z16- (also has icon z16-)
|
||||
@@ -1941,9 +1934,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# tourism-picnic_site # caption(optional) z16- (also has icon z16-)
|
||||
# === -8200
|
||||
|
||||
# building-train_station # caption(optional) z17- (also has icon z17-, area z14-)
|
||||
# === -8300
|
||||
|
||||
# leisure-sports_centre-sport-swimming # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# === -8380
|
||||
|
||||
@@ -1987,10 +1977,8 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# amenity-doctors # caption(optional) z17- (also has icon z17-, area z15-)
|
||||
# amenity-driving_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-language_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-mobile_money_agent # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-money_transfer # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-music_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-payment_centre # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-recycling-centre # caption(optional) z16- (also has icon z16-, area z15-)
|
||||
# amenity-veterinary # caption(optional) z16- (also has icon z16-)
|
||||
# craft-electrician # caption(optional) z18- (also has icon z17-)
|
||||
@@ -2200,7 +2188,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# healthcare-speech_therapist # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-adult_gaming_centre # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-amusement_arcade # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-indoor_play # caption(optional) z17- (also has icon z17-)
|
||||
# office-company # caption(optional) z18- (also has icon z18-)
|
||||
# office-ngo # caption(optional) z18- (also has icon z18-)
|
||||
# office-telecommunication # caption(optional) z18- (also has icon z18-)
|
||||
@@ -2291,7 +2278,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# landuse-industrial-mine # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# landuse-landfill # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# landuse-quarry # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# leisure-slipway # caption(optional) z17- (also has icon z17-)
|
||||
# man_made-petroleum_well # caption(optional) z18- (also has icon z17-)
|
||||
# power-generator-wind # caption(optional) z18- (also has icon z15-, area z13-)
|
||||
# === -9880
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
@subway_label: #333333;
|
||||
@indigenous_label: #6A512F;
|
||||
@shop_label: #8C5678;
|
||||
@industry_label: #907E9E;
|
||||
@industry_label: #9482A3;
|
||||
@food_label: #BA7141;
|
||||
@entertainment_label: #D16B53;
|
||||
@culture_label: #82512D;
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 19 19" width="19" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(.3312 .9588)"><circle cx="9" cy="9" fill="#fff" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#be75a3" r="8.25"/><path d="m7.44735 6.64155c.6266775 0 1.16175-.4049325 1.36425-.964125h2.49225v.4820625c0 .2651325.21693.4820625.4820625.4820625s.4820625-.21693.4820625-.4820625v-.4820625c.2651325 0 .4820625-.21693.4820625-.4820625s-.21693-.4820625-.4820625-.4820625h-3.456375c-.23139-.6507825-.9063-1.07985-1.65345-.935175-.5640075.1108725-1.02195.5736525-1.132875 1.137675-.16872.9159.530265 1.72575 1.422075 1.72575zm0-1.92825c.2651325 0 .4820625.21693.4820625.4820625s-.21693.4820625-.4820625.4820625-.4820625-.21693-.4820625-.4820625.21693-.4820625.4820625-.4820625zm-1.71484793 7.891702h7.01753543c-.3091683 1-.9781318 1.5-2.0068907 1.5h-3.48081229c-.71478849 0-1.3302781-.5043681-1.47074931-1.2052179zm3.18749793-4.99999999c.89379424.94861026 1.4893498 1.67776089 1.7866668 2.18745192.297317.50969107.6428103 1.28054037 1.03648 2.31254807h-2.62497531c.12331455-.8424798.18497182-1.538368.18497182-2.0876646 0-.54929651-.12771443-1.35340832-.38314331-2.41233539zm-.17685315 1.00499799-2.12 3.495002h2.12z" fill="#fff"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,9 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>escape_game</title>
|
||||
<g id="escape_game" stroke="none" fill="none">
|
||||
<circle id="Oval" fill="#FFFFFF" fill-rule="nonzero" opacity="0.6" cx="9" cy="9" r="9"></circle>
|
||||
<circle id="Oval" fill="#EB785D" fill-rule="nonzero" cx="9" cy="9" r="8.25"></circle>
|
||||
<path d="M6.544,4.525 L6.543,5.199 L7.894,5.2 L7.894,6.55 L6.543,6.55 L6.54384181,9.2696041 C7.56205461,9.56229277 8.307,10.5006507 8.307,11.613 C8.307,12.9594702 7.21547022,14.051 5.869,14.051 C4.52252978,14.051 3.431,12.9594702 3.431,11.613 C3.431,10.5010171 4.17545473,9.56291094 5.19315214,9.26989353 L5.194,4.525 L6.544,4.525 Z M5.869,10.675 C5.3509569,10.675 4.931,11.0949569 4.931,11.613 C4.931,12.1310431 5.3509569,12.551 5.869,12.551 C6.3870431,12.551 6.807,12.1310431 6.807,11.613 C6.807,11.0949569 6.3870431,10.675 5.869,10.675 Z M12.506,11.275 L10.931,11.275 L10.925,10.868 C10.925,10.3653333 11.0083333,9.952 11.175,9.628 C11.341,9.304 11.633,8.893 12.132,8.487 L12.5637778,8.12833333 C12.807037,7.92033333 12.9611111,7.77455556 13.026,7.691 C13.176,7.493 13.251,7.274 13.251,7.034 C13.251,6.70266667 13.117,6.41933333 12.849,6.184 C12.585,5.94466667 12.2283333,5.825 11.779,5.825 C11.3456667,5.825 10.9833333,5.94866667 10.692,6.196 C10.4,6.443 10.246,6.82 10.137,7.326 L8.569,7.132 C8.61366667,6.40666667 8.92133333,5.791 9.492,5.285 C10.068,4.778 10.775,4.525 11.706,4.525 C12.687,4.525 13.421,4.782 13.999,5.297 C14.579,5.807 14.869,6.40266667 14.869,7.084 C14.869,7.46 14.7616667,7.81633333 14.547,8.153 C14.2678649,8.60277864 13.927713,9.01103812 13.5366594,9.36629677 L13.296,9.573 C12.936,9.873 12.711,10.1143333 12.621,10.297 C12.537,10.4783333 12.4986667,10.8043333 12.506,11.275 Z M10.819,13.525 L10.819,11.725 L12.619,11.725 L12.619,13.525 L10.819,13.525 Z" id="Shape" fill="#FFFFFF" fill-rule="evenodd"></path>
|
||||
</g>
|
||||
</svg>
|
||||
<svg height="18" width="18" xmlns="http://www.w3.org/2000/svg"><circle cx="9" cy="9" fill="#fff" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#EB785D" r="8.25"/><path d="m5.194 4.525h1.35v5.4h-1.35z" fill="#fff" fill-rule="evenodd" stroke-width=".9"/><path d="m5.194 5.2h2.7v1.35h-2.7z" fill="#fff" fill-rule="evenodd" stroke-width=".9"/><circle cx="5.869" cy="11.613" fill="none" r="1.688" stroke="#fff" stroke-width="1.5"/><path d="m12.506 11.275h-1.575l-.006-.407q0-.754.25-1.24c.166-.324.458-.735.957-1.141q.748-.608.894-.796.225-.297.225-.657 0-.497-.402-.85-.396-.359-1.07-.359-.65 0-1.087.371c-.292.247-.446.624-.555 1.13l-1.568-.194q.067-1.088.923-1.847c.576-.507 1.283-.76 2.214-.76.981 0 1.715.257 2.293.772q.87.765.87 1.787 0 .564-.322 1.069a5.7 5.7 0 0 1 -1.251 1.42q-.54.45-.675.724-.126.272-.115.978m-1.687 2.25v-1.8h1.8v1.8z" fill="#fff" fill-rule="evenodd" stroke-width=".9"/></svg>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 901 B |
@@ -1 +0,0 @@
|
||||
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><circle cx="9" cy="9" fill="#fff" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#eb785d" r="8.25"/><path d="m4.33219182 13.4602521c-.56625353-.145147-1.05995548-.6661354-1.19210692-1.258018-.08901014-.3987537-.02672993-.8612893.16530454-1.2277241.12702014-.2423618.39770557-.5208347.63150605-.6497263.3295444-.1816314.40961456-.1970143 1.12899472-.2169742.63145117-.0175177.6551594-.0202617.79691486-.0920999.08035554-.04072105.70197217-.49045301 1.3813886-.99942263.67941643-.50894766 1.24429795-.91666337 1.25538374-.90596174.01106385.01065224.01704578.81354355.01328649 1.78426388l-.00683807 1.76489119-1.06258973.792744c-.58441886.4360174-1.1343181.827044-1.22196172.8689725-.32774983.1566993-.47121206.1788709-1.14046468.1762641-.38992905-.0015367-.66223894-.0150646-.74883983-.0372582zm4.82934464-.0252997-.05776137-.0649397v-8.76545977l2.19822491-1.10462793 2.198225 1.11900654v8.77369176l-.0627116.0536399c-.0527947.0451499-.1065663.0536618-.3399057.0536618-.2588862 0-.2815024-.004577-.3423974-.0688966l-.0652031-.0688746v-1.9666855h-2.78928433v1.9824361l-.06148224.0610103c-.05507774.0546497-.09057971.0610103-.34071252.0610103-.25752517 0-.28371947-.005049-.33698616-.0649452zm3.52846524-6.90776623v-1.05221738h-2.78928432v2.10443476h2.78928432z" fill="#fff"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB |
@@ -1 +1 @@
|
||||
<svg height="19" viewBox="0 0 18 19" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none" transform="translate(0 .9588)"><circle cx="9" cy="9" fill="#fff" opacity=".6" r="9"/><circle cx="9" cy="9" fill="#0797b8" r="8.25"/><path d="m14.3284836 9.91216592c-.3125594 1.01096838-.8687086 1.68342498-1.6684475 2.01736998-.1656091-.072627-.3256156-.1651861-.4807525-.2805759-.950475.675-2.27887502.675-3.23467502 0-.950475.675-2.284275.675-3.223875 0-.27744671.2030098-.56714237.3353526-.8659383.4186755-.45689288-.1859843-.80641259-.5898173-.90791437-1.0962377l-.21230169-1.05923188zm-5.78195173-7.54816592.48488347.52149022.44267432.49043051c.84313944.94980132 1.43302404 1.71324441 1.76965374 2.29032927.4488396.76944648.9704078 1.93314626 1.5647046 3.49109933h-3.96274987c.18615974-1.27183553.27923961-2.32237144.27923961-3.15160773s-.19280196-2.04315016-.57840587-3.6417416zm-.26698338 1.51717831v5.27617102h-3.20042235zm5.55269401 9.95882169c-.5724075 0-1.1124-.13-1.62-.4-.9936.54-2.241.54-3.234675 0-.9936.54-2.241.54-3.223875 0-.6642075.3726-1.4256.427-2.16.4v-.88c.7614.027 1.4958-.054 2.16-.54.9396.675 2.2734.675 3.223875 0 .9558.675 2.2842.675 3.234675 0 .6534075.486 1.3932.567 2.1492.54v.88z" fill="#fff" fill-rule="evenodd"/></g></svg>
|
||||
<svg height="18" viewBox="0 0 24 24" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><circle cx="12" cy="12" fill="#fff" opacity=".6" r="12"/><circle cx="12" cy="12" fill="#0797b8" r="11"/><path d="m5.5116 12.152 5.7601-8.2584v8.2584zm6.8401 0c.97201-2.7.84241-6.3288 0-9 3.4272 1.1088 6.0481 5.328 6.0913 9zm6.1921 2.5776c-.2952.4608-.64081.8568-1.044 1.1952-.46801-.2088-.88561-.5328-1.2168-.8928-1.0728 1.3896-3.24 1.3896-4.3129 0-1.0584 1.3896-3.24 1.3896-4.2985 0-.36.36-.75601.684-1.224.8928-.82081-.6768-1.44-1.6416-1.656-2.6928h14.357c-.1152.54-.3168 1.0368-.60481 1.4976m-.1008 4.2624c-.76321 0-1.4832-.18-2.16-.54-1.3248.72-2.988.72-4.3129 0-1.3248.72-2.988.72-4.2985 0-.88561.4968-1.9008.576-2.88.54v-1.44c1.0152.036 1.9944-.072 2.88-.72 1.2528.9 3.0312.9 4.2985 0 1.2744.9 3.0456.9 4.3129 0 .87121.648 1.8576.756 2.8656.72v1.44z" fill="#fff"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 878 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#1a5ec1" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#1a5ec1" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#309302" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#309302" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#e63534" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#fff" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#e63534" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 917 B |
@@ -1 +0,0 @@
|
||||
<svg height="26" viewBox="0 0 42 26" width="42" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" transform="matrix(.80255481 0 0 .44010193 .471493 3.853665)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#c97600" transform="matrix(.73067099 0 0 .36912143 2.310205 5.333047)"/></svg>
|
||||
|
Before Width: | Height: | Size: 905 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 30 19" width="30" xmlns="http://www.w3.org/2000/svg"><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" transform="matrix(.57716453 0 0 .31650328 .236739 2.944845)"/><path d="m49.367237 34.576282c-.82405 1.427297-22.140189 13.734175-23.78829 13.734175s-22.9642395-12.306878-23.7882901-13.734176c-.82405051-1.427297-.8240504-26.0410535.0000001-27.4683509.8240506-1.4272974 22.140189-13.7341756 23.78829-13.7341756s22.96424 12.3068784 23.78829 13.7341758c.824051 1.4272974.824051 26.0410537 0 27.4683517z" fill="#c97600" transform="matrix(.52546863 0 0 .26545702 1.559066 4.008757)"/></svg>
|
||||
|
Before Width: | Height: | Size: 905 B |
@@ -1 +0,0 @@
|
||||
<svg height="19" viewBox="0 0 19 19" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m2.885 12.0615528 12.23 3.2475375h-12.23zm1.11669573-3.0534098 10.69279887 2.8651268c-.8793687 1.3974981-2.1028262 1.8862358-3.6703724 1.4662131l-5.30380311-1.4211498c-1.08914156-.2918346-1.82105491-1.311646-1.74895082-2.43690057zm6.89827777-6.31723332.3483726.65749533c.7729657 1.48426312 1.2666065 2.61927763 1.4809223 3.40504355.2449323.89801819.4566462 2.21363954.6351416 3.94686404l-3.99974232-1.07172772c.53186611-1.23336117.90993282-2.26853038 1.13420022-3.10550762.2242674-.83697725.3579692-2.11436644.4011056-3.83216758zm-.6797974 1.45913545-1.4269431 5.32542429-3.23029843-.86555585z" fill="#747e86" transform="translate(.6688 .9588)"/></svg>
|
||||
|
Before Width: | Height: | Size: 744 B |
@@ -1 +1,7 @@
|
||||
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"><path d="m6.64671389 3.10072399 4.64689821 2.90418648-1.74258684.00012489v3.50840813l1.16109904-.73671178v1.92381589l-1.16109904.768305v3.8301576h-5.80862274v-9.29397484l-1.74258682-.00012489zm6.09842831 4.3876552v1.86805307l-1.1617245.76789994v-1.89941965zm-4.93670376-.90257077h-2.3234491v3.48526288h2.3234491zm6.36104506.00008921.8303322 1.28040112-1.3833801.91391814v-1.84365686z" fill="#747e86"/></svg>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>toll_booth-m</title>
|
||||
<g id="toll_booth-m" stroke="none" fill="none" fill-rule="nonzero">
|
||||
<path d="M6.60018429,3 L3.60018429,4.8 L3.60018429,13.8 L3.00018429,13.8 L3.00018429,15 L10.2001843,15 L10.2001843,13.8 L9.60018429,13.8 L9.60018429,11.0437714 L10.4439386,10.5000171 L10.3126929,9.18756 L9.60019286,9.61880571 L9.60019286,4.80003429 L6.60019286,3 L6.60018429,3 Z M4.80018429,6 L8.40018429,6 L8.40018429,10.2 L4.80018429,10.2 L4.80018429,6 L4.80018429,6 Z M14.3436129,6.6 L13.8561129,6.9 L13.9873586,8.21245714 L14.9998157,7.61245714 L14.34357,6.6 L14.3436129,6.6 Z M13.3123843,7.2 L12.2999271,7.85624571 L12.4124271,9.18747429 L13.4436557,8.51247429 L13.31241,7.2 L13.3123843,7.2 Z M11.8123843,8.15622857 L10.7999271,8.81247429 L10.9124271,10.1437029 L11.9436557,9.48745714 L11.81241,8.15622857 L11.8123843,8.15622857 Z" id="Shape" fill="#747E86"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 490 B After Width: | Height: | Size: 1.1 KiB |
@@ -1 +1,7 @@
|
||||
<svg height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"><path d="m4.49576922.7499232 4 2.4998925-1.5.0001075v3.02l.99946155-.63415358v1.656l-.99946155.66134875v3.29695843h-5v-8.0001536l-1.49999999-.0001075zm5.24946155 3.77684642v1.608l-1 .661v-1.635zm-4.24946155-.77692321h-2v3.00007679h2zm5.47551918.00007679.7147411 1.10215552-1.1907987.7866909v-1.587z" fill="#747e86"/></svg>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="12px" height="12px" viewBox="0 0 12 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>toll_booth-s</title>
|
||||
<g id="toll_booth-s" stroke="none" fill="none" fill-rule="nonzero">
|
||||
<path d="M4.50856084,0.999846424 L7.00863763,2.49992107 L7.00863763,6.51568727 L10.9615733,3.99993857 L11.5084615,4.84367877 L7.00863048,7.70319517 L7.00863048,10.0001229 L7.50864584,10.0001229 L7.50864584,11.0001536 L1.50846155,11.0001536 L1.50846155,10.0001229 L2.00847691,10.0001229 L2.00847691,2.4998925 L4.50856084,0.999846424 Z M6.00859977,3.49992321 L3.00850762,3.49992321 L3.00850762,7.00003072 L6.00859977,7.00003072 L6.00859977,3.49992321 Z" id="Shape" fill="#747E86"></path>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 405 B After Width: | Height: | Size: 797 B |
@@ -1 +0,0 @@
|
||||
<svg height="18" viewBox="0 0 19 18" width="19" xmlns="http://www.w3.org/2000/svg"><path d="m7.33124024 14.0849349.37500187-.5625h-.95625l-1.125 1.6875h.35416688c.37614937 0 .727425-.1879875.93605625-.5009625l.04102537-.0615375h4.08751879l.0410253.0615375c.2086482.312975.5599069.5009625.9360563.5009625h.3541669l-1.125-1.6875h-.95625l.3750018.5625zm.19884375-7.87500002h2.93979371c.90675 0 1.6513875.71656875 1.6862625 1.62264375l.1739082 4.52159997c.0222862.5794951-.3977995 1.073387-.9587146 1.1561005l-.1438562.0119417-4.43342261.0002141c-.579915 0-1.057322-.4387607-1.11839886-1.0024188l-.00576993-.1658206.17390813-4.52160017c.03291306-.8557375.69896291-1.542455 1.53673222-1.61611578zm-.2607975 1.40623031c-.293265 0-.5373225.22532907-.56071125.51766032l-.13678875 1.73235656c0 .31065753.2518425.56250003.5625.56250003l3.75384621-.0004472.0224103-.0013416c.3096732-.0247736.5406244-.2958919.5158519-.60558748l-.135-1.6875c-.0233887-.29233125-.2674406-.51764063-.5607112-.51764063zm.04320281 4.78126971c.3106575 0 .5625-.2518425.5625-.5625s-.2518425-.5625-.5625-.5625-.5625.2518425-.5625.5625.2518425.5625.5625.5625zm3.375 0c.3106575 0 .5625-.2518425.5625-.5625s-.2518425-.5625-.5625-.5625-.5625.2518425-.5625.5625.2518425.5625.5625.5625zm-2.671875-5.62500002c-.07766437 0-.140625.06296062-.140625.140625s.06296063.140625.140625.140625h1.96875003c.07766437 0 .14062497-.06296062.14062497-.140625s-.0629606-.140625-.14062497-.140625zm-4.2392211-1.60024446 5.2236068-2.6118034 5.2236068 2.6118034c.2469892.12349462.3471014.42383114.2236068.67082039s-.4238311.34710142-.6708204.2236068l-4.7763932-2.3882136-4.7763932 2.3882136c-.219546.109773-.48124293.04286902-.62342158-.1468222l-.04739882-.0767846c-.12349462-.24698925-.02338245-.54732577.2236068-.67082039z" fill="#747e86" transform="translate(.6869)"/></svg>
|
||||
|
Before Width: | Height: | Size: 1.8 KiB |
@@ -402,7 +402,7 @@ building # area z14- (also has captio
|
||||
building-garage # area z14- (also has caption z17-)
|
||||
building-guardhouse # area z14- (also has icon z16-, caption(optional) z18-)
|
||||
building-has_parts # area z14- (also has caption z17-)
|
||||
building-train_station # area z14- (also has icon z17-, caption(optional) z17-)
|
||||
building-train_station # area z14- (also has caption z17-)
|
||||
=== 130
|
||||
|
||||
piste:type-connection # line z15-
|
||||
|
||||
@@ -773,7 +773,6 @@ shop-health_food # icon z16- (also has captio
|
||||
=== 2700
|
||||
|
||||
amenity-bicycle_rental # icon z17- (also has caption(optional) z17-)
|
||||
amenity-boat_rental # icon z17- (also has caption(optional) z17-)
|
||||
amenity-car_sharing # icon z18- (also has caption(optional) z18-)
|
||||
amenity-taxi # icon z16- (also has caption(optional) z16-)
|
||||
=== 2600
|
||||
@@ -867,7 +866,6 @@ shop-shoes # icon z16- (also has captio
|
||||
shop-sports # icon z16- (also has caption(optional) z16-)
|
||||
shop-stationery # icon z16- (also has caption(optional) z16-)
|
||||
shop-tea # icon z18- (also has caption(optional) z18-)
|
||||
shop-telecommunication # icon z16- (also has caption(optional) z16-)
|
||||
shop-toys # icon z16- (also has caption(optional) z16-)
|
||||
shop-travel_agency # icon z18- (also has caption(optional) z18-)
|
||||
shop-wine # icon z16- (also has caption(optional) z16-)
|
||||
@@ -918,7 +916,7 @@ natural-wetland-tidalflat # caption z16- (also has are
|
||||
tourism-picnic_site # icon z14- (also has caption(optional) z14-)
|
||||
=== 1800
|
||||
|
||||
building-train_station # icon z17- (also has caption(optional) z17-, area z14-)
|
||||
building-train_station # caption z17- (also has area z14-)
|
||||
railway-level_crossing # icon z17-
|
||||
=== 1700
|
||||
|
||||
@@ -968,10 +966,8 @@ amenity-childcare # icon z17- (also has captio
|
||||
amenity-doctors # icon z17- (also has caption(optional) z17-, area z15-)
|
||||
amenity-driving_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-language_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-mobile_money_agent # icon z17- (also has caption(optional) z18-)
|
||||
amenity-money_transfer # icon z17- (also has caption(optional) z18-)
|
||||
amenity-music_school # icon z17- (also has caption(optional) z17-)
|
||||
amenity-payment_centre # icon z17- (also has caption(optional) z18-)
|
||||
amenity-recycling-centre # icon z16- (also has caption(optional) z16-, area z15-)
|
||||
amenity-veterinary # icon z16- (also has caption(optional) z16-)
|
||||
craft-electrician # icon z17- (also has caption(optional) z18-)
|
||||
@@ -1205,7 +1201,6 @@ healthcare-psychotherapist # icon z17- (also has captio
|
||||
healthcare-speech_therapist # icon z17- (also has caption(optional) z17-)
|
||||
leisure-adult_gaming_centre # icon z17- (also has caption(optional) z17-)
|
||||
leisure-amusement_arcade # icon z17- (also has caption(optional) z17-)
|
||||
leisure-indoor_play # icon z17- (also has caption(optional) z17-)
|
||||
office-company # icon z18- (also has caption(optional) z18-)
|
||||
office-ngo # icon z18- (also has caption(optional) z18-)
|
||||
office-telecommunication # icon z18- (also has caption(optional) z18-)
|
||||
@@ -1324,7 +1319,7 @@ landuse-railway # caption z15- (also has are
|
||||
landuse-residential # caption z17-
|
||||
landuse-retail # caption z16- (also has area z13-)
|
||||
leisure-common # caption z17-
|
||||
leisure-slipway # icon z17- (also has caption(optional) z17-)
|
||||
leisure-slipway # caption z17-
|
||||
leisure-track # caption z16- (also has line z15-)
|
||||
leisure-track-area # caption z16- (also has area z15-)
|
||||
man_made-petroleum_well # icon z14- (also has caption(optional) z18-)
|
||||
@@ -1818,7 +1813,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# === -7300
|
||||
|
||||
# amenity-bicycle_rental # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-boat_rental # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-car_sharing # caption(optional) z18- (also has icon z18-)
|
||||
# amenity-taxi # caption(optional) z16- (also has icon z16-)
|
||||
# === -7400
|
||||
@@ -1908,7 +1902,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# shop-sports # caption(optional) z16- (also has icon z16-)
|
||||
# shop-stationery # caption(optional) z16- (also has icon z16-)
|
||||
# shop-tea # caption(optional) z18- (also has icon z18-)
|
||||
# shop-telecommunication # caption(optional) z16- (also has icon z16-)
|
||||
# shop-toys # caption(optional) z16- (also has icon z16-)
|
||||
# shop-travel_agency # caption(optional) z18- (also has icon z18-)
|
||||
# shop-wine # caption(optional) z16- (also has icon z16-)
|
||||
@@ -1944,9 +1937,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# tourism-picnic_site # caption(optional) z14- (also has icon z14-)
|
||||
# === -8200
|
||||
|
||||
# building-train_station # caption(optional) z17- (also has icon z17-, area z14-)
|
||||
# === -8300
|
||||
|
||||
# leisure-sports_centre-sport-swimming # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# === -8380
|
||||
|
||||
@@ -1990,10 +1980,8 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# amenity-doctors # caption(optional) z17- (also has icon z17-, area z15-)
|
||||
# amenity-driving_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-language_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-mobile_money_agent # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-money_transfer # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-music_school # caption(optional) z17- (also has icon z17-)
|
||||
# amenity-payment_centre # caption(optional) z18- (also has icon z17-)
|
||||
# amenity-recycling-centre # caption(optional) z16- (also has icon z16-, area z15-)
|
||||
# amenity-veterinary # caption(optional) z16- (also has icon z16-)
|
||||
# craft-electrician # caption(optional) z18- (also has icon z17-)
|
||||
@@ -2205,7 +2193,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# healthcare-speech_therapist # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-adult_gaming_centre # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-amusement_arcade # caption(optional) z17- (also has icon z17-)
|
||||
# leisure-indoor_play # caption(optional) z17- (also has icon z17-)
|
||||
# office-company # caption(optional) z18- (also has icon z18-)
|
||||
# office-ngo # caption(optional) z18- (also has icon z18-)
|
||||
# office-telecommunication # caption(optional) z18- (also has icon z18-)
|
||||
@@ -2297,7 +2284,6 @@ leisure-swimming_pool-private # icon z17- (also has captio
|
||||
# landuse-industrial-mine # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# landuse-landfill # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# landuse-quarry # caption(optional) z15- (also has icon z15-, area z13-)
|
||||
# leisure-slipway # caption(optional) z17- (also has icon z17-)
|
||||
# man_made-petroleum_well # caption(optional) z18- (also has icon z14-)
|
||||
# power-generator-wind # caption(optional) z16- (also has icon z13-, area z13-)
|
||||
# === -9880
|
||||
|
||||
@@ -24,11 +24,7 @@ static inline DeeplinkUrlType deeplinkUrlType(url_scheme::ParsedMapApi::UrlType
|
||||
|
||||
+ (DeeplinkUrlType)parseAndSetApiURL:(NSURL *)url {
|
||||
Framework &f = GetFramework();
|
||||
if ([url.scheme isEqual: @"geo-navigation"]) {
|
||||
return deeplinkUrlType(f.ParseGeoNav(url.absoluteString.UTF8String, f));
|
||||
} else {
|
||||
return deeplinkUrlType(f.ParseAndSetApiURL(url.absoluteString.UTF8String));
|
||||
}
|
||||
return deeplinkUrlType(f.ParseAndSetApiURL(url.absoluteString.UTF8String));
|
||||
}
|
||||
|
||||
+ (void)executeMapApiRequest {
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
<string>CloudDocuments</string>
|
||||
<string>CloudKit</string>
|
||||
</array>
|
||||
<key>com.apple.developer.navigation-app</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.ubiquity-container-identifiers</key>
|
||||
<array>
|
||||
<string>iCloud.app.comaps.debug</string>
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
<string>CloudDocuments</string>
|
||||
<string>CloudKit</string>
|
||||
</array>
|
||||
<key>com.apple.developer.navigation-app</key>
|
||||
<true/>
|
||||
<key>com.apple.developer.ubiquity-container-identifiers</key>
|
||||
<array>
|
||||
<string>iCloud.app.comaps</string>
|
||||
|
||||
@@ -65,7 +65,6 @@
|
||||
<string>mapsme</string>
|
||||
<string>ge0</string>
|
||||
<string>geo</string>
|
||||
<string>geo-navigation</string>
|
||||
<string>om</string>
|
||||
<string>mapswithmepro</string>
|
||||
</array>
|
||||
@@ -90,7 +89,7 @@
|
||||
<true/>
|
||||
<key>NSExceptionDomains</key>
|
||||
<dict>
|
||||
<key>comaps.app</key>
|
||||
<key>comaps.at</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
@@ -99,7 +98,7 @@
|
||||
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>comaps.at</key>
|
||||
<key>comaps.app</key>
|
||||
<dict>
|
||||
<key>NSExceptionAllowsInsecureHTTPLoads</key>
|
||||
<true/>
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
switch urlType {
|
||||
case .route:
|
||||
if let adapter = DeepLinkRouteStrategyAdapter(url) {
|
||||
MWMRouter.buildApiRoute(with: adapter.type, start: adapter.pStart, intermediatePoint: adapter.pIntermediate, finish: adapter.pFinish)
|
||||
MWMRouter.buildApiRoute(with: adapter.type, start: adapter.p1, finish: adapter.p2)
|
||||
MapsAppDelegate.theApp().showMap()
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -6,9 +6,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@class MWMRoutePoint;
|
||||
@interface DeepLinkRouteStrategyAdapter : NSObject
|
||||
|
||||
@property(nonatomic, readonly) MWMRoutePoint* pStart;
|
||||
@property(nonatomic, readonly) MWMRoutePoint* pIntermediate;
|
||||
@property(nonatomic, readonly) MWMRoutePoint* pFinish;
|
||||
@property(nonatomic, readonly) MWMRoutePoint* p1;
|
||||
@property(nonatomic, readonly) MWMRoutePoint* p2;
|
||||
@property(nonatomic, readonly) MWMRouterType type;
|
||||
|
||||
- (nullable instancetype)init:(NSURL*)url;
|
||||
|
||||
@@ -11,29 +11,11 @@
|
||||
auto const parsedData = GetFramework().GetParsedRoutingData();
|
||||
auto const points = parsedData.m_points;
|
||||
|
||||
for (auto point: points) {
|
||||
if (point.m_type == RouteMarkType::Start) {
|
||||
_pStart = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:point
|
||||
type:MWMRoutePointTypeStart
|
||||
intermediateIndex:0];
|
||||
} else if (point.m_type == RouteMarkType::Finish) {
|
||||
_pFinish = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:point
|
||||
type:MWMRoutePointTypeFinish
|
||||
intermediateIndex:0];
|
||||
} else if (point.m_type == RouteMarkType::Intermediate) {
|
||||
_pIntermediate = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:point
|
||||
type:MWMRoutePointTypeIntermediate
|
||||
intermediateIndex:0];
|
||||
}
|
||||
}
|
||||
|
||||
if (_pStart && _pFinish) {
|
||||
_type = routerType(parsedData.m_type);
|
||||
} else if (points.size() == 2) {
|
||||
_pStart = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:points.front()
|
||||
if (points.size() == 2) {
|
||||
_p1 = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:points.front()
|
||||
type:MWMRoutePointTypeStart
|
||||
intermediateIndex:0];
|
||||
_pFinish = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:points.back()
|
||||
_p2 = [[MWMRoutePoint alloc] initWithURLSchemeRoutePoint:points.back()
|
||||
type:MWMRoutePointTypeFinish
|
||||
intermediateIndex:0];
|
||||
_type = routerType(parsedData.m_type);
|
||||
|
||||
@@ -56,7 +56,6 @@ typedef void (^MWMImageHeightBlock)(UIImage *, NSString *, NSString *);
|
||||
+ (void)buildToPoint:(MWMRoutePoint *)finish bestRouter:(BOOL)bestRouter;
|
||||
+ (void)buildApiRouteWithType:(MWMRouterType)type
|
||||
startPoint:(MWMRoutePoint *)startPoint
|
||||
intermediatePoint:(MWMRoutePoint *)intermediatePoint
|
||||
finishPoint:(MWMRoutePoint *)finishPoint;
|
||||
+ (void)rebuildWithBestRouter:(BOOL)bestRouter;
|
||||
|
||||
|
||||
@@ -255,7 +255,6 @@ char const *kRenderAltitudeImagesQueueLabel = "mapsme.mwmrouter.renderAltitudeIm
|
||||
|
||||
+ (void)buildApiRouteWithType:(MWMRouterType)type
|
||||
startPoint:(MWMRoutePoint *)startPoint
|
||||
intermediatePoint:(MWMRoutePoint *)intermediatePoint
|
||||
finishPoint:(MWMRoutePoint *)finishPoint {
|
||||
if (!startPoint || !finishPoint)
|
||||
return;
|
||||
@@ -265,9 +264,6 @@ char const *kRenderAltitudeImagesQueueLabel = "mapsme.mwmrouter.renderAltitudeIm
|
||||
auto router = [MWMRouter router];
|
||||
router.isAPICall = YES;
|
||||
[self addPoint:startPoint];
|
||||
if (intermediatePoint) {
|
||||
[self addPoint:intermediatePoint];
|
||||
}
|
||||
[self addPoint:finishPoint];
|
||||
router.isAPICall = NO;
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
"type.amenity.bench" = "Sitzbank";
|
||||
"type.amenity.bench.backless" = "Sitzbank ohne Rückenlehne";
|
||||
"type.amenity.bicycle_parking" = "Fahrradständer";
|
||||
"type.amenity.boat_rental" = "Bootsverleih";
|
||||
"type.amenity.bicycle_rental" = "Fahrradverleih";
|
||||
"type.amenity.bicycle_repair_station" = "Fahrrad-Reparaturstation";
|
||||
"type.amenity.biergarten" = "Biergarten";
|
||||
@@ -723,7 +722,7 @@
|
||||
"type.leisure.sports_centre.sport.multi" = "Sportzentrum";
|
||||
"type.leisure.sports_centre.sport.american_football" = "Sportzentrum";
|
||||
"type.leisure.sports_centre.sport.archery" = "Sportzentrum";
|
||||
"type.leisure.sports_centre.sport.athletics" = "Sportzentrum";
|
||||
"type.leisure.sports_centre.sport.athletics" = "Sportzentrume";
|
||||
"type.leisure.sports_centre.sport.australian_football" = "Sportzentrum";
|
||||
"type.leisure.sports_centre.sport.badminton" = "Sportzentrum";
|
||||
"type.leisure.sports_centre.sport.baseball" = "Sportzentrum";
|
||||
@@ -1504,7 +1503,7 @@
|
||||
"type.highway.ladder" = "Leiter";
|
||||
"type.landuse.plant_nursery" = "Gärtnerei";
|
||||
"type.leisure.firepit" = "Feuerstelle";
|
||||
"type.amenity.studio" = "Medienstudio";
|
||||
"type.amenity.studio" = "Studio";
|
||||
"type.man_made.crane" = "Kran";
|
||||
"type.railway.station.subway.qingdao" = "U-Bahn-Station";
|
||||
"type.natural.wetland.saltmarsh" = "Salzmarsch";
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
"type.amenity.bench" = "Bench";
|
||||
"type.amenity.bench.backless" = "Backless Bench";
|
||||
"type.amenity.bicycle_parking" = "Bicycle Parking";
|
||||
"type.amenity.boat_rental" = "Boat Rental";
|
||||
"type.amenity.bicycle_rental" = "Bicycle Rental";
|
||||
"type.amenity.bicycle_repair_station" = "Bicycle Repair Station";
|
||||
"type.amenity.biergarten" = "Biergarten";
|
||||
@@ -85,7 +84,6 @@
|
||||
"type.amenity.library" = "Library";
|
||||
"type.amenity.loading_dock" = "Loading Bay";
|
||||
"type.amenity.lounger" = "Lounger";
|
||||
"type.amenity.mobile_money_agent" = "Mobile Money Agent";
|
||||
"type.amenity.marketplace" = "Marketplace";
|
||||
"type.amenity.motorcycle_parking" = "Motorcycle Parking";
|
||||
"type.amenity.nightclub" = "Nightclub";
|
||||
@@ -115,7 +113,6 @@
|
||||
"type.amenity.parking_space.private" = "Parking Space";
|
||||
"type.amenity.parking_space.underground" = "Parking Space";
|
||||
"type.amenity.parking_space.disabled" = "Disabled Parking Space";
|
||||
"type.amenity.payment_centre" = "Payment Centre";
|
||||
"type.amenity.payment_terminal" = "Payment Terminal";
|
||||
"type.amenity.pharmacy" = "Pharmacy";
|
||||
"type.amenity.place_of_worship" = "Place of Worship";
|
||||
@@ -709,7 +706,6 @@
|
||||
"type.leisure.miniature_golf" = "Minigolf";
|
||||
"type.leisure.hackerspace" = "Hackerspace";
|
||||
"type.leisure.ice_rink" = "Ice Rink";
|
||||
"type.leisure.indoor_play" = "Indoor Play Centre";
|
||||
"type.leisure.marina" = "Marina";
|
||||
"type.leisure.nature_reserve" = "Nature Reserve";
|
||||
"type.leisure.outdoor_seating" = "Outdoor Seating";
|
||||
@@ -1310,7 +1306,6 @@
|
||||
"type.shop.supermarket" = "Supermarket";
|
||||
"type.shop.tattoo" = "Tattoo Parlour";
|
||||
"type.shop.tea" = "Tea Shop";
|
||||
"type.shop.telecommunication" = "Telecommunication Shop";
|
||||
"type.shop.ticket" = "Ticket Shop";
|
||||
"type.shop.toys" = "Toy Shop";
|
||||
"type.shop.travel_agency" = "Travel Agency";
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
"type.amenity.bench.backless" = "Backless Bench";
|
||||
"type.amenity.bicycle_parking" = "Bicycle Parking";
|
||||
"type.amenity.bicycle_parking.covered" = "Covered Bicycle Parking";
|
||||
"type.amenity.boat_rental" = "Boat Rental";
|
||||
"type.amenity.bicycle_rental" = "Bicycle Rental";
|
||||
"type.amenity.bicycle_repair_station" = "Bicycle Repair Station";
|
||||
"type.amenity.biergarten" = "Biergarten";
|
||||
@@ -97,7 +96,6 @@
|
||||
"type.amenity.lounger" = "Lounger";
|
||||
"type.amenity.luggage_locker" = "Luggage Locker";
|
||||
"type.amenity.marketplace" = "Marketplace";
|
||||
"type.amenity.mobile_money_agent" = "Mobile Money Agent";
|
||||
"type.amenity.motorcycle_parking" = "Motorcycle Parking";
|
||||
"type.amenity.nightclub" = "Nightclub";
|
||||
"type.amenity.nursing_home" = "Nursing Home";
|
||||
@@ -127,7 +125,6 @@
|
||||
"type.amenity.parking_space.underground" = "Parking Space";
|
||||
"type.amenity.parking_space.disabled" = "Disabled Parking Space";
|
||||
"type.amenity.payment_terminal" = "Payment Terminal";
|
||||
"type.amenity.payment_centre" = "Payment Centre";
|
||||
"type.amenity.pharmacy" = "Pharmacy";
|
||||
"type.amenity.place_of_worship" = "Place of Worship";
|
||||
"type.amenity.place_of_worship.buddhist" = "Buddhist Temple";
|
||||
@@ -739,7 +736,6 @@
|
||||
"type.leisure.miniature_golf" = "Minigolf";
|
||||
"type.leisure.hackerspace" = "Hackerspace";
|
||||
"type.leisure.ice_rink" = "Ice Rink";
|
||||
"type.leisure.indoor_play" = "Indoor Play Centre";
|
||||
"type.leisure.marina" = "Marina";
|
||||
"type.leisure.nature_reserve" = "Nature Reserve";
|
||||
"type.leisure.outdoor_seating" = "Outdoor Seating";
|
||||
@@ -1350,7 +1346,6 @@
|
||||
"type.shop.supermarket" = "Supermarket";
|
||||
"type.shop.tattoo" = "Tattoo Parlour";
|
||||
"type.shop.tea" = "Tea Shop";
|
||||
"type.shop.telecommunication" = "Telecommunication Shop";
|
||||
"type.shop.ticket" = "Ticket Shop";
|
||||
"type.shop.toys" = "Toy Store";
|
||||
"type.shop.travel_agency" = "Travel Agency";
|
||||
|
||||
@@ -41,7 +41,6 @@ public:
|
||||
return &p.second;
|
||||
return nullptr;
|
||||
}
|
||||
std::vector<Param> const & GetParams() const { return m_params; }
|
||||
|
||||
private:
|
||||
bool Parse(std::string const & url);
|
||||
|
||||
@@ -196,22 +196,14 @@ m2::PointF GetOffset(int offsetX, int offsetY)
|
||||
|
||||
bool IsSymbolRoadShield(ftypes::RoadShield const & shield)
|
||||
{
|
||||
return shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red || shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey || shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada;
|
||||
return shield.m_type == ftypes::RoadShieldType::US_Interstate || shield.m_type == ftypes::RoadShieldType::US_Highway || shield.m_type == ftypes::RoadShieldType::Italy_Autostrada;
|
||||
}
|
||||
|
||||
std::string GetRoadShieldSymbolName(ftypes::RoadShield const & shield, double fontScale)
|
||||
{
|
||||
ASSERT(IsSymbolRoadShield(shield), ());
|
||||
std::string result = "";
|
||||
if (shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Green)
|
||||
result = "shield-highway_hexagon_green";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Blue)
|
||||
result = "shield-highway_hexagon_blue";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Red)
|
||||
result = "shield-highway_hexagon_red";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::Highway_Hexagon_Turkey)
|
||||
result = "shield-highway_hexagon_turkey";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::US_Interstate)
|
||||
if (shield.m_type == ftypes::RoadShieldType::US_Interstate)
|
||||
result = shield.m_name.size() <= 2 ? "shield-us-i-thin" : "shield-us-i-wide";
|
||||
else if (shield.m_type == ftypes::RoadShieldType::US_Highway)
|
||||
result = shield.m_name.size() <= 2 ? "shield-us-hw-thin" : "shield-us-hw-wide";
|
||||
@@ -314,10 +306,6 @@ dp::Color GetRoadShieldTextColor(dp::Color const & baseColor, ftypes::RoadShield
|
||||
{RoadShieldType::Generic_Pill_Blue_Bordered, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Generic_Pill_Red_Bordered, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Generic_Pill_Orange_Bordered, kRoadShieldBlackTextColor},
|
||||
{RoadShieldType::Highway_Hexagon_Green, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Highway_Hexagon_Blue, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Highway_Hexagon_Red, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::Highway_Hexagon_Turkey, kRoadShieldBlackTextColor},
|
||||
{RoadShieldType::US_Interstate, kRoadShieldWhiteTextColor},
|
||||
{RoadShieldType::US_Highway, kRoadShieldBlackTextColor},
|
||||
{RoadShieldType::UK_Highway, kRoadShieldUKYellowTextColor},
|
||||
|
||||
@@ -353,7 +353,7 @@ void RuleDrawer::ProcessLineStyle(FeatureType & f, Stylist const & s, TInsertSha
|
||||
df::RoadClass m_roadClass;
|
||||
};
|
||||
static Checker const checkers[] = {
|
||||
{{HighwayClass::Motorway, HighwayClass::Trunk, HighwayClass::Primary}, kRoadClass0ZoomLevel, df::RoadClass::Class0},
|
||||
{{HighwayClass::Trunk, HighwayClass::Primary}, kRoadClass0ZoomLevel, df::RoadClass::Class0},
|
||||
{{HighwayClass::Secondary, HighwayClass::Tertiary}, kRoadClass1ZoomLevel, df::RoadClass::Class1},
|
||||
{{HighwayClass::LivingStreet, HighwayClass::Service, HighwayClass::ServiceMinor},
|
||||
kRoadClass2ZoomLevel,
|
||||
|
||||
@@ -30,8 +30,8 @@ public:
|
||||
m_map[c.GetTypeByPath({"route", "ferry"})] = HighwayClass::Transported;
|
||||
m_map[c.GetTypeByPath({"route", "shuttle_train"})] = HighwayClass::Transported;
|
||||
|
||||
m_map[c.GetTypeByPath({"highway", "motorway"})] = HighwayClass::Motorway;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway_link"})] = HighwayClass::Motorway;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway"})] = HighwayClass::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "motorway_link"})] = HighwayClass::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "trunk"})] = HighwayClass::Trunk;
|
||||
m_map[c.GetTypeByPath({"highway", "trunk_link"})] = HighwayClass::Trunk;
|
||||
|
||||
@@ -83,7 +83,6 @@ char const * HighwayClassToString(HighwayClass const cls)
|
||||
{
|
||||
case HighwayClass::Undefined: return "Undefined";
|
||||
case HighwayClass::Transported: return "Transported";
|
||||
case HighwayClass::Motorway: return "Motorway";
|
||||
case HighwayClass::Trunk: return "Trunk";
|
||||
case HighwayClass::Primary: return "Primary";
|
||||
case HighwayClass::Secondary: return "Secondary";
|
||||
|
||||
@@ -674,7 +674,6 @@ uint64_t GetPopulationByRadius(double r);
|
||||
enum class HighwayClass
|
||||
{
|
||||
Undefined = 0, // There has not been any attempt of calculating HighwayClass.
|
||||
Motorway,
|
||||
Trunk,
|
||||
Primary,
|
||||
Secondary,
|
||||
|
||||
@@ -107,7 +107,7 @@ UNIT_TEST(GetHighwayClassTest)
|
||||
|
||||
feature::TypesHolder types2;
|
||||
types2.Add(c.GetTypeByPath({"highway", "motorway_link", "tunnel"}));
|
||||
TEST_EQUAL(ftypes::GetHighwayClass(types2), ftypes::HighwayClass::Motorway, ());
|
||||
TEST_EQUAL(ftypes::GetHighwayClass(types2), ftypes::HighwayClass::Trunk, ());
|
||||
|
||||
feature::TypesHolder types3;
|
||||
types3.Add(c.GetTypeByPath({"highway", "unclassified"}));
|
||||
|
||||
@@ -94,7 +94,7 @@ class RoadShieldParser
|
||||
public:
|
||||
explicit RoadShieldParser(std::string const & baseRoadNumber) : m_baseRoadNumber(baseRoadNumber) {}
|
||||
virtual ~RoadShieldParser() = default;
|
||||
virtual RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const = 0;
|
||||
virtual RoadShield ParseRoadShield(std::string_view rawText) const = 0;
|
||||
|
||||
RoadShieldType FindNetworkShield(std::string network) const
|
||||
{
|
||||
@@ -127,20 +127,18 @@ public:
|
||||
RoadShieldsSetT GetRoadShields() const
|
||||
{
|
||||
RoadShieldsSetT result, defaultShields;
|
||||
|
||||
uint8_t index = 0;
|
||||
|
||||
strings::Tokenize(m_baseRoadNumber, ";", [&](std::string_view rawText)
|
||||
{
|
||||
++index;
|
||||
RoadShield shield;
|
||||
auto slashPos = rawText.find('/');
|
||||
if (slashPos == std::string::npos)
|
||||
{
|
||||
shield = ParseRoadShield(rawText, index);
|
||||
shield = ParseRoadShield(rawText);
|
||||
}
|
||||
else
|
||||
{
|
||||
shield = ParseRoadShield(rawText.substr(slashPos + 1), index);
|
||||
shield = ParseRoadShield(rawText.substr(slashPos + 1));
|
||||
// TODO: use a network-based shield type override only if a parser couldn't make it
|
||||
// more specific than country's default shield type.
|
||||
// E.g. "94" is set to Generic_Orange by Estonia parser, but then
|
||||
@@ -178,7 +176,7 @@ class USRoadShieldParser : public RoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit USRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -238,7 +236,7 @@ class IndiaRoadShieldParser : public RoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit IndiaRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -271,7 +269,7 @@ public:
|
||||
, m_type(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -306,7 +304,7 @@ public:
|
||||
, m_defaultType(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -331,72 +329,6 @@ private:
|
||||
RoadShieldType const m_defaultType;
|
||||
};
|
||||
|
||||
// Matches by a list of given highway classes for the first shield.
|
||||
// Falls back to matching by a list of given substrings (identical to SimpleRoadShieldParser) for all other shields.
|
||||
class HighwayClassRoadShieldParser : public RoadShieldParser
|
||||
{
|
||||
public:
|
||||
struct Entry
|
||||
{
|
||||
Entry() = default;
|
||||
Entry(std::string_view name, HighwayClass highwayClass, RoadShieldType type, bool isRedundant = false) : m_name(name), m_highwayClass(highwayClass), m_type(type), m_isRedundant(isRedundant) {}
|
||||
|
||||
std::string_view m_name;
|
||||
HighwayClass m_highwayClass = HighwayClass::Undefined;
|
||||
RoadShieldType m_type = RoadShieldType::Default;
|
||||
/* Hides a specific secondary etc. sign, if there is a primary one */
|
||||
bool m_isRedundant = false;
|
||||
};
|
||||
|
||||
using ShieldTypes = buffer_vector<Entry, 8>;
|
||||
|
||||
HighwayClassRoadShieldParser(std::string const & baseRoadNumber, HighwayClass highwayClass, ShieldTypes && types, RoadShieldType defaultType = RoadShieldType::Default)
|
||||
: RoadShieldParser(baseRoadNumber)
|
||||
, m_highwayClass(highwayClass)
|
||||
, m_types(std::move(types))
|
||||
, m_defaultType(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
|
||||
RoadShieldType type = m_defaultType;
|
||||
if (index == 1) {
|
||||
for (auto const & p : m_types)
|
||||
{
|
||||
if (p.m_highwayClass == m_highwayClass)
|
||||
{
|
||||
return RoadShield(p.m_type, rawText);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
size_t idx = std::numeric_limits<size_t>::max();
|
||||
for (auto const & p : m_types)
|
||||
{
|
||||
auto const i = rawText.find(p.m_name);
|
||||
if (i != std::string::npos && i < idx)
|
||||
{
|
||||
if (p.m_isRedundant) {
|
||||
type = RoadShieldType::Hidden;
|
||||
} else {
|
||||
type = p.m_type;
|
||||
}
|
||||
idx = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {type, rawText};
|
||||
}
|
||||
|
||||
private:
|
||||
HighwayClass const m_highwayClass;
|
||||
ShieldTypes const m_types;
|
||||
RoadShieldType const m_defaultType;
|
||||
};
|
||||
|
||||
uint16_t constexpr kAnyHigherRoadNumber = std::numeric_limits<uint16_t>::max();
|
||||
|
||||
// Matches by a list of numeric ranges (a first matching range is used).
|
||||
@@ -422,7 +354,7 @@ public:
|
||||
, m_types(std::move(types))
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
if (rawText.size() > kMaxRoadShieldBytesSize)
|
||||
return RoadShield();
|
||||
@@ -471,7 +403,7 @@ public:
|
||||
, m_defaultType(defaultType)
|
||||
{}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
uint32_t constexpr kMaxRoadShieldSymbolsSize = 4 * kMaxRoadShieldBytesSize;
|
||||
|
||||
@@ -497,15 +429,14 @@ private:
|
||||
|
||||
// Implementations of "ref" parses for some countries.
|
||||
|
||||
class AustriaRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
class AustriaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit AustriaRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
|
||||
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
|
||||
{{"A", HighwayClass::Motorway, RoadShieldType::Generic_Blue_Bordered},
|
||||
{"S", HighwayClass::Trunk, RoadShieldType::Generic_Blue_Bordered},
|
||||
{"B", HighwayClass::Primary, RoadShieldType::Generic_Blue},
|
||||
{"L", HighwayClass::Secondary, RoadShieldType::Generic_Pill_White_Bordered}})
|
||||
explicit AustriaRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Blue_Bordered},
|
||||
{"S", RoadShieldType::Generic_Blue_Bordered},
|
||||
{"B", RoadShieldType::Generic_Blue},
|
||||
{"L", RoadShieldType::Generic_Pill_White_Bordered}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -523,7 +454,7 @@ class GreeceRoadShieldParser : public SimpleRoadShieldParser
|
||||
public:
|
||||
explicit GreeceRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber,
|
||||
{{"Α", RoadShieldType::Highway_Hexagon_Green}, {"Ε", RoadShieldType::Generic_Blue}})
|
||||
{{"Α", RoadShieldType::Generic_Green}, {"Ε", RoadShieldType::Generic_Blue}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -549,15 +480,6 @@ public:
|
||||
{}
|
||||
};
|
||||
|
||||
class TurkeyRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit TurkeyRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"O", RoadShieldType::Highway_Hexagon_Turkey},
|
||||
{"D", RoadShieldType::Generic_Blue}})
|
||||
{}
|
||||
};
|
||||
|
||||
class LativaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
@@ -602,7 +524,7 @@ class SerbiaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SerbiaRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Green}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Green}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -618,7 +540,7 @@ class SloveniaRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SloveniaRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Green}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Green}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -626,7 +548,7 @@ class SwitzerlandRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit SwitzerlandRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Red}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Red}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -634,7 +556,7 @@ class LiechtensteinRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit LiechtensteinRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Highway_Hexagon_Red}})
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Red}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -654,16 +576,11 @@ public:
|
||||
{}
|
||||
};
|
||||
|
||||
class UKRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
class UKRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit UKRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
|
||||
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
|
||||
{{"M", HighwayClass::Motorway, RoadShieldType::Generic_Blue, true},
|
||||
{"E", HighwayClass::Motorway, RoadShieldType::Hidden},
|
||||
{"A", HighwayClass::Trunk, RoadShieldType::UK_Highway, true},
|
||||
{"A", HighwayClass::Primary, RoadShieldType::Generic_White_Bordered},
|
||||
{"B", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered}})
|
||||
explicit UKRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"M", RoadShieldType::Generic_Blue}, {"A", RoadShieldType::UK_Highway}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -679,17 +596,14 @@ public:
|
||||
{}
|
||||
};
|
||||
|
||||
class GermanyRoadShieldParser : public HighwayClassRoadShieldParser
|
||||
class GermanyRoadShieldParser : public SimpleRoadShieldParser
|
||||
{
|
||||
public:
|
||||
explicit GermanyRoadShieldParser(std::string const & baseRoadNumber, HighwayClass const & highwayClass)
|
||||
: HighwayClassRoadShieldParser(baseRoadNumber, highwayClass,
|
||||
{{"A", HighwayClass::Motorway, RoadShieldType::Highway_Hexagon_Blue},
|
||||
{"D", HighwayClass::Motorway, RoadShieldType::Hidden},
|
||||
{"B", HighwayClass::Trunk, RoadShieldType::Generic_Orange_Bordered},
|
||||
{"B", HighwayClass::Primary, RoadShieldType::Generic_Orange_Bordered},
|
||||
{"L", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered},
|
||||
{"K", HighwayClass::Secondary, RoadShieldType::Generic_White_Bordered}})
|
||||
explicit GermanyRoadShieldParser(std::string const & baseRoadNumber)
|
||||
: SimpleRoadShieldParser(baseRoadNumber, {{"A", RoadShieldType::Generic_Blue},
|
||||
{"B", RoadShieldType::Generic_Orange_Bordered},
|
||||
{"L", RoadShieldType::Generic_White_Bordered},
|
||||
{"K", RoadShieldType::Generic_White_Bordered}})
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -796,7 +710,7 @@ class MexicoRoadShieldParser : public RoadShieldParser
|
||||
public:
|
||||
explicit MexicoRoadShieldParser(std::string const & baseRoadNumber) : RoadShieldParser(baseRoadNumber) {}
|
||||
|
||||
RoadShield ParseRoadShield(std::string_view rawText, uint8_t index) const override
|
||||
RoadShield ParseRoadShield(std::string_view rawText) const override
|
||||
{
|
||||
std::string shieldText(rawText);
|
||||
|
||||
@@ -839,10 +753,6 @@ RoadShieldsSetT GetRoadShields(FeatureType & f)
|
||||
if (ref.empty())
|
||||
return {};
|
||||
|
||||
auto const & highwayClass = ftypes::GetHighwayClass(feature::TypesHolder(f));
|
||||
if (highwayClass == HighwayClass::Undefined)
|
||||
return {};
|
||||
|
||||
// Find out country name.
|
||||
std::string mwmName = f.GetID().GetMwmName();
|
||||
ASSERT(!mwmName.empty(), (f.GetID()));
|
||||
@@ -851,19 +761,19 @@ RoadShieldsSetT GetRoadShields(FeatureType & f)
|
||||
if (underlinePos != std::string::npos)
|
||||
mwmName = mwmName.substr(0, underlinePos);
|
||||
|
||||
return GetRoadShields(mwmName, ref, highwayClass);
|
||||
return GetRoadShields(mwmName, ref);
|
||||
}
|
||||
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber, HighwayClass const & highwayClass)
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber)
|
||||
{
|
||||
if (mwmName == "US")
|
||||
return USRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "UK")
|
||||
return UKRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
return UKRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "India")
|
||||
return IndiaRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Austria")
|
||||
return AustriaRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
return AustriaRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Belgium")
|
||||
return BelgiumRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Greece")
|
||||
@@ -872,8 +782,6 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
|
||||
return IrelandRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Italy")
|
||||
return ItalyRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Turkey")
|
||||
return TurkeyRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Lativa")
|
||||
return LativaRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Moldova")
|
||||
@@ -897,7 +805,7 @@ RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const &
|
||||
if (mwmName == "France")
|
||||
return FranceRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Germany")
|
||||
return GermanyRoadShieldParser(roadNumber, highwayClass).GetRoadShields();
|
||||
return GermanyRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Spain")
|
||||
return SpainRoadShieldParser(roadNumber).GetRoadShields();
|
||||
if (mwmName == "Ukraine")
|
||||
@@ -966,10 +874,6 @@ std::string DebugPrint(RoadShieldType shieldType)
|
||||
case RoadShieldType::Generic_Pill_Blue_Bordered: return "blue pill bordered";
|
||||
case RoadShieldType::Generic_Pill_Red_Bordered: return "red pill bordered";
|
||||
case RoadShieldType::Generic_Pill_Orange_Bordered: return "orange pill bordered";
|
||||
case RoadShieldType::Highway_Hexagon_Green: return "highway hexagon green";
|
||||
case RoadShieldType::Highway_Hexagon_Blue: return "highway hexagon blue";
|
||||
case RoadShieldType::Highway_Hexagon_Red: return "highway hexagon red";
|
||||
case RoadShieldType::Highway_Hexagon_Turkey: return "highway hexagon turkey";
|
||||
case RoadShieldType::US_Interstate: return "US interstate";
|
||||
case RoadShieldType::US_Highway: return "US highway";
|
||||
case RoadShieldType::UK_Highway: return "UK highway";
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "indexer/feature.hpp"
|
||||
#include "indexer/ftypes_matcher.hpp"
|
||||
|
||||
#include "geometry/rect2d.hpp"
|
||||
|
||||
@@ -34,10 +33,6 @@ enum class RoadShieldType
|
||||
Generic_Pill_Blue_Bordered,
|
||||
Generic_Pill_Red_Bordered,
|
||||
Generic_Pill_Orange_Bordered,
|
||||
Highway_Hexagon_Green,
|
||||
Highway_Hexagon_Blue,
|
||||
Highway_Hexagon_Red,
|
||||
Highway_Hexagon_Turkey,
|
||||
US_Interstate,
|
||||
US_Highway,
|
||||
UK_Highway,
|
||||
@@ -80,7 +75,7 @@ struct RoadShield
|
||||
// Use specific country road shield styles based on mwm feature belongs to.
|
||||
using RoadShieldsSetT = buffer_vector<RoadShield, 2>;
|
||||
RoadShieldsSetT GetRoadShields(FeatureType & f);
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber, HighwayClass const & highwayClass);
|
||||
RoadShieldsSetT GetRoadShields(std::string const & mwmName, std::string const & roadNumber);
|
||||
|
||||
// Simple parsing without specific country styles.
|
||||
RoadShieldsSetT GetRoadShields(std::string const & rawRoadNumber);
|
||||
|
||||
@@ -585,13 +585,6 @@ public:
|
||||
return m_parsedMapApi.SetUrlAndParse(url);
|
||||
}
|
||||
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
url_scheme::ParsedMapApi::UrlType ParseGeoNav(std::string const & raw, Framework & fm)
|
||||
{
|
||||
return m_parsedMapApi.ParseGeoNav(raw, fm);
|
||||
}
|
||||
#endif
|
||||
|
||||
struct ParsedRoutingData
|
||||
{
|
||||
ParsedRoutingData(std::vector<url_scheme::RoutePoint> const & points, routing::RouterType type)
|
||||
|
||||
@@ -1,19 +1,8 @@
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
#include "platform/preferred_languages.hpp"
|
||||
#endif
|
||||
|
||||
#include "map/mwm_url.hpp"
|
||||
|
||||
#include "map/api_mark_point.hpp"
|
||||
#include "map/bookmark_manager.hpp"
|
||||
#include "map/framework.hpp"
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
#include "map/everywhere_search_params.hpp"
|
||||
#include "map/routing_manager.hpp"
|
||||
#include "map/routing_mark.hpp"
|
||||
|
||||
#include "search/result.hpp"
|
||||
#endif
|
||||
|
||||
#include "ge0/geo_url_parser.hpp"
|
||||
#include "ge0/parser.hpp"
|
||||
@@ -28,9 +17,8 @@
|
||||
#include "base/scope_guard.hpp"
|
||||
#include "base/string_utils.hpp"
|
||||
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
#include <future>
|
||||
#endif
|
||||
#include <array>
|
||||
#include <tuple>
|
||||
|
||||
namespace url_scheme
|
||||
{
|
||||
@@ -250,131 +238,6 @@ ParsedMapApi::UrlType ParsedMapApi::SetUrlAndParse(std::string const & raw)
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
ParsedMapApi::UrlType ParsedMapApi::ParseGeoNav(std::string const & raw, Framework & fm)
|
||||
{
|
||||
Reset();
|
||||
SCOPE_GUARD(guard, [this]
|
||||
{
|
||||
if (m_requestType == UrlType::Incorrect)
|
||||
Reset();
|
||||
});
|
||||
|
||||
url::Url const url(raw);
|
||||
|
||||
if (url.GetHost() == "place")
|
||||
{
|
||||
auto const latLon = url.GetParamValue("coordinate");
|
||||
auto const addr = url.GetParamValue("address");
|
||||
|
||||
if (latLon)
|
||||
{
|
||||
auto const tokens = strings::Tokenize(*latLon, ",");
|
||||
double lat;
|
||||
double lon;
|
||||
|
||||
if (tokens.size() != 2 || !strings::to_double(tokens[0], lat) || !strings::to_double(tokens[1], lon) ||
|
||||
!mercator::ValidLat(lat) || !mercator::ValidLon(lon))
|
||||
{
|
||||
LOG(LWARNING, ("Invalid lat,lon in", raw));
|
||||
return m_requestType = UrlType::Incorrect;
|
||||
}
|
||||
|
||||
if (addr)
|
||||
{
|
||||
m_searchRequest = SearchRequest();
|
||||
m_searchRequest.m_query = *addr;
|
||||
m_centerLatLon = {lat, lon};
|
||||
return m_requestType = UrlType::Search;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
m_centerLatLon = {lat, lon};
|
||||
m_mapPoints.push_back({lat /* m_lat */, lon /* m_lon */, "" /* m_label */, "" /* m_id */, "" /* m_style */});
|
||||
return m_requestType = UrlType::Map;
|
||||
}
|
||||
}
|
||||
|
||||
else if (addr)
|
||||
{
|
||||
m_searchRequest = SearchRequest();
|
||||
m_searchRequest.m_query = *addr;
|
||||
return m_requestType = UrlType::Search;
|
||||
}
|
||||
}
|
||||
|
||||
else if (url.GetHost() == "directions")
|
||||
{
|
||||
auto const source = url.GetParamValue("source");
|
||||
auto const destination = url.GetParamValue("destination");
|
||||
|
||||
if (source)
|
||||
SetRouteMark(*source, fm, RouteMarkType::Finish);
|
||||
|
||||
if (url.GetParamValue("waypoint"))
|
||||
for (auto const & param : url.GetParams())
|
||||
if (param.first == "waypoint")
|
||||
SetRouteMark(param.second, fm, RouteMarkType::Intermediate);
|
||||
|
||||
if (destination)
|
||||
SetRouteMark(*destination, fm, RouteMarkType::Finish);
|
||||
|
||||
if (source || destination)
|
||||
{
|
||||
m_routingType = routing::ToString(routing::GetLastUsedRouter());
|
||||
|
||||
return m_requestType = UrlType::Route;
|
||||
}
|
||||
|
||||
return m_requestType = UrlType::Incorrect;
|
||||
}
|
||||
|
||||
return m_requestType = UrlType::Incorrect;
|
||||
}
|
||||
|
||||
void ParsedMapApi::SetRouteMark(std::string_view const raw, Framework & fm, RouteMarkType const type)
|
||||
{
|
||||
auto const tokens = strings::Tokenize(raw, ",");
|
||||
double lat;
|
||||
double lon;
|
||||
|
||||
if (tokens.size() != 2 || !strings::to_double(tokens[0], lat) || !strings::to_double(tokens[1], lon) ||
|
||||
!mercator::ValidLat(lat) || !mercator::ValidLon(lon))
|
||||
{
|
||||
std::promise<void> signal;
|
||||
std::future<void> future = signal.get_future();
|
||||
|
||||
::search::EverywhereSearchParams params{
|
||||
std::string(raw),
|
||||
languages::GetMostPreferredLang(),
|
||||
{} /* timeout */,
|
||||
false,
|
||||
// m_onResults
|
||||
[this, type = std::move(type), &signal](::search::Results results, std::vector<::search::ProductInfo>)
|
||||
{
|
||||
auto const center = results[0].GetFeatureCenter();
|
||||
RoutePoint p;
|
||||
p.m_type = type;
|
||||
p.m_org = mercator::FromLatLon(mercator::YToLat(center.y), mercator::XToLon(center.x));
|
||||
p.m_name = results[0].GetString();
|
||||
m_routePoints.push_back(p);
|
||||
signal.set_value();
|
||||
}};
|
||||
|
||||
fm.GetSearchAPI().SearchEverywhere(std::move(params));
|
||||
future.wait();
|
||||
}
|
||||
else
|
||||
{
|
||||
RoutePoint p;
|
||||
p.m_org = mercator::FromLatLon(lat, lon);
|
||||
p.m_type = type;
|
||||
m_routePoints.push_back(p);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void ParsedMapApi::ParseMapParam(std::string const & key, std::string const & value, bool & correctOrder)
|
||||
{
|
||||
using namespace map;
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
#include "map/everywhere_search_params.hpp"
|
||||
#include "map/routing_mark.hpp"
|
||||
#endif
|
||||
|
||||
#include "geometry/latlon.hpp"
|
||||
#include "geometry/point2d.hpp"
|
||||
|
||||
@@ -27,20 +22,9 @@ struct MapPoint
|
||||
struct RoutePoint
|
||||
{
|
||||
RoutePoint() = default;
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
RoutePoint(m2::PointD const & org, std::string const & name, RouteMarkType type)
|
||||
: m_org(org)
|
||||
, m_name(name)
|
||||
, m_type(type)
|
||||
{}
|
||||
#else
|
||||
RoutePoint(m2::PointD const & org, std::string const & name) : m_org(org), m_name(name) {}
|
||||
#endif
|
||||
m2::PointD m_org = m2::PointD::Zero();
|
||||
std::string m_name;
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
RouteMarkType m_type;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct SearchRequest
|
||||
@@ -82,9 +66,6 @@ public:
|
||||
explicit ParsedMapApi(std::string const & url) { SetUrlAndParse(url); }
|
||||
|
||||
UrlType SetUrlAndParse(std::string const & url);
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
UrlType ParseGeoNav(std::string const & raw, Framework & fm);
|
||||
#endif
|
||||
UrlType GetRequestType() const { return m_requestType; }
|
||||
std::string const & GetGlobalBackUrl() const { return m_globalBackUrl; }
|
||||
std::string const & GetAppName() const { return m_appName; }
|
||||
@@ -142,9 +123,6 @@ public:
|
||||
|
||||
private:
|
||||
void ParseMapParam(std::string const & key, std::string const & value, bool & correctOrder);
|
||||
#if defined(OMIM_OS_MAC) || defined(OMIM_OS_IPHONE)
|
||||
void SetRouteMark(std::string_view const raw, Framework & fm, RouteMarkType const type);
|
||||
#endif
|
||||
void ParseRouteParam(std::string const & key, std::string const & value, std::vector<std::string_view> & pattern);
|
||||
void ParseSearchParam(std::string const & key, std::string const & value);
|
||||
void ParseInAppFeatureHighlightParam(std::string const & key, std::string const & value);
|
||||
|
||||
@@ -470,10 +470,10 @@ void RoutingManager::OnLocationUpdate(location::GpsInfo const & info)
|
||||
RouterType RoutingManager::GetBestRouter(m2::PointD const & startPoint, m2::PointD const & finalPoint) const
|
||||
{
|
||||
// todo Implement something more sophisticated here (or delete the method).
|
||||
return routing::GetLastUsedRouter();
|
||||
return GetLastUsedRouter();
|
||||
}
|
||||
|
||||
RouterType routing::GetLastUsedRouter()
|
||||
RouterType RoutingManager::GetLastUsedRouter() const
|
||||
{
|
||||
string routerTypeStr;
|
||||
if (!settings::Get(kRouterTypeKey, routerTypeStr))
|
||||
|
||||
@@ -40,7 +40,6 @@ class CountryInfoGetter;
|
||||
namespace routing
|
||||
{
|
||||
class NumMwmIds;
|
||||
RouterType GetLastUsedRouter();
|
||||
}
|
||||
|
||||
class DataSource;
|
||||
@@ -173,6 +172,7 @@ public:
|
||||
m2::PointD GetRouteEndPoint() const { return m_routingSession.GetEndPoint(); }
|
||||
/// Returns the most situable router engine type.
|
||||
routing::RouterType GetBestRouter(m2::PointD const & startPoint, m2::PointD const & finalPoint) const;
|
||||
routing::RouterType GetLastUsedRouter() const;
|
||||
void SetLastUsedRouter(routing::RouterType type);
|
||||
// Sound notifications for turn instructions.
|
||||
void EnableTurnNotifications(bool enable) { m_routingSession.EnableTurnNotifications(enable); }
|
||||
|
||||
@@ -579,11 +579,6 @@ std::string GetCurrentMapLanguage()
|
||||
return languageCode;
|
||||
}
|
||||
|
||||
std::string GetMostPreferredLang()
|
||||
{
|
||||
return std::string(StringUtf8Multilang::GetLangByCode(GetPreferredLangIndexes()[0]));
|
||||
}
|
||||
|
||||
std::vector<int8_t> GetPreferredLangIndexes()
|
||||
{
|
||||
std::vector<int8_t> langs = {};
|
||||
|
||||
@@ -25,7 +25,6 @@ std::string GetCurrentMapTwine();
|
||||
std::string Normalize(std::string_view lang);
|
||||
std::string GetCurrentNorm();
|
||||
std::string GetCurrentMapLanguage();
|
||||
std::string GetMostPreferredLang();
|
||||
std::vector<int8_t> GetPreferredLangIndexes();
|
||||
|
||||
buffer_vector<std::string, 4> const & GetSystemPreferred();
|
||||
|
||||
@@ -49,13 +49,6 @@ bool FromString<string>(string const & strIn, string & strOut)
|
||||
return true;
|
||||
}
|
||||
|
||||
template <>
|
||||
bool FromString<std::string_view>(string const & strIn, std::string_view & strOut)
|
||||
{
|
||||
strOut = strIn;
|
||||
return true;
|
||||
}
|
||||
|
||||
namespace impl
|
||||
{
|
||||
template <class T, size_t N>
|
||||
|
||||
@@ -14,7 +14,7 @@ using namespace ftypes;
|
||||
|
||||
bool IsHighway(HighwayClass hwClass, bool isLink)
|
||||
{
|
||||
return (hwClass == HighwayClass::Motorway || hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) && !isLink;
|
||||
return (hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) && !isLink;
|
||||
}
|
||||
|
||||
bool IsSmallRoad(HighwayClass hwClass)
|
||||
@@ -102,7 +102,6 @@ double CalcEstimatedTimeToPass(double const distanceMeters, HighwayClass const h
|
||||
double speedKmph = 0;
|
||||
switch (highwayClass)
|
||||
{
|
||||
case HighwayClass::Motorway: speedKmph = 100.0; break;
|
||||
case HighwayClass::Trunk: speedKmph = 100.0; break;
|
||||
case HighwayClass::Primary: speedKmph = 70.0; break;
|
||||
case HighwayClass::Secondary: speedKmph = 70.0; break;
|
||||
|
||||
@@ -130,13 +130,11 @@ void QuerySaver::Deserialize(string const & data)
|
||||
{
|
||||
Length localeLength = ReadPrimitiveFromSource<Length>(reader);
|
||||
vector<char> locale(localeLength);
|
||||
if (locale.size() > 0) {
|
||||
reader.Read(&locale[0], localeLength);
|
||||
Length stringLength = ReadPrimitiveFromSource<Length>(reader);
|
||||
vector<char> str(stringLength);
|
||||
reader.Read(&str[0], stringLength);
|
||||
m_topQueries.emplace_back(make_pair(string(&locale[0], localeLength), string(&str[0], stringLength)));
|
||||
}
|
||||
reader.Read(&locale[0], localeLength);
|
||||
Length stringLength = ReadPrimitiveFromSource<Length>(reader);
|
||||
vector<char> str(stringLength);
|
||||
reader.Read(&str[0], stringLength);
|
||||
m_topQueries.emplace_back(make_pair(string(&locale[0], localeLength), string(&str[0], stringLength)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#define MWM_GEOLOCATION_SERVER ""
|
||||
#define DIFF_LIST_URL ""
|
||||
#define METASERVER_URL "https://cdn-us-1.comaps.app/servers"
|
||||
#define DEFAULT_URLS_JSON "[ \"https://cdn-us-2.comaps.tech/\", \"https://comaps.firewall-gateway.de/\", \"https://cdn-fi-1.comaps.app/\", \"https://comaps-cdn.s3-website.cloud.ru/\" ]"
|
||||
#define DEFAULT_URLS_JSON "[ \"https://cdn-us-2.comaps.tech/\", \"https://comaps.firewall-gateway.de/\", \"https://cdn-fi-1.comaps.app/\", \"https://comaps-cdn.s3.cloud.ru/\" ]"
|
||||
#define DEFAULT_CONNECTION_CHECK_IP "151.101.195.52" // For now the IP of comaps.app (Fastly CDN)
|
||||
#define TRAFFIC_DATA_BASE_URL ""
|
||||
#define USER_BINDING_PKCS12 ""
|
||||
|
||||
@@ -21,7 +21,6 @@ openlr::FunctionalRoadClass HighwayClassToFunctionalRoadClass(ftypes::HighwayCla
|
||||
{
|
||||
switch (hwClass)
|
||||
{
|
||||
case ftypes::HighwayClass::Motorway: return openlr::FunctionalRoadClass::FRC0;
|
||||
case ftypes::HighwayClass::Trunk: return openlr::FunctionalRoadClass::FRC0;
|
||||
case ftypes::HighwayClass::Primary: return openlr::FunctionalRoadClass::FRC1;
|
||||
case ftypes::HighwayClass::Secondary: return openlr::FunctionalRoadClass::FRC2;
|
||||
@@ -49,10 +48,11 @@ optional<Score> GetFrcScore(Graph::Edge const & e, FunctionalRoadClass functiona
|
||||
switch (functionalRoadClass)
|
||||
{
|
||||
case FunctionalRoadClass::FRC0:
|
||||
return hwClass == HighwayClass::Motorway || hwClass == HighwayClass::Trunk ? optional<Score>(kMaxScoreForFrc) : nullopt;
|
||||
// Note. HighwayClass::Trunk means motorway, motorway_link, trunk or trunk_link.
|
||||
return hwClass == HighwayClass::Trunk ? optional<Score>(kMaxScoreForFrc) : nullopt;
|
||||
|
||||
case FunctionalRoadClass::FRC1:
|
||||
return (HighwayClass::Motorway || hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) ? optional<Score>(kMaxScoreForFrc)
|
||||
return (hwClass == HighwayClass::Trunk || hwClass == HighwayClass::Primary) ? optional<Score>(kMaxScoreForFrc)
|
||||
: nullopt;
|
||||
|
||||
case FunctionalRoadClass::FRC2:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import os
|
||||
|
||||
import subprocess
|
||||
|
||||
class MapsGeneratorError(Exception):
|
||||
pass
|
||||
@@ -35,9 +35,24 @@ class FailedTest(MapsGeneratorError):
|
||||
|
||||
def wait_and_raise_if_fail(p):
|
||||
if p.wait() != os.EX_OK:
|
||||
args = p.args
|
||||
logs = p.output.name
|
||||
if p.error.name != logs:
|
||||
logs += " and " + p.error.name
|
||||
msg = f"The launch of {args.pop(0)} failed.\nArguments used: {' '.join(args)}\nSee details in {logs}"
|
||||
raise BadExitStatusError(msg)
|
||||
if type(p) is subprocess.Popen:
|
||||
args = p.args
|
||||
stdout = p.stdout
|
||||
stderr = p.stderr
|
||||
logs = None
|
||||
errors = None
|
||||
if type(stdout) is not type(None):
|
||||
logs = stdout.read(256).decode()
|
||||
if type(stderr) is not type(None):
|
||||
errors = stderr.read(256).decode()
|
||||
if errors != logs:
|
||||
logs += " and " + errors
|
||||
msg = f"The launch of {args.pop(0)} failed.\nArguments used: {' '.join(args)}\nSee details in {logs}"
|
||||
raise BadExitStatusError(msg)
|
||||
else:
|
||||
args = p.args
|
||||
logs = p.output.name
|
||||
if p.error.name != logs:
|
||||
logs += " and " + p.error.name
|
||||
msg = f"The launch of {args.pop(0)} failed.\nArguments used: {' '.join(args)}\nSee details in {logs}"
|
||||
raise BadExitStatusError(msg)
|
||||
|
||||
@@ -11,6 +11,7 @@ import multiprocessing
|
||||
import os
|
||||
import shutil
|
||||
import tarfile
|
||||
import errno
|
||||
from collections import defaultdict
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
from typing import AnyStr
|
||||
@@ -168,8 +169,18 @@ class StageDownloadDescriptions(Stage):
|
||||
)
|
||||
"""
|
||||
|
||||
src = "/home/planet/descriptions"
|
||||
# The src folder is hardcoded here and must be implemented on the map building machine
|
||||
src = "/home/planet/wikipedia/descriptions"
|
||||
# The dest folder will generally become build/*/intermediate_data/descriptions
|
||||
dest = env.paths.descriptions_path
|
||||
# An empty source folder is a big problem
|
||||
try:
|
||||
if os.path.isdir(src):
|
||||
print("Found %s" % (src))
|
||||
else:
|
||||
raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), src)
|
||||
except OSError as e:
|
||||
print("rmtree error: %s - %s" % (e.filename, e.strerror))
|
||||
# Empty folder "descriptions" can be already created.
|
||||
try:
|
||||
if os.path.isdir(dest):
|
||||
|
||||
@@ -9,6 +9,8 @@ from maps_generator.utils.file import download_file
|
||||
|
||||
def make_test_booking_data(max_days):
|
||||
def test_booking_data(env: Env, logger, *args, **kwargs):
|
||||
if not settings.HOTELS_URL:
|
||||
return None
|
||||
base_url, _ = settings.HOTELS_URL.rsplit("/", maxsplit=1)
|
||||
url = f"{base_url}/meta.json"
|
||||
meta_path = os.path.join(env.paths.tmp_dir(), "hotels-meta.json")
|
||||
|
||||
@@ -37,7 +37,7 @@ def multithread_run_if_one_country(func):
|
||||
if len(env.countries) == 1:
|
||||
kwargs.update({"threads_count": settings.THREADS_COUNT})
|
||||
elif country == 'Taiwan_North':
|
||||
kwargs.update({"threads_count": 4})
|
||||
kwargs.update({"threads_count": 16})
|
||||
func(env, country, **kwargs)
|
||||
|
||||
return wrap
|
||||
|
||||
109
tools/python/maps_generator/var/etc/map_generator.ini.prod
Normal file
@@ -0,0 +1,109 @@
|
||||
[Developer]
|
||||
# Path to the `comaps` source code repository:
|
||||
OMIM_PATH: /root/OM/comaps-init
|
||||
# A path with the generator_tool binary:
|
||||
BUILD_PATH: /root/OM/omim-build-relwithdebinfo
|
||||
#${Developer:OMIM_PATH}/../omim-build-release
|
||||
|
||||
|
||||
[Main]
|
||||
# A special small planet file will be downloaded if DEBUG is set to 1.
|
||||
DEBUG: 0
|
||||
# A main working directory. There is a subdirectory created for each generator run
|
||||
# which contains the planet and other downloads, temporary build files, logs and completed MWMs.
|
||||
MAIN_OUT_PATH: /root/OM/osm-maps
|
||||
# Path for storing caches for nodes, ways, relations.
|
||||
# If it's not set then caches are stored inside the directory of the current build.
|
||||
# CACHE_PATH: ${Main:MAIN_OUT_PATH}/cache
|
||||
|
||||
|
||||
[Generator tool]
|
||||
# Path to the data/ folder in the repository:
|
||||
USER_RESOURCE_PATH: ${Developer:OMIM_PATH}/data
|
||||
# Features stage only parallelism level. Set to 0 for auto detection.
|
||||
THREADS_COUNT_FEATURES_STAGE: 48
|
||||
# Do not change it. This is determined automatically.
|
||||
NODE_STORAGE: mem
|
||||
|
||||
|
||||
[Osm tools]
|
||||
# Path to osmctools binaries:
|
||||
OSM_TOOLS_PATH: /usr/bin/
|
||||
#${Developer:OMIM_PATH}/../osmctools
|
||||
# If the binaries are not found neither in the configured path nor system-wide,
|
||||
# then the tools are built from the sources:
|
||||
OSM_TOOLS_SRC_PATH: ${Developer:OMIM_PATH}/tools/osmctools
|
||||
|
||||
[Logging]
|
||||
# maps_generator's general (python output only) log file path and name.
|
||||
# More detailed logs that include output of the `generator_tool` binary
|
||||
# are located in the `logs/` subdir of a particular build directory,
|
||||
# e.g. `maps_build/2023_06_04__20_05_07/logs/`.
|
||||
LOG_FILE_PATH: ${Main:MAIN_OUT_PATH}/generation.log
|
||||
|
||||
|
||||
[External]
|
||||
# Planet file location. It should be a dump of OSM data in osm.pbf format.
|
||||
# By default its an entire planet from "planet.openstreetmap.org".
|
||||
# Or set it to a particular country/region extract from e.g. [Geofabrik](http://download.geofabrik.de/index.html).
|
||||
# Note that an entire planet generation takes 40+ hours on a 256GB RAM server (and 1TB+ disk space).
|
||||
# Stick to smaller extracts unless you have a machine this large.
|
||||
# Here and further, its possible to specify either an URL (to be downloaded automatically)
|
||||
# or a local file path like file:///path/to/file.
|
||||
# A sample URL to download a latest OSM dump for North Macedonia:
|
||||
PLANET_URL: file:///home/planet/planet/planet.o5m
|
||||
# Location of the md5 checksum of the planet file:
|
||||
PLANET_MD5_URL: ${External:PLANET_URL}.md5
|
||||
# A base url to the latest_coasts.geom and latest_coasts.rawgeom files.
|
||||
# For example, if PLANET_COASTS_URL = https://somesite.com/download/
|
||||
# then the https://somesite.com/download/latest_coasts.geom url will be used to download latest_coasts.geom and
|
||||
# the https://somesite.com/download/latest_coasts.rawgeom url will be used to download latest_coasts.rawgeom.
|
||||
# Comment to skip getting the coastlines files.
|
||||
PLANET_COASTS_URL: file:///home/planet/
|
||||
# Should be 'true' for an entire planet build to make a special routing section in World.mwm
|
||||
# for alerting about absent regions without which the route can't be built.
|
||||
# NEED_BUILD_WORLD_ROADS: true
|
||||
# Subway file location, see docs/SUBWAY_GENERATION.md if you want to generate your own file.
|
||||
# Comment to disable subway layer generation.
|
||||
|
||||
SUBWAY_URL: file:///home/planet/subway/subways.transit.json
|
||||
|
||||
# Location of the EXPERIMENTAL GTFS-extracted public transport transit files:
|
||||
# TRANSIT_URL:
|
||||
|
||||
# Urls for production maps generation.
|
||||
# UGC_URL:
|
||||
# HOTELS_URL:
|
||||
# PROMO_CATALOG_CITIES:
|
||||
# POPULARITY_URL:
|
||||
# FOOD_URL:
|
||||
# FOOD_TRANSLATIONS_URL:
|
||||
|
||||
SRTM_PATH: /home/planet/SRTM-patched-europe/
|
||||
ISOLINES_PATH: /home/planet/isolines/
|
||||
ADDRESSES_PATH: /home/planet/tiger/
|
||||
|
||||
# Local path (not url!) to .csv files.
|
||||
UK_POSTCODES_URL: /home/planet/postcodes/gb-postcode-data/gb_postcodes.csv
|
||||
US_POSTCODES_URL: /home/planet/postcodes/us-postcodes/uszips.csv
|
||||
|
||||
|
||||
[Stages]
|
||||
# Set to 1 to update the entire OSM planet file (as taken from "planet.openstreetmap.org")
|
||||
# via an osmupdate tool before the generation. Not for use with partial planet extracts.
|
||||
NEED_PLANET_UPDATE: 0
|
||||
# If you want to calculate diffs you need to specify where the old maps are,
|
||||
# e.g. ${Main:MAIN_OUT_PATH}/2021_03_16__09_00_00/
|
||||
DATA_ARCHIVE_DIR: ${Generator tool:USER_RESOURCE_PATH}
|
||||
# How many versions in the archive to use for diff calculation:
|
||||
DIFF_VERSION_DEPTH: 2
|
||||
|
||||
|
||||
[Common]
|
||||
# Default parallelism level for the most of jobs. Set to 0 for auto detection.
|
||||
THREADS_COUNT: 0
|
||||
|
||||
|
||||
[Stats]
|
||||
# Path to rules for calculating statistics by type:
|
||||
STATS_TYPES_CONFIG: ${Developer:OMIM_PATH}/tools/python/maps_generator/var/etc/stats_types_config.txt
|
||||
73
tools/unix/Dockerfile
Executable file
@@ -0,0 +1,73 @@
|
||||
# See run-docker.sh for cloning, building, and running the maps generator Docker routine
|
||||
FROM debian:latest
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ENV TZ=Etc/UTC
|
||||
|
||||
RUN apt-get update -qq \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
cargo \
|
||||
clang \
|
||||
cmake \
|
||||
curl \
|
||||
git \
|
||||
jq \
|
||||
libc++-dev \
|
||||
libfreetype-dev \
|
||||
libgeos-dev \
|
||||
libgl1-mesa-dev \
|
||||
libglvnd-dev \
|
||||
libharfbuzz-dev \
|
||||
libicu-dev \
|
||||
libqt6positioning6 \
|
||||
libqt6positioning6-plugins \
|
||||
libqt6svg6-dev \
|
||||
libsqlite3-dev \
|
||||
libxcursor-dev \
|
||||
libxi-dev \
|
||||
libxinerama-dev \
|
||||
libxrandr-dev \
|
||||
ninja-build \
|
||||
openssh-client \
|
||||
osmctools \
|
||||
osmium-tool \
|
||||
pyosmium \
|
||||
python3 \
|
||||
python3-pip \
|
||||
python3-venv \
|
||||
python-is-python3 \
|
||||
python3-dev \
|
||||
qt6-base-dev \
|
||||
qt6-positioning-dev \
|
||||
rclone \
|
||||
rustc \
|
||||
sshpass \
|
||||
vim \
|
||||
wget \
|
||||
wget2 \
|
||||
zlib1g-dev \
|
||||
&& rm -rf /var/cache/apt/* /var/lib/apt/lists/*;
|
||||
|
||||
# Allow pip to install system-wide in the container
|
||||
RUN rm -f /usr/lib/python*/EXTERNALLY-MANAGED
|
||||
RUN pip3 install "protobuf<4"
|
||||
|
||||
RUN mkdir /root/OM
|
||||
# When running, bind mount the repo here
|
||||
RUN mkdir /root/OM/comaps-init
|
||||
# And a volume to store the large output/temp files here
|
||||
RUN mkdir /root/OM/osm-maps
|
||||
# And the output of the app build
|
||||
RUN mkdir /root/OM/omim-build-release
|
||||
RUN mkdir /root/OM/omim-build-relwithdebinfo
|
||||
# And a volume to store >10gb files for the planet here
|
||||
RUN mkdir /home/planet
|
||||
|
||||
WORKDIR /root/OM/comaps-init
|
||||
|
||||
# For debugging
|
||||
#CMD /bin/bash
|
||||
|
||||
CMD /root/OM/comaps-init/tools/unix/docker_maps_generator.sh
|
||||
111
tools/unix/docker_maps_generator.sh
Executable file
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
#Volumes/paths for downloads:
|
||||
#home/planet/planet/planet.o5m
|
||||
#home/planet/planet/planet.o5m.md5
|
||||
#PLANET_COASTS_URL:file:///home/planet/planet/
|
||||
#home/planet/planet/latest_coasts.geom and latest_coasts.rawgeom
|
||||
#SUBWAY_URL: file:///home/planet/subway/beta.json
|
||||
#home/planet/subway/beta.json
|
||||
#HOTELS_URL:/home/planet/planet/kayak/
|
||||
#home/planet/planet/kayak/
|
||||
#SRTM_PATH:/home/planet/SRTM-patched-europe/
|
||||
#ISOLINES_PATH:/home/planet/planet/isolines/
|
||||
#ADDRESSES_PATH:/home/planet/planet/tiger/
|
||||
#UK_POSTCODES_URL:/home/planet/postcodes/gb-postcode-data/gb_postcodes.csv
|
||||
#US_POSTCODES_URL:/home/planet/postcodes/us-postcodes/uszips.csv
|
||||
|
||||
echo "<$(date +%T)> Setting git as safe dir..."
|
||||
|
||||
git config --global --add safe.directory /root/OM/comaps-init
|
||||
|
||||
echo "<$(date +%T)> Starting..."
|
||||
|
||||
# Prepare paths
|
||||
#
|
||||
# Already created by Dockerfile or CI/CD:
|
||||
# /root/OM
|
||||
# /root/OM/comaps-init
|
||||
# /root/OM/omim-build-release
|
||||
# /root/OM/omim-build-relwithdebinfo
|
||||
# /root/OM/osm-maps
|
||||
# /home/planet
|
||||
#
|
||||
mkdir -p /root/.config/CoMaps # Odd mkdir permission errors in generator_tool in Docker without these
|
||||
chmod -R 777 /root/.config
|
||||
mkdir -p ~/.config/rclone
|
||||
mkdir -p /home/planet/planet/isolines/
|
||||
mkdir -p /home/planet/planet/kayak/
|
||||
mkdir -p /home/planet/planet/tiger/
|
||||
mkdir -p /home/planet/postcodes/gb-postcode-data/
|
||||
mkdir -p /home/planet/postcodes/us-postcodes/
|
||||
mkdir -p /home/planet/SRTM-patched-europe/
|
||||
mkdir -p /home/planet/subway
|
||||
|
||||
# echo "Writing rclone config..."
|
||||
# echo "[r2]" > ~/.config/rclone/rclone.conf
|
||||
# echo "type = s3" >> ~/.config/rclone/rclone.conf
|
||||
# echo "provider = Cloudflare" >> ~/.config/rclone/rclone.conf
|
||||
# echo "access_key_id = $S3_KEY_ID" >> ~/.config/rclone/rclone.conf
|
||||
# echo "secret_access_key = $S3_SECRET_KEY" >> ~/.config/rclone/rclone.conf
|
||||
# echo "region = auto" >> ~/.config/rclone/rclone.conf
|
||||
# echo "endpoint = $S3_ENDPOINT" >> ~/.config/rclone/rclone.conf
|
||||
# # S3_BUCKET is used below during uploading
|
||||
|
||||
echo "<$(date +%T)> Running ./configure.sh ..."
|
||||
cd /root/OM/comaps-init
|
||||
./configure.sh --skip-map-download --skip-generate-symbols
|
||||
|
||||
echo "<$(date +%T)> Compiling tools..."
|
||||
cd /root/OM/comaps-init
|
||||
./tools/unix/build_omim.sh -R generator_tool
|
||||
./tools/unix/build_omim.sh -R world_roads_builder_tool
|
||||
./tools/unix/build_omim.sh -R mwm_diff_tool
|
||||
cd tools/python/maps_generator
|
||||
python3 -m venv /tmp/venv
|
||||
/tmp/venv/bin/pip3 install -r requirements_dev.txt
|
||||
|
||||
echo "<$(date +%T)> Copying map generator INI..."
|
||||
cp var/etc/map_generator.ini.prod var/etc/map_generator.ini
|
||||
|
||||
# May be unnecessary when running world
|
||||
# /tmp/venv/bin/python -m maps_generator --coasts
|
||||
# save to /path/to/coasts WorldCoasts.geom as latest_coasts.geom and WorldCoasts.rawgeom latest_coasts.rawgeom
|
||||
# (from https://github.com/mapsme/omim/issues/11994)
|
||||
|
||||
cd /home/planet/planet
|
||||
if [ ! -f planet-latest.osm.pbf ]; then
|
||||
echo "<$(date +%T)> Downloading planet-latest.osm.pbf..."
|
||||
curl -OL https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf
|
||||
echo "<$(date +%T)> Downloading planet-latest.osm.pbf.md5..."
|
||||
curl -OL https://ftpmirror.your.org/pub/openstreetmap/pbf/planet-latest.osm.pbf.md5
|
||||
else
|
||||
echo "<$(date +%T)> planet-latest.osm.pbf exists, not downloading..."
|
||||
fi
|
||||
|
||||
#curl -OL https://download.geofabrik.de/north-america/us-west-latest.osm.pbf
|
||||
#curl -OL https://download.geofabrik.de/north-america/us-west-latest.osm.pbf.md5
|
||||
# (rename us-west-latest to planet-latest and edit the md5 file accordingly)
|
||||
if [ ! -f planet.o5m ]; then
|
||||
echo "<$(date +%T)> Converting planet-latest.osm.pbf to planet.o5m..."
|
||||
osmconvert planet-latest.osm.pbf -o=planet.o5m
|
||||
else
|
||||
echo "<$(date +%T)> planet.o5m exists, not converting..."
|
||||
fi
|
||||
# (currently unused:) /root/OM/comaps-init/tools/unix/update_planet.sh planet.o5m
|
||||
|
||||
|
||||
echo "<$(date +%T)> Generating maps..."
|
||||
cd /root/OM/comaps-init/tools/python
|
||||
/tmp/venv/bin/python -m maps_generator --skip="MwmDiffs"
|
||||
#/tmp/venv/bin/python -m maps_generator --skip="MwmDiffs" --continue
|
||||
|
||||
# do not use --production except for Kayak/recommendation/popularity/food data
|
||||
#/tmp/venv/bin/python -m maps_generator --countries="World, WorldCoasts, US_Oregon_*, US_California_*, US_Washington_*" --production
|
||||
#/tmp/venv/bin/python -m maps_generator --countries="US_Oregon_Portland" --skip="MwmDiffs"
|
||||
#/tmp/venv/bin/python -m maps_generator --countries="Macedonia" --skip="MwmDiffs"
|
||||
|
||||
echo "<$(date +%T)> DONE"
|
||||
|
||||
@@ -22,14 +22,18 @@ function BuildDrawingRules() {
|
||||
-o "$DATA_PATH/drules_proto$suffix" \
|
||||
-p "$DATA_PATH/styles/$styleType/include/"
|
||||
# Output diff and store to a file
|
||||
diff -u "$DATA_PATH"/drules_proto$suffix.txt{.prev,} | tee "$DATA_PATH"/drules_proto$suffix.txt.diff
|
||||
if [ -f "$DATA_PATH/drules_proto$suffix.txt.prev" ]; then
|
||||
diff -u "$DATA_PATH/drules_proto$suffix.txt.prev" "$DATA_PATH/drules_proto$suffix.txt" | tee "$DATA_PATH/drules_proto$suffix.txt.diff" || true
|
||||
fi
|
||||
}
|
||||
|
||||
outputs=(classificator.txt types.txt visibility.txt colors.txt patterns.txt drules_proto.txt)
|
||||
# Store old versions for diffs
|
||||
for item in ${outputs[*]}
|
||||
do
|
||||
mv $DATA_PATH/$item{,.prev} || true
|
||||
if [ -f "$DATA_PATH/$item" ]; then
|
||||
mv -f "$DATA_PATH/$item" "$DATA_PATH/$item.prev"
|
||||
fi
|
||||
done
|
||||
|
||||
# Building drawing rules
|
||||
@@ -63,7 +67,11 @@ python3 "$OMIM_PATH/tools/python/stylesheet/drules_merge.py" \
|
||||
# Output diffs and store to files
|
||||
for item in ${outputs[*]}
|
||||
do
|
||||
diff -u "$DATA_PATH"/$item{.prev,} | tee "$DATA_PATH"/$item.diff
|
||||
if [ -f "$DATA_PATH/$item.prev" ] && [ -f "$DATA_PATH/$item" ]; then
|
||||
diff -u "$DATA_PATH/$item.prev" "$DATA_PATH/$item" | tee "$DATA_PATH/$item.diff" || true
|
||||
else
|
||||
echo "Skipping diff for $item (first run or file missing)"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Diffs for all changes are stored in $DATA_PATH/*.txt.diff"
|
||||
@@ -12,8 +12,9 @@ GPLAY_PATH="$ANDROID_PATH/google/play/release-notes"
|
||||
pushd $ANDROID_PATH >/dev/null
|
||||
|
||||
echo "Deleting all GPlay relnotes symlinks in $GPLAY_PATH"
|
||||
rm -rf $GPLAY_PATH
|
||||
mkdir -p $GPLAY_PATH
|
||||
pushd $GPLAY_PATH >/dev/null
|
||||
rm -rf *
|
||||
popd >/dev/null
|
||||
|
||||
pushd fdroid/play/listings >/dev/null
|
||||
|
||||
|
||||
@@ -20,9 +20,9 @@ export SKIP_PLANET_UPDATE="1"
|
||||
# If unavailable then replace with a local file.
|
||||
# TODO: keep the downloaded csv file from the latest run.
|
||||
#export CITIES_INFO_URL=""
|
||||
export TMPDIR="$BUILD_PATH/subways"
|
||||
export TMPDIR="$BUILD_PATH/subway"
|
||||
# The output file, which needs post-processing by transit_graph_generator.py
|
||||
export MAPSME="$SUBWAYS_PATH/subways.json"
|
||||
export MAPSME="$SUBWAYS_PATH/subway.json"
|
||||
|
||||
# Produce additional files needed for https://cdn.organicmaps.app/subway/
|
||||
export HTML_DIR="$SUBWAYS_VALIDATOR_PATH"
|
||||
@@ -30,7 +30,12 @@ export DUMP="$SUBWAYS_VALIDATOR_PATH"
|
||||
export GEOJSON="$SUBWAYS_VALIDATOR_PATH"
|
||||
export DUMP_CITY_LIST="$SUBWAYS_VALIDATOR_PATH/cities.txt"
|
||||
|
||||
"$SUBWAYS_REPO_PATH/scripts/process_subways.sh" 2>&1 | tee "$SUBWAYS_LOG"
|
||||
# cd to subways repo so relative paths work in the script
|
||||
pushd "$SUBWAYS_REPO_PATH"
|
||||
echo "Running process_subways.sh:"
|
||||
ls -al
|
||||
./scripts/process_subways.sh # 2>&1 | tee "$SUBWAYS_LOG"
|
||||
popd
|
||||
|
||||
# Make render.html available for map visualization on the web
|
||||
cp -r "$SUBWAYS_REPO_PATH"/render/* "$SUBWAYS_VALIDATOR_PATH/"
|
||||
@@ -39,7 +44,7 @@ TRANSIT_TOOL_PATH="$REPO_PATH/tools/python/transit"
|
||||
SUBWAYS_GRAPH_FILE="$SUBWAYS_PATH/subways.transit.json"
|
||||
|
||||
activate_venv_at_path "$TRANSIT_TOOL_PATH"
|
||||
"$PYTHON" "$TRANSIT_TOOL_PATH/transit_graph_generator.py" "$MAPSME" "$SUBWAYS_GRAPH_FILE" 2>&1 | tee -a "$SUBWAYS_LOG"
|
||||
"$PYTHON" "$TRANSIT_TOOL_PATH/transit_graph_generator.py" "$MAPSME" "$SUBWAYS_GRAPH_FILE" # 2>&1 | tee -a "$SUBWAYS_LOG"
|
||||
deactivate
|
||||
|
||||
echo "Generated subways transit graph file:"
|
||||
|
||||