Compare commits
56 Commits
x7z4w-grap
...
map-per-di
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c09831caaa | ||
|
|
005f731faa | ||
|
|
237894cd45 | ||
|
|
323b49388d | ||
|
|
da9f2af963 | ||
|
|
f292298c4e | ||
|
|
be15215b83 | ||
|
|
4ae64791ff | ||
|
|
1de35bb5f8 | ||
|
|
7b7df6ff2e | ||
|
|
33e2f4854e | ||
|
|
5b4fa55e83 | ||
|
|
83256c4895 | ||
|
|
94542456a2 | ||
|
|
dd620c3f0c | ||
|
|
a42db17858 | ||
|
|
738d0641ca | ||
|
|
4f5f8782fe | ||
|
|
a886270dda | ||
|
|
66609ff08b | ||
|
|
c8bfeb8e96 | ||
|
|
7fc5ed494b | ||
|
|
d9850f506a | ||
|
|
f16d14e07f | ||
|
|
7852cdb5a5 | ||
|
|
9a96096066 | ||
|
|
f72c4a28d9 | ||
|
|
68bb78b00d | ||
|
|
b9d4f082de | ||
|
|
7e40a0e642 | ||
|
|
0d3d1823d8 | ||
|
|
09e08c4c8f | ||
|
|
a0a5459b15 | ||
|
|
6e57f9a2ba | ||
|
|
d971c51fd1 | ||
|
|
ac23642462 | ||
|
|
cfe1ce2c67 | ||
|
|
e07b2e52b3 | ||
|
|
24f59a1344 | ||
|
|
85f4c1c3eb | ||
|
|
3a9faecc3d | ||
|
|
f0e078701e | ||
|
|
7e27971605 | ||
|
|
9267622494 | ||
|
|
82a4843431 | ||
|
|
5bd7a284fa | ||
|
|
84ecbaa63c | ||
|
|
91ba38df56 | ||
|
|
31dcb954b1 | ||
|
|
8b4eab3444 | ||
|
|
90c12003bd | ||
|
|
a4909a0554 | ||
|
|
1b9e9f5091 | ||
|
|
bd78355263 | ||
|
|
b3c188564e | ||
|
|
e891ffa5d1 |
@@ -5,10 +5,10 @@ on:
|
||||
jobs:
|
||||
description: 'Which job(s) to run right now?'
|
||||
required: true
|
||||
default: 'all'
|
||||
default: 'all-except-upload'
|
||||
type: choice
|
||||
options:
|
||||
- all
|
||||
- all-except-upload
|
||||
- copy-coasts
|
||||
- planet
|
||||
- wiki
|
||||
@@ -16,30 +16,82 @@ on:
|
||||
- subways
|
||||
- tiger
|
||||
- maps
|
||||
- upload
|
||||
map-generator-continue:
|
||||
description: 'Continue previous map generation?'
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
map-generator-countries:
|
||||
description: 'Generate specific MWMs? (i.e. "US_New York_*, foo")'
|
||||
required: false
|
||||
type: string
|
||||
reset:
|
||||
description: 'Reset part of the system?'
|
||||
required: false
|
||||
default: 'no'
|
||||
type: choice
|
||||
options:
|
||||
- 'no'
|
||||
- wiki-ratelimit
|
||||
|
||||
## 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 }}
|
||||
MWMCONTINUE: ${{ inputs.map-generator-continue }}
|
||||
MWMCOUNTRIES: ${{ inputs.map-generator-countries }}
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
TZ: Etc/UTC
|
||||
|
||||
jobs:
|
||||
copy-coasts:
|
||||
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all'
|
||||
name: Copy Previously Generated Coasts
|
||||
clone-repos:
|
||||
name: Clone Git Repos
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal:/mnt/4tbexternal
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
steps:
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Checkout main repo
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Cloning $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY branch $FORGEJO_REF_NAME"
|
||||
cd ~
|
||||
git clone --recurse-submodules --shallow-submodules -b $FORGEJO_REF_NAME --single-branch $FORGEJO_SERVER_URL/$FORGEJO_REPOSITORY.git comaps
|
||||
- name: Checkout wikiparser repo
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~
|
||||
git clone https://codeberg.org/comaps/wikiparser.git
|
||||
- name: Checkout subways repo
|
||||
shell: bash
|
||||
run: |
|
||||
cd ~
|
||||
git clone https://codeberg.org/comaps/subways.git
|
||||
|
||||
copy-coasts:
|
||||
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all-except-upload'
|
||||
name: Copy Previously Generated Coasts
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
@@ -47,336 +99,403 @@ 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
|
||||
echo "WorldCoasts available:"
|
||||
ls -al /mnt/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.*
|
||||
|
||||
if [ -f /mnt/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom ]; then
|
||||
|
||||
echo "Before:"
|
||||
ls -al /home/planet/latest_coasts*
|
||||
|
||||
cp -p /mnt/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.geom /home/planet/latest_coasts.geom
|
||||
cp -p /mnt/4tbexternal/osm-maps/*/intermediate_data/WorldCoasts.rawgeom /home/planet/latest_coasts.rawgeom
|
||||
|
||||
echo "After:"
|
||||
ls -al /home/planet/latest_coasts*
|
||||
|
||||
else
|
||||
|
||||
echo "No WorldCoasts found."
|
||||
|
||||
fi
|
||||
|
||||
update-planet:
|
||||
if: inputs.jobs == 'planet' || inputs.jobs == 'all'
|
||||
if: inputs.jobs == 'planet' || inputs.jobs == 'all-except-upload'
|
||||
name: Update Planet
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
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
|
||||
# TODO: replace wget2 with curl -Z
|
||||
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
|
||||
else
|
||||
echo "planet-latest.osm.pbf was found, raw download not required."
|
||||
fi
|
||||
- name: Update Planet
|
||||
shell: bash
|
||||
run: |
|
||||
cd /media/4tbexternal/osm-planet/planet/
|
||||
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -vv --size 16384
|
||||
cd /home/planet/planet/
|
||||
rm -f planet-latest-new.osm.pbf
|
||||
pyosmium-up-to-date planet-latest.osm.pbf -o planet-latest-new.osm.pbf -v --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
|
||||
# TODO: better to run osmupdate (not convert) just before starting the maps jobs - for max fresh data.
|
||||
run: |
|
||||
echo "Starting..."
|
||||
cd /home/planet/planet/
|
||||
osmconvert -v --drop-author --drop-version --hash-memory=4000 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'
|
||||
if: inputs.jobs == 'wiki' || inputs.jobs == 'all-except-upload'
|
||||
name: Update Wikipedia
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
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
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Check for planet file
|
||||
shell: bash
|
||||
# TODO: remove debug output
|
||||
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: Only get new dumps once per 30 days
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ '${{ inputs.reset }}' == 'wiki-ratelimit' ]]; then
|
||||
echo "Bypassing wiki rate limit upon request."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
datediff() {
|
||||
d1=$(date -d "$1" +%s)
|
||||
d2=$(date -d "$2" +%s)
|
||||
echo $(( (d1 - d2) / 86400 ))
|
||||
}
|
||||
RECENTDUMPDATE=$(find /home/planet/wikipedia/dumps/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f6)
|
||||
TODAY=$(date +%Y%m%d)
|
||||
DATEDIFF=$(datediff $TODAY $RECENTDUMPDATE)
|
||||
if [ $DATEDIFF -lt 30 ]; then
|
||||
echo "ERROR: The most recent wiki dump is from $RECENTDUMPDATE, $DATEDIFF days ago. Wikimedia limits users to 15 snapshot requests per month."
|
||||
echo "Set the 'reset' option to 'wiki-ratelimit' to bypass this."
|
||||
ls -al /home/planet/wikipedia/dumps/
|
||||
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? pastk: no need, its being updated / augmented
|
||||
mkdir -p /home/planet/wikipedia/dumps
|
||||
mkdir -p /home/planet/wikipedia/build
|
||||
cd ~/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"
|
||||
- name: Check that the latest dumps are present, recent, and not super tiny
|
||||
shell: bash
|
||||
run: |
|
||||
FAILCHECK=0
|
||||
|
||||
# Check all .tar.gz files in /home/planet/wikipedia/dumps/latest/
|
||||
for file in /home/planet/wikipedia/dumps/latest/*.tar.gz; do
|
||||
# Check if file exists (handles case where glob doesn't match)
|
||||
[ -e "$file" ] || continue
|
||||
|
||||
# Get file size in MB and modification time in days
|
||||
size_mb=$(stat -f%z "$file" 2>/dev/null | awk '{print int($1/1024/1024)}' || stat -c%s "$file" | awk
|
||||
'{print int($1/1024/1024)}')
|
||||
days_old=$(find "$file" -mtime -7 | wc -l)
|
||||
|
||||
# Verify conditions
|
||||
if [ "$size_mb" -lt 100 ]; then
|
||||
echo "FAIL: $file is only ${size_mb}MB (< 100MB)"
|
||||
FAILCHECK=1
|
||||
elif [ "$days_old" -eq 0 ]; then
|
||||
echo "FAIL: $file is older than 7 days"
|
||||
ls -al $file
|
||||
FAILCHECK=1
|
||||
else
|
||||
echo "PASS: $file (${size_mb}MB, modified within 7 days)"
|
||||
fi
|
||||
done
|
||||
|
||||
exit $FAILCHECK
|
||||
- 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=Wiki update is done!'
|
||||
|
||||
update-isolines:
|
||||
if: inputs.jobs == 'isolines' || inputs.jobs == 'all'
|
||||
if: inputs.jobs == 'isolines' || inputs.jobs == 'all-except-upload'
|
||||
name: Update Isolines
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
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
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
# 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
|
||||
# TODO: preserve previous isolines version?
|
||||
# TODO: cleanup the tmp-tiles dir after completion
|
||||
run: |
|
||||
cd /media/4tbexternal/comaps-init/
|
||||
./tools/unix/build_omim.sh -R topography_generator_tool
|
||||
rm -rf ../osm-planet/isolines/
|
||||
mkdir ../osm-planet/isolines/
|
||||
../omim-build-relwithdebinfo/topography_generator_tool \
|
||||
cd ~/comaps/
|
||||
./tools/unix/build_omim.sh -p ~ -R topography_generator_tool
|
||||
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/ \
|
||||
--threads=22
|
||||
--srtm_path=/home/planet/SRTM-patched-europe/ \
|
||||
--threads=96
|
||||
- name: Check isolines
|
||||
shell: bash
|
||||
run: |
|
||||
NUMISO=$(ls -al /home/planet/isolines/*.isolines | wc -l)
|
||||
echo "Found $NUMISO isolines"
|
||||
if [ $NUMISO -lt 10 ]; then
|
||||
echo "ERROR: Did generation fail?"
|
||||
exit 1
|
||||
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=Isolines are done!'
|
||||
|
||||
update-subways:
|
||||
if: inputs.jobs == 'subways' || inputs.jobs == 'all'
|
||||
if: inputs.jobs == 'subways' || inputs.jobs == 'all-except-upload'
|
||||
name: Update Subways
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
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
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Update Subways
|
||||
shell: bash
|
||||
run: |
|
||||
cd /media/4tbexternal/comaps-init/
|
||||
cd ~/comaps/
|
||||
cp tools/unix/maps/settings.sh.prod tools/unix/maps/settings.sh
|
||||
./tools/unix/maps/generate_subways.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=Subways are done!'
|
||||
|
||||
update-tiger:
|
||||
if: inputs.jobs == 'tiger' || inputs.jobs == 'all'
|
||||
if: inputs.jobs == 'tiger' || inputs.jobs == 'all-except-upload'
|
||||
name: Update TIGER
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
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
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Build address_parser
|
||||
shell: bash
|
||||
run: |
|
||||
cd /media/4tbexternal/comaps-init
|
||||
rm -rf ../omim-build-relwithdebinfo/CMakeCache.txt
|
||||
rm -rf ../omim-build-relwithdebinfo/CMakeFiles
|
||||
./tools/unix/build_omim.sh -R address_parser_tool
|
||||
cd ~/comaps
|
||||
#rm -rf ~/omim-build-relwithdebinfo/CMakeCache.txt
|
||||
#rm -rf ~/omim-build-relwithdebinfo/CMakeFiles
|
||||
./tools/unix/build_omim.sh -p ~ -R address_parser_tool
|
||||
- name: Update TIGER from Nominatim
|
||||
shell: bash
|
||||
# TODO: use curl instead of wget2
|
||||
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 ~/comaps
|
||||
tar -xOzf /home/planet/tiger-nominatim-preprocessed-latest.csv.tar.gz | ~/omim-build-relwithdebinfo/address_parser_tool --output_path=/home/planet/tiger
|
||||
|
||||
generate-maps:
|
||||
if: inputs.jobs == 'maps' || inputs.jobs == 'all'
|
||||
if: inputs.jobs == 'maps' || inputs.jobs == 'all-except-upload'
|
||||
name: Generate Maps
|
||||
runs-on: mapfilemaker
|
||||
needs:
|
||||
- clone-repos
|
||||
timeout-minutes: 40320
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /media/4tbexternal:/media/4tbexternal
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
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
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: "~"
|
||||
key: cache-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
- name: Make output folders if necessary
|
||||
shell: bash
|
||||
run: |
|
||||
if [ ! -d /media/4tbexternal/osm-maps ]; then
|
||||
mkdir -p /media/4tbexternal/osm-maps
|
||||
if [ ! -d /mnt/4tbexternal/osm-maps ]; then
|
||||
mkdir -p /mnt/4tbexternal/osm-maps
|
||||
fi
|
||||
- name: Get SRTM if necessary
|
||||
# TODO: it should be a separate step like Wiki or isolines
|
||||
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 ~/comaps
|
||||
bash ./tools/unix/maps/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'
|
||||
name: Upload Maps
|
||||
runs-on: mapfilemaker
|
||||
container:
|
||||
image: codeberg.org/comaps/maps_generator:f6d53d54f794
|
||||
volumes:
|
||||
- /mnt/4tbexternal/:/mnt/4tbexternal/
|
||||
- /mnt/4tbexternal/osm-planet:/home/planet
|
||||
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
|
||||
- name: Upload map files to CDNs
|
||||
shell: bash
|
||||
run: |
|
||||
shopt -s nullglob
|
||||
buildfolder=$(find /mnt/4tbexternal/osm-maps/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f5)
|
||||
builddate=$(find /mnt/4tbexternal/osm-maps/*/ -mindepth 1 -maxdepth 1 -iname "2*" -type d | sort -n -r | head -1 | cut -d/ -f6)
|
||||
mwmfiles=( /mnt/4tbexternal/osm-maps/$buildfolder/$builddate/*.mwm )
|
||||
|
||||
if (( ${#mwmfiles[@]} )); then
|
||||
echo "<$(date +%T)> Uploading maps from $buildfolder/$builddate..."
|
||||
cd ~/comaps/tools/unix/maps
|
||||
./upload_to_cdn.sh /mnt/4tbexternal/osm-maps/$buildfolder/$builddate
|
||||
echo "<$(date +%T)> Finished uploading maps from $buildfolder/$builddate."
|
||||
else
|
||||
echo "<$(date +%T)> No MWM files in /mnt/4tbexternal/osm-maps/$buildfolder/$builddate/*.mwm, not uploading maps."
|
||||
echo "<$(date +%T)> Found top level: $(ls -alt /mnt/4tbexternal/osm-maps/*)"
|
||||
echo "<$(date +%T)> Found second level: $(ls -alt /mnt/4tbexternal/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
|
||||
|
||||
@@ -175,10 +175,10 @@ if (NOT PLATFORM_IPHONE AND NOT PLATFORM_ANDROID)
|
||||
find_package(Qt6 COMPONENTS REQUIRED ${qt_components} PATHS $ENV{QT_PATH} /opt/homebrew/opt/qt@6 /usr/local/opt/qt@6 /usr/lib/x86_64-linux-gnu/qt6)
|
||||
|
||||
set(MINIMUM_REQUIRED_QT_VERSION 6.4.0)
|
||||
if (Qt6Widgets_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION})
|
||||
message(FATAL_ERROR "Unsupported Qt version: ${Qt6Widgets_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}")
|
||||
if (Qt6_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION})
|
||||
message(FATAL_ERROR "Unsupported Qt version: ${Qt6_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}")
|
||||
else()
|
||||
message(STATUS "Found Qt version: ${Qt6Widgets_VERSION}")
|
||||
message(STATUS "Found Qt version: ${Qt6_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -32,7 +32,8 @@ public class DrivingOptionsScreen extends BaseMapScreen
|
||||
new DrivingOption(RoadType.Dirty, R.string.avoid_unpaved),
|
||||
new DrivingOption(RoadType.Ferry, R.string.avoid_ferry),
|
||||
new DrivingOption(RoadType.Motorway, R.string.avoid_motorways),
|
||||
new DrivingOption(RoadType.Steps, R.string.avoid_steps)};
|
||||
new DrivingOption(RoadType.Steps, R.string.avoid_steps),
|
||||
new DrivingOption(RoadType.Paved, R.string.avoid_paved)};
|
||||
|
||||
@NonNull
|
||||
private final Map<RoadType, Boolean> mInitialDrivingOptionsState = new HashMap<>();
|
||||
|
||||
@@ -357,7 +357,7 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
|
||||
|
||||
private MenuBottomSheetItem getCancelMenuItem()
|
||||
{
|
||||
return new MenuBottomSheetItem(R.string.cancel, R.drawable.ic_cancel, () -> onCancelActionSelected(mSelectedItem));
|
||||
return new MenuBottomSheetItem(R.string.cancel, R.drawable.ic_close, () -> onCancelActionSelected(mSelectedItem));
|
||||
}
|
||||
|
||||
private class ItemViewHolder extends BaseInnerViewHolder<CountryItem>
|
||||
|
||||
@@ -153,6 +153,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
private final Map<Metadata.MetadataType, View> mDetailsBlocks = new HashMap<>();
|
||||
private final Map<Metadata.MetadataType, View> mSocialMediaBlocks = new HashMap<>();
|
||||
private MaterialButton mReset;
|
||||
private MaterialButton mDisused;
|
||||
|
||||
private EditorHostFragment mParent;
|
||||
|
||||
@@ -827,6 +828,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
osmInfo.setMovementMethod(LinkMovementMethod.getInstance());
|
||||
mReset = view.findViewById(R.id.reset);
|
||||
mReset.setOnClickListener(this);
|
||||
mDisused = view.findViewById(R.id.disused);
|
||||
mDisused.setOnClickListener(this);
|
||||
|
||||
mDetailsBlocks.put(Metadata.MetadataType.FMD_OPEN_HOURS, blockOpeningHours);
|
||||
mDetailsBlocks.put(Metadata.MetadataType.FMD_PHONE_NUMBER, blockPhone);
|
||||
@@ -894,6 +897,8 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
mParent.addLanguage();
|
||||
else if (id == R.id.reset)
|
||||
reset();
|
||||
else if (id == R.id.disused)
|
||||
placeDisused();
|
||||
else if (id == R.id.block_outdoor_seating)
|
||||
mOutdoorSeating.toggle();
|
||||
}
|
||||
@@ -939,9 +944,12 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
if (mParent.addingNewObject())
|
||||
{
|
||||
UiUtils.hide(mReset);
|
||||
UiUtils.hide(mDisused);
|
||||
return;
|
||||
}
|
||||
|
||||
mDisused.setVisibility(Editor.nativeCanMarkPlaceAsDisused() ? View.VISIBLE : View.GONE);
|
||||
|
||||
if (Editor.nativeIsMapObjectUploaded())
|
||||
{
|
||||
mReset.setText(R.string.editor_place_doesnt_exist);
|
||||
@@ -1014,6 +1022,19 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
||||
dialogFragment.setTextSaveListener(this::commitPlaceDoesntExists);
|
||||
}
|
||||
|
||||
private void placeDisused()
|
||||
{
|
||||
new MaterialAlertDialogBuilder(requireActivity(), R.style.MwmTheme_AlertDialog)
|
||||
.setTitle(R.string.editor_mark_business_vacant_title)
|
||||
.setMessage(R.string.editor_mark_business_vacant_description)
|
||||
.setPositiveButton(R.string.editor_submit, (dlg, which) -> {
|
||||
Editor.nativeMarkPlaceAsDisused();
|
||||
mParent.processEditedFeatures();
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
private void commitPlaceDoesntExists(@NonNull String text)
|
||||
{
|
||||
Editor.nativePlaceDoesNotExist(text);
|
||||
|
||||
@@ -358,7 +358,7 @@ public class EditorHostFragment
|
||||
.show();
|
||||
}
|
||||
|
||||
private void processEditedFeatures()
|
||||
public void processEditedFeatures()
|
||||
{
|
||||
if (OsmOAuth.isAuthorized())
|
||||
{
|
||||
|
||||
@@ -90,28 +90,36 @@ public class DrivingOptionsFragment extends BaseMwmToolbarFragment
|
||||
{
|
||||
SwitchCompat tollsBtn = root.findViewById(R.id.avoid_tolls_btn);
|
||||
tollsBtn.setChecked(RoutingOptions.hasOption(RoadType.Toll));
|
||||
CompoundButton.OnCheckedChangeListener tollBtnListener = new ToggleRoutingOptionListener(RoadType.Toll);
|
||||
CompoundButton.OnCheckedChangeListener tollBtnListener = new ToggleRoutingOptionListener(RoadType.Toll, root);
|
||||
tollsBtn.setOnCheckedChangeListener(tollBtnListener);
|
||||
|
||||
SwitchCompat motorwaysBtn = root.findViewById(R.id.avoid_motorways_btn);
|
||||
motorwaysBtn.setChecked(RoutingOptions.hasOption(RoadType.Motorway));
|
||||
CompoundButton.OnCheckedChangeListener motorwayBtnListener = new ToggleRoutingOptionListener(RoadType.Motorway);
|
||||
CompoundButton.OnCheckedChangeListener motorwayBtnListener =
|
||||
new ToggleRoutingOptionListener(RoadType.Motorway, root);
|
||||
motorwaysBtn.setOnCheckedChangeListener(motorwayBtnListener);
|
||||
|
||||
SwitchCompat ferriesBtn = root.findViewById(R.id.avoid_ferries_btn);
|
||||
ferriesBtn.setChecked(RoutingOptions.hasOption(RoadType.Ferry));
|
||||
CompoundButton.OnCheckedChangeListener ferryBtnListener = new ToggleRoutingOptionListener(RoadType.Ferry);
|
||||
CompoundButton.OnCheckedChangeListener ferryBtnListener = new ToggleRoutingOptionListener(RoadType.Ferry, root);
|
||||
ferriesBtn.setOnCheckedChangeListener(ferryBtnListener);
|
||||
|
||||
SwitchCompat dirtyRoadsBtn = root.findViewById(R.id.avoid_dirty_roads_btn);
|
||||
dirtyRoadsBtn.setChecked(RoutingOptions.hasOption(RoadType.Dirty));
|
||||
CompoundButton.OnCheckedChangeListener dirtyBtnListener = new ToggleRoutingOptionListener(RoadType.Dirty);
|
||||
dirtyRoadsBtn.setEnabled(!RoutingOptions.hasOption(RoadType.Paved) || RoutingOptions.hasOption(RoadType.Dirty));
|
||||
CompoundButton.OnCheckedChangeListener dirtyBtnListener = new ToggleRoutingOptionListener(RoadType.Dirty, root);
|
||||
dirtyRoadsBtn.setOnCheckedChangeListener(dirtyBtnListener);
|
||||
|
||||
SwitchCompat stepsBtn = root.findViewById(R.id.avoid_steps_btn);
|
||||
stepsBtn.setChecked(RoutingOptions.hasOption(RoadType.Steps));
|
||||
CompoundButton.OnCheckedChangeListener stepsBtnListener = new ToggleRoutingOptionListener(RoadType.Steps);
|
||||
CompoundButton.OnCheckedChangeListener stepsBtnListener = new ToggleRoutingOptionListener(RoadType.Steps, root);
|
||||
stepsBtn.setOnCheckedChangeListener(stepsBtnListener);
|
||||
|
||||
SwitchCompat pavedBtn = root.findViewById(R.id.avoid_paved_roads_btn);
|
||||
pavedBtn.setChecked(RoutingOptions.hasOption(RoadType.Paved));
|
||||
pavedBtn.setEnabled(!RoutingOptions.hasOption(RoadType.Dirty) || RoutingOptions.hasOption(RoadType.Paved));
|
||||
CompoundButton.OnCheckedChangeListener pavedBtnListener = new ToggleRoutingOptionListener(RoadType.Paved, root);
|
||||
pavedBtn.setOnCheckedChangeListener(pavedBtnListener);
|
||||
}
|
||||
|
||||
private static class ToggleRoutingOptionListener implements CompoundButton.OnCheckedChangeListener
|
||||
@@ -119,9 +127,13 @@ public class DrivingOptionsFragment extends BaseMwmToolbarFragment
|
||||
@NonNull
|
||||
private final RoadType mRoadType;
|
||||
|
||||
private ToggleRoutingOptionListener(@NonNull RoadType roadType)
|
||||
@NonNull
|
||||
private final View mRoot;
|
||||
|
||||
private ToggleRoutingOptionListener(@NonNull RoadType roadType, @NonNull View root)
|
||||
{
|
||||
mRoadType = roadType;
|
||||
mRoot = root;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -131,6 +143,27 @@ public class DrivingOptionsFragment extends BaseMwmToolbarFragment
|
||||
RoutingOptions.addOption(mRoadType);
|
||||
else
|
||||
RoutingOptions.removeOption(mRoadType);
|
||||
|
||||
SwitchCompat dirtyRoadsBtn = mRoot.findViewById(R.id.avoid_dirty_roads_btn);
|
||||
SwitchCompat pavedBtn = mRoot.findViewById(R.id.avoid_paved_roads_btn);
|
||||
if (mRoadType == RoadType.Dirty)
|
||||
{
|
||||
pavedBtn.setEnabled(!isChecked);
|
||||
if (isChecked)
|
||||
{
|
||||
pavedBtn.setChecked(false);
|
||||
dirtyRoadsBtn.setEnabled(true);
|
||||
}
|
||||
}
|
||||
else if (mRoadType == RoadType.Paved)
|
||||
{
|
||||
dirtyRoadsBtn.setEnabled(!isChecked);
|
||||
if (isChecked)
|
||||
{
|
||||
dirtyRoadsBtn.setChecked(false);
|
||||
pavedBtn.setEnabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package app.organicmaps.widget.placepage;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.TextStyle;
|
||||
import java.util.Locale;
|
||||
|
||||
public class OpenStateTextFormatter
|
||||
{
|
||||
private OpenStateTextFormatter() {}
|
||||
|
||||
static String formatHoursMinutes(int hour, int minute, boolean use24h)
|
||||
{
|
||||
if (use24h)
|
||||
return String.format(Locale.ROOT, "%02d:%02d", hour, minute);
|
||||
|
||||
int h = hour % 12;
|
||||
if (h == 0) h = 12;
|
||||
String ampm = (hour < 12) ? "AM" : "PM";
|
||||
return String.format(Locale.ROOT, "%d:%02d %s", h, minute, ampm);
|
||||
}
|
||||
|
||||
static boolean isSameLocalDate(ZonedDateTime a, ZonedDateTime b)
|
||||
{
|
||||
return a.toLocalDate().isEqual(b.toLocalDate());
|
||||
}
|
||||
|
||||
static String dayShort(ZonedDateTime t, Locale locale)
|
||||
{
|
||||
return t.getDayOfWeek().getDisplayName(TextStyle.SHORT, locale);
|
||||
}
|
||||
|
||||
static String buildAtLabel(
|
||||
boolean opens,
|
||||
boolean isToday,
|
||||
String dayShort,
|
||||
String time,
|
||||
String opensAtLocalized,
|
||||
String closesAtLocalized,
|
||||
String opensDayAtLocalized,
|
||||
String closesDayAtLocalized
|
||||
)
|
||||
{
|
||||
if (isToday)
|
||||
return opens ? String.format(Locale.ROOT, opensAtLocalized, time) // Opens at %s
|
||||
: String.format(Locale.ROOT, closesAtLocalized, time); // Closes at %s
|
||||
return opens ? String.format(Locale.ROOT, opensDayAtLocalized, dayShort, time) // Opens %s at %s
|
||||
: String.format(Locale.ROOT, closesDayAtLocalized, dayShort, time); // Closes %s at %s
|
||||
}
|
||||
}
|
||||
@@ -85,9 +85,11 @@ import com.google.android.material.textview.MaterialTextView;
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.TextStyle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
public class PlacePageView extends Fragment
|
||||
implements View.OnClickListener, View.OnLongClickListener, LocationListener, SensorListener, Observer<MapObject>,
|
||||
@@ -105,6 +107,10 @@ public class PlacePageView extends Fragment
|
||||
private static final String LINKS_FRAGMENT_TAG = "LINKS_FRAGMENT_TAG";
|
||||
private static final String TRACK_SHARE_MENU_ID = "TRACK_SHARE_MENU_ID";
|
||||
|
||||
private static final int SHORT_HORIZON_CLOSE_MIN = 60;
|
||||
|
||||
private static final int SHORT_HORIZON_OPEN_MIN = 15;
|
||||
|
||||
private static final List<CoordinatesFormat> visibleCoordsFormat =
|
||||
Arrays.asList(CoordinatesFormat.LatLonDMS, CoordinatesFormat.LatLonDecimal, CoordinatesFormat.OLCFull,
|
||||
CoordinatesFormat.UTM, CoordinatesFormat.MGRS, CoordinatesFormat.OSMLink);
|
||||
@@ -797,57 +803,95 @@ public class PlacePageView extends Fragment
|
||||
final String ohStr = mMapObject.getMetadata(Metadata.MetadataType.FMD_OPEN_HOURS);
|
||||
final Timetable[] timetables = OpeningHours.nativeTimetablesFromString(ohStr);
|
||||
|
||||
if (timetables != null && timetables.length != 0)
|
||||
// No valid timetable
|
||||
if (timetables == null || timetables.length == 0)
|
||||
{
|
||||
final Context context = requireContext();
|
||||
final OhState poiState = OpeningHours.nativeCurrentState(timetables);
|
||||
|
||||
// Ignore unknown rule state
|
||||
if (poiState.state == OhState.State.Unknown)
|
||||
{
|
||||
UiUtils.hide(mTvOpenState);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get colours
|
||||
final ForegroundColorSpan colorGreen =
|
||||
new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_green));
|
||||
final ForegroundColorSpan colorYellow =
|
||||
new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_yellow));
|
||||
final ForegroundColorSpan colorRed = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_red));
|
||||
|
||||
// Get next state info
|
||||
final SpannableStringBuilder openStateString = new SpannableStringBuilder();
|
||||
final boolean isOpen = (poiState.state == OhState.State.Open); // False == Closed due to early exit for Unknown
|
||||
final long nextStateTime = isOpen ? poiState.nextTimeClosed : poiState.nextTimeOpen; // Unix time (seconds)
|
||||
final int minsToNextState = (int) ((nextStateTime - (System.currentTimeMillis() / 1000)) / 60);
|
||||
|
||||
if (minsToNextState <= 60) // POI opens/closes in 60 mins
|
||||
{
|
||||
final String minsToChangeStr = minsToNextState + " " + getString(R.string.minute);
|
||||
final String nextChangeFormatted = getString(isOpen ? R.string.closes_in : R.string.opens_in, minsToChangeStr);
|
||||
final ForegroundColorSpan nextChangeColor = isOpen ? colorYellow : colorRed;
|
||||
// TODO: We should check closed/open time for specific feature's timezone.
|
||||
ZonedDateTime time = ZonedDateTime.ofInstant(Instant.ofEpochSecond(nextStateTime), ZoneId.systemDefault());
|
||||
String localizedTime =
|
||||
new HoursMinutes(time.getHour(), time.getMinute(), DateUtils.is24HourFormat(context)).toString();
|
||||
|
||||
openStateString.append(nextChangeFormatted, nextChangeColor, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
|
||||
.append(" • ") // Add spacer
|
||||
.append(getString(R.string.at, localizedTime));
|
||||
}
|
||||
else if (isOpen)
|
||||
openStateString.append(getString(R.string.open_now), colorGreen, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
// TODO: Add "Closes at 18:00" etc
|
||||
else // Closed
|
||||
openStateString.append(getString(R.string.closed_now), colorRed, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
// TODO: Add "Opens at 18:00" etc
|
||||
|
||||
UiUtils.setTextAndHideIfEmpty(mTvOpenState, openStateString);
|
||||
UiUtils.hide(mTvOpenState);
|
||||
return;
|
||||
}
|
||||
// No valid timetable
|
||||
UiUtils.hide(mTvOpenState);
|
||||
|
||||
final Context context = requireContext();
|
||||
final OhState poiState = OpeningHours.nativeCurrentState(timetables);
|
||||
|
||||
// Ignore unknown rule state
|
||||
if (poiState.state == OhState.State.Unknown)
|
||||
{
|
||||
UiUtils.hide(mTvOpenState);
|
||||
return;
|
||||
}
|
||||
|
||||
// Get colours
|
||||
final ForegroundColorSpan colorGreen =
|
||||
new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_green));
|
||||
final ForegroundColorSpan colorYellow =
|
||||
new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_yellow));
|
||||
final ForegroundColorSpan colorRed = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.base_red));
|
||||
|
||||
// Get next state info
|
||||
final SpannableStringBuilder openStateString = new SpannableStringBuilder();
|
||||
final boolean isOpen = (poiState.state == OhState.State.Open); // False == Closed due to early exit for Unknown
|
||||
final long nextStateTime = isOpen ? poiState.nextTimeClosed : poiState.nextTimeOpen; // Unix time (seconds)
|
||||
final long nowSec = System.currentTimeMillis() / 1000;
|
||||
final int minsToNextState = (int) ((nextStateTime - nowSec) / 60);
|
||||
|
||||
// NOTE: Timezone is currently device timezone. TODO: use feature-specific timezone.
|
||||
final ZonedDateTime nextChangeLocal =
|
||||
ZonedDateTime.ofInstant(Instant.ofEpochSecond(nextStateTime), ZoneId.systemDefault());
|
||||
|
||||
String localizedTimeString = OpenStateTextFormatter.formatHoursMinutes(
|
||||
nextChangeLocal.getHour(), nextChangeLocal.getMinute(), DateUtils.is24HourFormat(context));
|
||||
|
||||
final boolean shortHorizonClosing = isOpen && minsToNextState >= 0 && minsToNextState <= SHORT_HORIZON_CLOSE_MIN;
|
||||
final boolean shortHorizonOpening = !isOpen && minsToNextState >= 0 && minsToNextState <= SHORT_HORIZON_OPEN_MIN;
|
||||
|
||||
if (shortHorizonClosing || shortHorizonOpening) // POI Opens/Closes in 60 mins • at 18:00
|
||||
{
|
||||
final String minsToChangeStr = getResources().getQuantityString(
|
||||
R.plurals.minutes_short, Math.max(minsToNextState, 1), Math.max(minsToNextState, 1));
|
||||
final String nextChangeFormatted = getString(isOpen ? R.string.closes_in : R.string.opens_in, minsToChangeStr);
|
||||
|
||||
openStateString.append(nextChangeFormatted, colorYellow, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
|
||||
.append(" • ") // Add spacer
|
||||
.append(getString(R.string.at, localizedTimeString));
|
||||
}
|
||||
else
|
||||
{
|
||||
final String opensAtStr = getString(R.string.opens_at); // "Opens at %s"
|
||||
final String closesAtStr = getString(R.string.closes_at); // "Closes at %s"
|
||||
final String opensDayAtStr = getString(R.string.opens_day_at); // "Opens %1$s at %2$s"
|
||||
final String closesDayAtStr = getString(R.string.closes_day_at); // "Closes %1$s at %2$s"
|
||||
|
||||
final boolean isToday =
|
||||
OpenStateTextFormatter.isSameLocalDate(nextChangeLocal, ZonedDateTime.now(nextChangeLocal.getZone()));
|
||||
// Full weekday name per design feedback.
|
||||
final String dayName =
|
||||
nextChangeLocal.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault());
|
||||
|
||||
if (isOpen) // > 60 minutes OR negative (safety). Show “Open now • Closes at 18:00”
|
||||
{
|
||||
openStateString.append(getString(R.string.open_now), colorGreen, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
final String atLabel =
|
||||
OpenStateTextFormatter.buildAtLabel(false, isToday, dayName, localizedTimeString,
|
||||
opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
||||
|
||||
if (!TextUtils.isEmpty(atLabel))
|
||||
openStateString.append(" • ").append(atLabel);
|
||||
}
|
||||
else // Closed
|
||||
{
|
||||
openStateString.append(getString(R.string.closed_now), colorRed, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
final String atLabel =
|
||||
OpenStateTextFormatter.buildAtLabel(true, isToday, dayName, localizedTimeString,
|
||||
opensAtStr, closesAtStr, opensDayAtStr, closesDayAtStr);
|
||||
|
||||
if (!TextUtils.isEmpty(atLabel))
|
||||
openStateString.append(" • ").append(atLabel);
|
||||
}
|
||||
}
|
||||
|
||||
UiUtils.setTextAndHideIfEmpty(mTvOpenState, openStateString);
|
||||
}
|
||||
|
||||
private void addPlace()
|
||||
|
||||
10
android/app/src/main/res/drawable/ic_browse_activity.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M80,360v-160q0,-33 23.5,-56.5T160,120h640q33,0 56.5,23.5T880,200v160h-80v-160L160,200v160L80,360ZM160,720q-33,0 -56.5,-23.5T80,640v-200h80v200h640v-200h80v200q0,33 -23.5,56.5T800,720L160,720ZM40,840v-80h880v80L40,840ZM480,420ZM80,440v-80h240q11,0 21,6t15,16l47,93 123,-215q5,-9 14,-14.5t20,-5.5q11,0 21,5.5t15,16.5l49,98h235v80L620,440q-11,0 -21,-5.5T584,418l-26,-53 -123,215q-5,10 -15,15t-21,5q-11,0 -20.5,-6T364,578l-69,-138L80,440Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
@@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M480,536L284,732Q273,743 256,743Q239,743 228,732Q217,721 217,704Q217,687 228,676L424,480L228,284Q217,273 217,256Q217,239 228,228Q239,217 256,217Q273,217 284,228L480,424L676,228Q687,217 704,217Q721,217 732,228Q743,239 743,256Q743,273 732,284L536,480L732,676Q743,687 743,704Q743,721 732,732Q721,743 704,743Q687,743 676,732L480,536Z"/>
|
||||
</vector>
|
||||
@@ -1,5 +1,10 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:tint="#FFFFFF"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M480,536L284,732Q273,743 256,743Q239,743 228,732Q217,721 217,704Q217,687 228,676L424,480L228,284Q217,273 217,256Q217,239 228,228Q239,217 256,217Q273,217 284,228L480,424L676,228Q687,217 704,217Q721,217 732,228Q743,239 743,256Q743,273 732,284L536,480L732,676Q743,687 743,704Q743,721 732,732Q721,743 704,743Q687,743 676,732L480,536Z"/>
|
||||
</vector>
|
||||
|
||||
10
android/app/src/main/res/drawable/ic_dark_mode.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M480,840q-150,0 -255,-105T120,480q0,-150 105,-255t255,-105q14,0 27.5,1t26.5,3q-41,29 -65.5,75.5T444,300q0,90 63,153t153,63q55,0 101,-24.5t75,-65.5q2,13 3,26.5t1,27.5q0,150 -105,255T480,840ZM480,760q88,0 158,-48.5T740,585q-20,5 -40,8t-40,3q-123,0 -209.5,-86.5T364,300q0,-20 3,-40t8,-40q-78,32 -126.5,102T200,480q0,116 82,198t198,82ZM470,490Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_download_st.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M19,9h-4v-6h-6v6h-4l7,7 7,-7ZM5,18v2h14v-2h-14Z"
|
||||
android:fillColor="#FFF"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_eco.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M216,784q-45,-45 -70.5,-104T120,558q0,-63 24,-124.5T222,318q35,-35 86.5,-60t122,-39.5Q501,204 591.5,201t202.5,7q8,106 5,195t-16.5,160.5q-13.5,71.5 -38,125T684,778q-53,53 -112.5,77.5T450,880q-65,0 -127,-25.5T216,784ZM328,768q29,17 59.5,24.5T450,800q46,0 91,-18.5t86,-59.5q18,-18 36.5,-50.5t32,-85Q709,534 716,459.5t2,-177.5q-49,-2 -110.5,-1.5T485,290q-61,9 -116,29t-90,55q-45,45 -62,89t-17,85q0,59 22.5,103.5T262,714q42,-80 111,-153.5T534,440q-72,63 -125.5,142.5T328,768ZM328,768ZM328,768Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_instant_mix.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M200,800v-280h-80v-80h240v80h-80v280h-80ZM200,360v-200h80v200h-80ZM360,360v-80h80v-120h80v120h80v80L360,360ZM440,800v-360h80v360h-80ZM680,800v-120h-80v-80h240v80h-80v120h-80ZM680,520v-360h80v360h-80Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M280,920q-33,0 -56.5,-23.5T200,840v-720q0,-33 23.5,-56.5T280,40h400q33,0 56.5,23.5T760,120v124q18,7 29,22t11,34v80q0,19 -11,34t-29,22v404q0,33 -23.5,56.5T680,920L280,920ZM280,840h400v-720L280,120v720ZM280,840v-720,720ZM394,640h172q14,0 24,-10t10,-24v-132q0,-14 -10,-24t-24,-10h-6v-40q0,-33 -23.5,-56.5T480,320q-33,0 -56.5,23.5T400,400v40h-6q-14,0 -24,10t-10,24v132q0,14 10,24t24,10ZM440,440v-40q0,-17 11.5,-28.5T480,360q17,0 28.5,11.5T520,400v40h-80Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_network_manage.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M339,698q22,-22 49.5,-36t58.5,-19q-5,19 -8,38t-3,39q0,24 3.5,47t11.5,44L339,698ZM254,614 L170,528q62,-62 142,-95t168,-33q49,0 96,10.5t90,30.5q-44,8 -81.5,29T517,522q-9,-1 -18.5,-1.5T480,520q-64,0 -122.5,24.5T254,614ZM84,444 L0,360q95,-97 219.5,-148.5T480,160q136,0 260.5,51.5T960,360l-84,84q-79,-79 -181.5,-121.5T480,280q-112,0 -214.5,42.5T84,444ZM760,520 L772,580q12,5 22.5,10.5T816,604l58,-18 40,68 -46,40q2,12 2,26t-2,26l46,40 -40,68 -58,-18q-11,8 -21.5,13.5T772,860l-12,60h-80l-12,-60q-12,-5 -22.5,-10.5T624,836l-58,18 -40,-68 46,-40q-2,-12 -2,-26t2,-26l-46,-40 40,-68 58,18q11,-8 21.5,-13.5T668,580l12,-60h80ZM720,640q-33,0 -56.5,23.5T640,720q0,33 23.5,56.5T720,800q33,0 56.5,-23.5T800,720q0,-33 -23.5,-56.5T720,640Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_profile.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M480,480q-66,0 -113,-47t-47,-113q0,-66 47,-113t113,-47q66,0 113,47t47,113q0,66 -47,113t-113,47ZM160,800v-112q0,-34 17.5,-62.5T224,582q62,-31 126,-46.5T480,520q66,0 130,15.5T736,582q29,15 46.5,43.5T800,688v112L160,800ZM240,720h480v-32q0,-11 -5.5,-20T700,654q-54,-27 -109,-40.5T480,600q-56,0 -111,13.5T260,654q-9,5 -14.5,14t-5.5,20v32ZM480,400q33,0 56.5,-23.5T560,320q0,-33 -23.5,-56.5T480,240q-33,0 -56.5,23.5T400,320q0,33 23.5,56.5T480,400ZM480,320ZM480,720Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_record_voice_over.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="m798,638 l-62,-62q44,-41 69,-97t25,-119q0,-63 -25,-118t-69,-96l62,-64q56,53 89,125t33,153q0,81 -33,153t-89,125ZM670,510l-64,-64q18,-17 29,-38.5t11,-47.5q0,-26 -11,-47.5T606,274l64,-64q32,29 50,67.5t18,82.5q0,44 -18,82.5T670,510ZM360,520q-66,0 -113,-47t-47,-113q0,-66 47,-113t113,-47q66,0 113,47t47,113q0,66 -47,113t-113,47ZM40,840v-112q0,-33 17,-62t47,-44q51,-26 115,-44t141,-18q77,0 141,18t115,44q30,15 47,44t17,62v112L40,840ZM120,760h480v-32q0,-11 -5.5,-20T580,694q-36,-18 -92.5,-36T360,640q-71,0 -127.5,18T140,694q-9,5 -14.5,14t-5.5,20v32ZM360,440q33,0 56.5,-23.5T440,360q0,-33 -23.5,-56.5T360,280q-33,0 -56.5,23.5T280,360q0,33 23.5,56.5T360,440ZM360,360ZM360,760Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_sd_card.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M360,440h80v-160h-80v160ZM480,440h80v-160h-80v160ZM600,440h80v-160h-80v160ZM240,880q-33,0 -56.5,-23.5T160,800v-480l240,-240h320q33,0 56.5,23.5T800,160v640q0,33 -23.5,56.5T720,880L240,880ZM240,800h480v-640L434,160L240,354v446ZM240,800h480,-480Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_search_recent_st.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M13.26,3C8.17,2.86 4,6.95 4,12L2.21,12c-0.45,0 -0.67,0.54 -0.35,0.85l2.79,2.8c0.2,0.2 0.51,0.2 0.71,0l2.79,-2.8c0.31,-0.31 0.09,-0.85 -0.36,-0.85L6,12c0,-3.9 3.18,-7.05 7.1,-7 3.72,0.05 6.85,3.18 6.9,6.9 0.05,3.91 -3.1,7.1 -7,7.1 -1.61,0 -3.1,-0.55 -4.28,-1.48 -0.4,-0.31 -0.96,-0.28 -1.32,0.08 -0.42,0.42 -0.39,1.13 0.08,1.49C9,20.29 10.91,21 13,21c5.05,0 9.14,-4.17 9,-9.26 -0.13,-4.69 -4.05,-8.61 -8.74,-8.74zM12.75,8c-0.41,0 -0.75,0.34 -0.75,0.75v3.68c0,0.35 0.19,0.68 0.49,0.86l3.12,1.85c0.36,0.21 0.82,0.09 1.03,-0.26 0.21,-0.36 0.09,-0.82 -0.26,-1.03l-2.88,-1.71v-3.4c0,-0.4 -0.34,-0.74 -0.75,-0.74z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M480,560q-33,0 -56.5,-23.5T400,480q0,-33 23.5,-56.5T480,400q33,0 56.5,23.5T560,480q0,33 -23.5,56.5T480,560ZM480,840q-139,0 -241,-91.5T122,520h82q14,104 92.5,172T480,760q117,0 198.5,-81.5T760,480q0,-117 -81.5,-198.5T480,200q-69,0 -129,32t-101,88h110v80L120,400v-240h80v94q51,-64 124.5,-99T480,120q75,0 140.5,28.5t114,77q48.5,48.5 77,114T840,480q0,75 -28.5,140.5t-77,114q-48.5,48.5 -114,77T480,840Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
@@ -1,9 +0,0 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M2,20h20v-4h-20v4ZM4,17h2v2h-2v-2ZM2,4v4h20v-4h-20ZM6,7h-2v-2h2v2ZM2,14h20v-4h-20v4ZM4,11h2v2h-2v-2Z"
|
||||
android:fillColor="#FFF"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_straighten.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M160,720q-33,0 -56.5,-23.5T80,640v-320q0,-33 23.5,-56.5T160,240h640q33,0 56.5,23.5T880,320v320q0,33 -23.5,56.5T800,720L160,720ZM160,640h640v-320L680,320v160h-80v-160h-80v160h-80v-160h-80v160h-80v-160L160,320v320ZM280,480h80,-80ZM440,480h80,-80ZM600,480h80,-80ZM480,480Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_text_fields.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M280,800v-520L80,280v-120h520v120L400,280v520L280,800ZM640,800v-320L520,480v-120h360v120L760,480v320L640,800Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_three_d_rotation.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M480,880q-83,0 -156,-31.5T197,763q-54,-54 -85.5,-127T80,480h80q0,115 72.5,203T418,794l-58,-58 56,-56L598,862q-29,10 -58.5,14T480,880ZM500,600v-240h120q17,0 28.5,11.5T660,400v160q0,17 -11.5,28.5T620,600L500,600ZM300,600v-60h100v-40h-60v-40h60v-40L300,420v-60h120q17,0 28.5,11.5T460,400v160q0,17 -11.5,28.5T420,600L300,600ZM560,540h40v-120h-40v120ZM800,480q0,-115 -72.5,-203T542,166l58,58 -56,56 -182,-182q29,-10 58.5,-14t59.5,-4q83,0 156,31.5T763,197q54,54 85.5,127T880,480h-80Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_translate.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="m476,880 l182,-480h84L924,880h-84l-43,-122L603,758L560,880h-84ZM160,760l-56,-56 202,-202q-35,-35 -63.5,-80T190,320h84q20,39 40,68t48,58q33,-33 68.5,-92.5T484,240L40,240v-80h280v-80h80v80h280v80L564,240q-21,72 -63,148t-83,116l96,98 -30,82 -122,-125 -202,201ZM628,688h144l-72,-204 -72,204Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
10
android/app/src/main/res/drawable/ic_translate_indic.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="m476,880 l182,-480h84L924,880h-84l-43,-122L603,758L560,880h-84ZM628,688h144l-72,-204 -72,204ZM254,640q-66,0 -123.5,-38.5T44,498l72,-36q21,42 58,70t79,28q38,0 62.5,-23.5T340,480q0,-33 -23.5,-56.5T260,400h-60v-80h60q25,0 42.5,-17.5T320,260q0,-25 -17,-42.5T261,200q-23,0 -41,15t-32,33l-63,-49q26,-32 60,-55.5t77,-23.5q57,0 97.5,40.5T400,259q0,27 -10,52.5T361,357q10,10 18.5,20.5T396,400h124v-200h-80v-80h240v80h-80v116l-61,164L420,480v4q0,63 -46,109.5T254,640Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
@@ -3,7 +3,13 @@
|
||||
android:height="20dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960">
|
||||
<group
|
||||
android:pivotX="370"
|
||||
android:pivotY="480"
|
||||
android:scaleX="2.2"
|
||||
android:scaleY="1.7">
|
||||
<path
|
||||
android:pathData="M420,652q-8,0 -14,-5.5t-6,-14.5v-304q0,-9 6,-14.5t14,-5.5q2,0 14,6l145,145q5,5 7,10t2,11q0,6 -2,11t-7,10L434,646q-3,3 -6.5,4.5T420,652Z"
|
||||
android:fillColor="#1f1f1f"/>
|
||||
android:pathData="M640,760 L200,480l440,-280v560Z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
</group>
|
||||
</vector>
|
||||
|
||||
10
android/app/src/main/res/drawable/ic_wifi_find.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="960"
|
||||
android:viewportHeight="960"
|
||||
android:tint="?colorControlNormal">
|
||||
<path
|
||||
android:pathData="M480,840 L0,359q93,-93 215.5,-146T480,160q142,0 264.5,53T960,359l-56,57q-81,-81 -190,-128.5T480,240q-103,0 -195,32.5T117,363l419,420 -56,57ZM864,800L761,698q-18,11 -38,16.5t-43,5.5q-68,0 -114,-46t-46,-114q0,-68 46,-114t114,-46q68,0 114,46t46,114q0,23 -5.5,43T818,641l102,103 -56,56ZM680,640q34,0 57,-23t23,-57q0,-34 -23,-57t-57,-23q-34,0 -57,23t-23,57q0,34 23,57t57,23ZM480,783Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
||||
@@ -22,8 +22,8 @@
|
||||
android:clipChildren="false">
|
||||
<com.google.android.material.imageview.ShapeableImageView
|
||||
android:id="@+id/floating_triangle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="@dimen/margin_half"
|
||||
android:layout_height="@dimen/margin_half"
|
||||
android:elevation="@dimen/margin_eighth"
|
||||
android:layout_centerVertical="true"
|
||||
app:tint="@android:color/white"
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/margin_half_double_plus"/>
|
||||
</LinearLayout>
|
||||
<include layout="@layout/item_divider"/>
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:minHeight="@dimen/height_block_base"
|
||||
@@ -58,7 +57,27 @@
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/margin_half_double_plus"/>
|
||||
</LinearLayout>
|
||||
<include layout="@layout/item_divider"/>
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:minHeight="@dimen/height_block_base"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="@dimen/margin_base"
|
||||
android:paddingStart="@dimen/margin_base">
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:text="@string/avoid_paved"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:textColor="?android:attr/textColorPrimary"/>
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/avoid_paved_roads_btn"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/margin_half_double_plus"/>
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:minHeight="@dimen/height_block_base"
|
||||
@@ -80,7 +99,6 @@
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/margin_half_double_plus"/>
|
||||
</LinearLayout>
|
||||
<include layout="@layout/item_divider"/>
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:minHeight="@dimen/height_block_base"
|
||||
@@ -102,7 +120,6 @@
|
||||
android:padding="@dimen/margin_half_double_plus"
|
||||
android:layout_height="match_parent"/>
|
||||
</LinearLayout>
|
||||
<include layout="@layout/item_divider"/>
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:minHeight="@dimen/height_block_base"
|
||||
|
||||
@@ -394,7 +394,8 @@
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/cv__more"
|
||||
style="@style/MwmWidget.Editor.CardView">
|
||||
style="@style/MwmWidget.Editor.CardView"
|
||||
android:layout_marginBottom="@dimen/margin_base">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -421,6 +422,17 @@
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
</LinearLayout>
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/disused"
|
||||
style="@style/MwmWidget.M3.Button.Secondary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="@dimen/margin_quarter"
|
||||
app:backgroundTint="?cardBackground"
|
||||
android:textColor="@color/base_red"
|
||||
app:strokeColor="@color/base_red"
|
||||
android:text="@string/editor_business_vacant_button"/>
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/reset"
|
||||
style="@style/MwmWidget.M3.Button.Secondary"
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
style="@style/MwmWidget.TextView.Search"
|
||||
android:text="@string/clear_search"
|
||||
app:drawableStartCompat="@drawable/ic_cancel"/>
|
||||
app:drawableStartCompat="@drawable/ic_close"/>
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:contentDescription="@string/clear_the_search"
|
||||
android:scaleType="center"
|
||||
app:srcCompat="@drawable/ic_cancel"/>
|
||||
app:srcCompat="@drawable/ic_close"/>
|
||||
|
||||
<com.google.android.material.imageview.ShapeableImageView
|
||||
android:id="@+id/voice_input"
|
||||
|
||||
@@ -889,4 +889,5 @@
|
||||
<string name="avoid_steps">Vyhnout se schodům</string>
|
||||
<string name="offline_explanation_title">Offline mapy</string>
|
||||
<string name="list_description_empty">Upravit seznam pro přidání popisu</string>
|
||||
<string name="avoid_paved">Vyhnout se zpevněným cestám</string>
|
||||
</resources>
|
||||
|
||||
@@ -880,4 +880,5 @@
|
||||
<string name="offline_explanation_title">Offline kort</string>
|
||||
<string name="offline_explanation_text">Der skal downloades et kort for at kunne se og navigere i området.\nDownload kort over de områder, du ønsker at rejse i.</string>
|
||||
<string name="list_description_empty">Rediger listen for at tilføje en beskrivelse</string>
|
||||
<string name="avoid_paved">Undgå veje med fast belægning</string>
|
||||
</resources>
|
||||
|
||||
@@ -893,4 +893,5 @@
|
||||
<string name="unknown_count">unbekannt</string>
|
||||
<string name="error_invalid_number">ungültige Zahl</string>
|
||||
<string name="list_description_empty">Liste bearbeiten, um eine Beschreibung hinzuzufügen</string>
|
||||
<string name="avoid_paved">Befst. Straßen vermeiden</string>
|
||||
</resources>
|
||||
|
||||
@@ -898,4 +898,5 @@
|
||||
<string name="offline_explanation_title">Mapas sin conexión</string>
|
||||
<string name="offline_explanation_text">Se debe descargar un mapa para ver y navegar el área\nDescarga mapas de las áreas que quieras navegar.</string>
|
||||
<string name="editor_place_doesnt_exist_description">Describe la situación actual del lugar para enviar una nota de error a la comunidad de OpenStreetMap</string>
|
||||
<string name="avoid_paved">Evitar caminos pavimentados</string>
|
||||
</resources>
|
||||
|
||||
@@ -889,4 +889,5 @@
|
||||
<string name="offline_explanation_title">Ilma võrguühenduseta toimivad kaardid</string>
|
||||
<string name="offline_explanation_text">Selles piirkonnas liikumiseks ja teekonna juhatamiseks pead vajaliku kaardi alla laadima.\nVali allalaaditav kaart selle piirkonna kohta.</string>
|
||||
<string name="list_description_empty">Kirjelduse lisamiseks muuda loendit</string>
|
||||
<string name="avoid_paved">Väldi sillutatud teid</string>
|
||||
</resources>
|
||||
|
||||
@@ -898,4 +898,5 @@
|
||||
<string name="editor_place_doesnt_exist_description">Décrivez le lieu afin de signaler l\'erreur à la communauté OpenStreetMap</string>
|
||||
<string name="offline_explanation_text">Une carte doit être téléchargée pour visualiser et vous déplacer dans une zone.\nTéléchargez les cartes des zones que vous souhaitez visiter.</string>
|
||||
<string name="list_description_empty">Modifier la liste pour ajouter une description</string>
|
||||
<string name="avoid_paved">Éviter les routes goudronnées</string>
|
||||
</resources>
|
||||
|
||||
@@ -844,4 +844,5 @@
|
||||
<string name="backup_interval_every_day">Ik dienu</string>
|
||||
<string name="clear">Notīrīt</string>
|
||||
<string name="closed_now">Šobrīd slēgts</string>
|
||||
<string name="avoid_paved">Izvairīties no ceļiem ar cietu mākslīgo segumu</string>
|
||||
</resources>
|
||||
|
||||
@@ -885,4 +885,5 @@
|
||||
<string name="editor_socket">Rediger kontakt</string>
|
||||
<string name="charge_socket_type1">Type 1</string>
|
||||
<string name="edit_socket_info_tooltip">Opprett nye kontakter eller rediger eksisterende.</string>
|
||||
<string name="avoid_paved">Unngå asfalterte veier</string>
|
||||
</resources>
|
||||
|
||||
@@ -372,7 +372,7 @@
|
||||
<!-- The message when user did not find anything in the search. -->
|
||||
<string name="search_not_found_query">Pobierz region, w którym szukasz lub spróbuj dodać nazwę pobliskiego miasta/wsi.</string>
|
||||
<string name="search_history_title">Historia wyszukiwania</string>
|
||||
<string name="search_history_text">Uzyskaj szybki dostęp do ostatniego hasła wyszukiwania.</string>
|
||||
<string name="search_history_text">Zobacz swoje ostatnie wyszukiwania</string>
|
||||
<string name="clear_search">Wyczyść historię wyszukiwania</string>
|
||||
<!-- Place Page link to Wikipedia article (if map object has it). -->
|
||||
<string name="read_in_wikipedia">Wikipedia</string>
|
||||
|
||||
@@ -870,4 +870,5 @@
|
||||
<string name="offline_explanation_title">Mapas offline</string>
|
||||
<string name="editor_place_doesnt_exist_description">Descreva com detalhes como está o local agora mesmo para enviar uma nota de erro à comunidade do OpenStreetMap</string>
|
||||
<string name="list_description_empty">Edite a lista para adicionar uma descrição</string>
|
||||
<string name="avoid_paved">Evitar vias pavimentadas</string>
|
||||
</resources>
|
||||
|
||||
@@ -890,4 +890,6 @@
|
||||
<string name="offline_explanation_title">Офлајн мапе</string>
|
||||
<string name="editor_place_doesnt_exist_description">Опишите како место сада изгледа та бисте послали поруку о грешци OpenStreetMap заједници</string>
|
||||
<string name="avoid_steps">Избегавај степенице</string>
|
||||
<string name="avoid_paved">Избегавај асфалтиране путеве</string>
|
||||
<string name="list_description_empty">Промените листу да бисте додали опис</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Items in the Preferences can have space reserved for an icon. As none of the
|
||||
settings currently have associated icons, this leads to items that seem indented
|
||||
without purpose. This wastes space and can lead to truncation of the item names
|
||||
and descriptions. See https://github.com/organicmaps/organicmaps/issues/1872
|
||||
|
||||
To rectify this, the iconSpaceReserved property needs to be set to false.
|
||||
According to https://developer.android.com/reference/android/preference/Preference#attr_android:iconSpaceReserved
|
||||
false should be the default. However, according to
|
||||
https://material.io/design/platform-guidance/android-settings.html this goes
|
||||
against the material design guidelines and the default was overridden to true in
|
||||
https://cs.android.com/android/platform/superproject/+/android-9.0.0_r1:prebuilts/sdk/current/support/v7/preference/res/values-sw360dp-v13/values-sw360dp-v13.xml
|
||||
This file sets the default value back to false (i.e. no space reserved for icons).
|
||||
|
||||
See also the discussion at https://github.com/organicmaps/organicmaps/pull/1924
|
||||
-->
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<bool name="config_materialPreferenceIconSpaceReserved" tools:ignore="MissingDefaultResource">false</bool>
|
||||
</resources>
|
||||
@@ -36,13 +36,13 @@
|
||||
<string name="try_again">再试一次</string>
|
||||
<string name="about_menu_title">关于 CoMaps</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_headline">由社区推动的开放项目</string>
|
||||
<string name="about_headline">由社区驱动的开源项目</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_proposition_1">• 使用方便,外观精美</string>
|
||||
<string name="about_proposition_1">• 简单易用,精工细作</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_proposition_2">•注重隐私,毫无广告</string>
|
||||
<string name="about_proposition_2">• 专注隐私,绝无广告</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_proposition_3">• 离线、快速、精简</string>
|
||||
<string name="about_proposition_3">• 离线、迅捷、轻量</string>
|
||||
<!-- Text in About screen -->
|
||||
<string name="about_developed_by_enthusiasts">完全开源、决策问责、财务透明的非营利应用。</string>
|
||||
<!-- The button that opens system location settings -->
|
||||
|
||||
@@ -441,6 +441,14 @@
|
||||
<string name="opens_in">Opens in %s</string>
|
||||
<string name="closes_in">Closes in %s</string>
|
||||
<string name="closed">Closed</string>
|
||||
<string name="opens_at">Opens at %s</string>
|
||||
<string name="closes_at">Closes at %s</string>
|
||||
<string name="opens_day_at">Opens on %1$s at %2$s</string>
|
||||
<string name="closes_day_at">Closes on %1$s at %2$s</string>
|
||||
<plurals name="minutes_short">
|
||||
<item quantity="one">%d min</item>
|
||||
<item quantity="other">%d min</item>
|
||||
</plurals>
|
||||
<!-- Used in the opening_hours fragment for the last checked date, eg. "Confirmed two weeks ago" -->
|
||||
<string name="hours_confirmed_time_ago">Confirmed %s</string>
|
||||
<!-- Used on the place page for the last checked date, eg. "Existence confirmed two weeks ago" -->
|
||||
@@ -543,6 +551,14 @@
|
||||
<string name="editor_place_doesnt_exist_description">Describe what the place looks like now to send an error note to the OpenStreetMap community</string>
|
||||
<!-- Error message for "Place doesn't exist" dialog when comment is empty -->
|
||||
<string name="delete_place_empty_comment_error">Please indicate the reason for deleting the place</string>
|
||||
<!-- Button in the editor to mark business as vacant -->
|
||||
<string name="editor_business_vacant_button">Business is vacant</string>
|
||||
<!-- Title of confirmation dialog before marking business as vacant -->
|
||||
<string name="editor_mark_business_vacant_title">Mark business as vacant</string>
|
||||
<!-- Description in confirmation dialog before marking business as vacant -->
|
||||
<string name="editor_mark_business_vacant_description">Use this if the business has moved out and the space is empty and ready for a new tenant.</string>
|
||||
<!-- Submit change to OSM in the editor -->
|
||||
<string name="editor_submit">Submit</string>
|
||||
<!-- Phone number error message -->
|
||||
<string name="error_enter_correct_phone">Enter a valid phone number</string>
|
||||
<string name="error_enter_correct_web">Enter a valid web address</string>
|
||||
@@ -677,6 +693,7 @@
|
||||
<string name="avoid_ferry">Avoid ferries</string>
|
||||
<string name="avoid_motorways">Avoid freeways</string>
|
||||
<string name="avoid_steps">Avoid stairs</string>
|
||||
<string name="avoid_paved">Avoid paved roads</string>
|
||||
<string name="unable_to_calc_alert_title">Unable to calculate route</string>
|
||||
<string name="unable_to_calc_alert_subtitle">A route could not be found. This may be caused by your routing options or incomplete OpenStreetMap data. Please change your routing options and retry.</string>
|
||||
<string name="define_to_avoid_btn">Define roads to avoid</string>
|
||||
|
||||
@@ -1,24 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<Preference
|
||||
android:key="backup_location"
|
||||
android:summary="@string/pref_backup_location_summary_initial"
|
||||
android:title="@string/pref_backup_location_title" />
|
||||
android:title="@string/pref_backup_location_title"
|
||||
app:iconSpaceReserved="false" />
|
||||
<Preference
|
||||
android:key="backup_now"
|
||||
android:summary="@string/pref_backup_now_summary"
|
||||
android:title="@string/pref_backup_now_title" />
|
||||
android:title="@string/pref_backup_now_title"
|
||||
app:iconSpaceReserved="false" />
|
||||
<ListPreference
|
||||
android:defaultValue="86400000"
|
||||
android:entries="@array/backup_interval_entries"
|
||||
android:entryValues="@array/backup_interval_values"
|
||||
android:key="backup_history_interval"
|
||||
android:title="@string/pref_backup_interval_title" />
|
||||
android:title="@string/pref_backup_interval_title"
|
||||
app:iconSpaceReserved="false" />
|
||||
<ListPreference
|
||||
android:defaultValue="10"
|
||||
android:entries="@array/backup_history_entries"
|
||||
android:entryValues="@array/backup_history_values"
|
||||
android:key="backup_history_count"
|
||||
android:title="@string/pref_backup_history_title" />
|
||||
android:title="@string/pref_backup_history_title"
|
||||
app:iconSpaceReserved="false" />
|
||||
|
||||
</PreferenceScreen>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<Preference
|
||||
android:key="@string/pref_osm_profile"
|
||||
android:title="@string/profile"
|
||||
app:icon="@drawable/ic_profile"
|
||||
tools:summary="LongLongUsernameHere"
|
||||
app:singleLineTitle="false"
|
||||
android:order="1"/>
|
||||
@@ -17,6 +18,7 @@
|
||||
<ListPreference
|
||||
android:key="@string/pref_munits"
|
||||
android:title="@string/measurement_units"
|
||||
app:icon="@drawable/ic_straighten"
|
||||
app:singleLineTitle="false"
|
||||
android:summary="@string/measurement_units_summary"
|
||||
android:entries="@array/measument_units"
|
||||
@@ -42,6 +44,7 @@
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_autodownload"
|
||||
android:title="@string/autodownload"
|
||||
app:icon="@drawable/ic_download_st"
|
||||
app:singleLineTitle="false"
|
||||
android:order="5"/>
|
||||
<SwitchPreferenceCompat
|
||||
@@ -49,22 +52,26 @@
|
||||
android:title="@string/big_font"
|
||||
app:singleLineTitle="false"
|
||||
android:defaultValue="false"
|
||||
app:icon="@drawable/ic_text_fields"
|
||||
android:order="6"/>
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_transliteration"
|
||||
android:title="@string/transliteration_title"
|
||||
app:singleLineTitle="false"
|
||||
app:icon="@drawable/ic_translate_indic"
|
||||
android:defaultValue="false"
|
||||
android:order="7"/>
|
||||
<Preference
|
||||
android:key="@string/pref_storage"
|
||||
android:title="@string/maps_storage"
|
||||
app:icon="@drawable/ic_sd_card"
|
||||
app:singleLineTitle="false"
|
||||
android:summary="@string/maps_storage_summary"
|
||||
android:order="8"/>
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_enable_logging"
|
||||
android:title="@string/enable_logging"
|
||||
app:icon="@drawable/ic_browse_activity"
|
||||
app:singleLineTitle="false"
|
||||
android:summary="@string/enable_logging_warning_message"
|
||||
android:defaultValue="false"
|
||||
@@ -80,6 +87,7 @@
|
||||
android:key="@string/pref_use_mobile_data"
|
||||
android:title="@string/mobile_data"
|
||||
app:singleLineTitle="false"
|
||||
app:icon="@drawable/ic_network_manage"
|
||||
android:summary="@string/mobile_data_description"
|
||||
android:entries="@array/mobile_data_options"
|
||||
android:entryValues="@array/mobile_data_options_values"
|
||||
@@ -91,6 +99,7 @@
|
||||
android:summary="@string/power_managment_description"
|
||||
android:entries="@array/power_management_scheme"
|
||||
android:entryValues="@array/power_management_scheme_values"
|
||||
app:icon="@drawable/ic_eco"
|
||||
android:order="15"/>
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_keep_screen_on"
|
||||
@@ -102,6 +111,7 @@
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_show_on_lock_screen"
|
||||
android:title="@string/enable_show_on_lock_screen"
|
||||
app:icon="@drawable/ic_mobile_lock_portrait"
|
||||
app:singleLineTitle="false"
|
||||
android:summary="@string/enable_show_on_lock_screen_description"
|
||||
android:defaultValue="true"
|
||||
@@ -109,6 +119,7 @@
|
||||
<Preference
|
||||
android:key="@string/pref_map_locale"
|
||||
android:title="@string/change_map_locale"
|
||||
app:icon="@drawable/ic_translate"
|
||||
app:singleLineTitle="false"
|
||||
android:persistent="false"
|
||||
android:order="18"/>
|
||||
@@ -116,6 +127,7 @@
|
||||
android:key="@string/pref_backup"
|
||||
android:title="@string/pref_backup_title"
|
||||
android:summary="@string/pref_backup_summary"
|
||||
app:icon="@drawable/ic_settings_backup_restore"
|
||||
app:singleLineTitle="false"
|
||||
android:persistent="false"
|
||||
android:order="19"/>
|
||||
@@ -128,12 +140,14 @@
|
||||
<ListPreference
|
||||
android:key="@string/pref_map_style"
|
||||
android:title="@string/pref_map_style_title"
|
||||
app:icon="@drawable/ic_dark_mode"
|
||||
app:singleLineTitle="false"
|
||||
android:entries="@array/map_style"
|
||||
android:order="1"/>
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_3d"
|
||||
android:title="@string/pref_map_3d_title"
|
||||
app:icon="@drawable/ic_three_d_rotation"
|
||||
app:singleLineTitle="false"
|
||||
android:order="2"/>
|
||||
<SwitchPreferenceCompat
|
||||
@@ -146,12 +160,14 @@
|
||||
android:title="@string/pref_tts_enable_title"
|
||||
app:singleLineTitle="false"
|
||||
android:persistent="false"
|
||||
app:icon="@drawable/ic_record_voice_over"
|
||||
android:order="4">
|
||||
</Preference>
|
||||
<PreferenceScreen
|
||||
android:key="@string/prefs_routing"
|
||||
android:order="5"
|
||||
android:title="@string/driving_options_title">
|
||||
android:title="@string/driving_options_title"
|
||||
app:icon="@drawable/ic_instant_mix">
|
||||
<intent
|
||||
android:targetClass="app.organicmaps.settings.DrivingOptionsActivity"
|
||||
android:targetPackage="@string/app_id">
|
||||
@@ -167,12 +183,14 @@
|
||||
android:key="@string/pref_play_services"
|
||||
android:title="@string/google_play_services"
|
||||
app:singleLineTitle="false"
|
||||
app:icon="@drawable/ic_wifi_find"
|
||||
android:summary="@string/pref_use_google_play"
|
||||
android:defaultValue="true"
|
||||
android:order="1"/>
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_search_history"
|
||||
android:title="@string/search_history_title"
|
||||
app:icon="@drawable/ic_search_recent_st"
|
||||
app:singleLineTitle="false"
|
||||
android:defaultValue="true"
|
||||
android:order="2"/>
|
||||
|
||||
@@ -5,45 +5,54 @@
|
||||
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_tts_enabled"
|
||||
android:title="@string/pref_tts_enable_title" />
|
||||
android:title="@string/pref_tts_enable_title"
|
||||
app:iconSpaceReserved="false"/>
|
||||
<SwitchPreferenceCompat
|
||||
android:key="@string/pref_tts_street_names"
|
||||
android:title="@string/pref_tts_street_names_title"
|
||||
app:isPreferenceVisible="false"
|
||||
android:summary="@string/pref_tts_street_names_description"
|
||||
android:defaultValue="false" />
|
||||
android:defaultValue="false"
|
||||
app:iconSpaceReserved="false"/>
|
||||
<ListPreference
|
||||
android:key="@string/pref_tts_language"
|
||||
app:isPreferenceVisible="false"
|
||||
android:title="@string/pref_tts_language_title" />
|
||||
android:title="@string/pref_tts_language_title"
|
||||
app:iconSpaceReserved="false"/>
|
||||
<SeekBarPreference
|
||||
android:key="@string/pref_tts_volume"
|
||||
app:isPreferenceVisible="false"
|
||||
android:title="@string/volume" />
|
||||
android:title="@string/volume"
|
||||
app:iconSpaceReserved="false"/>
|
||||
<Preference
|
||||
android:key="@string/pref_tts_test_voice"
|
||||
app:isPreferenceVisible="false"
|
||||
android:title="@string/pref_tts_test_voice_title" />
|
||||
android:title="@string/pref_tts_test_voice_title"
|
||||
app:iconSpaceReserved="false"/>
|
||||
<Preference
|
||||
android:key="@string/pref_tts_open_system_settings"
|
||||
android:title="@string/pref_tts_open_system_settings" />
|
||||
android:title="@string/pref_tts_open_system_settings"
|
||||
app:iconSpaceReserved="false"/>
|
||||
<Preference
|
||||
android:enabled="false"
|
||||
android:key="@string/pref_tts_info"
|
||||
android:persistent="false"
|
||||
android:selectable="false"
|
||||
android:summary="@string/prefs_languages_information" />
|
||||
android:summary="@string/prefs_languages_information"
|
||||
app:iconSpaceReserved="false" />
|
||||
<Preference
|
||||
android:enabled="true"
|
||||
android:key="@string/pref_tts_info_link"
|
||||
android:persistent="false"
|
||||
android:selectable="true"
|
||||
android:summary="@string/prefs_languages_information_off_link" />
|
||||
android:summary="@string/prefs_languages_information_off_link"
|
||||
app:iconSpaceReserved="false" />
|
||||
<ListPreference
|
||||
android:key="@string/pref_tts_speed_cameras"
|
||||
android:title="@string/speedcams_alert_title"
|
||||
app:singleLineTitle="false"
|
||||
android:entries="@array/speed_cameras"
|
||||
android:entryValues="@array/speed_cameras_values"
|
||||
android:defaultValue="@string/auto_enum_value" />
|
||||
android:defaultValue="@string/auto_enum_value"
|
||||
app:iconSpaceReserved="false" />
|
||||
</androidx.preference.PreferenceScreen>
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
package app.organicmaps.widget.placepage;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Locale;
|
||||
|
||||
public class OpenStateTextFormatterTest
|
||||
{
|
||||
private static final String OPENS_AT = "Opens at %s";
|
||||
private static final String CLOSES_AT = "Closes at %s";
|
||||
private static final String OPENS_DAY_AT = "Opens %1$s at %2$s";
|
||||
private static final String CLOSES_DAY_AT = "Closes %1$s at %2$s";
|
||||
|
||||
@Test
|
||||
public void formatHoursMinutes_24h()
|
||||
{
|
||||
assertEquals("09:00", OpenStateTextFormatter.formatHoursMinutes(9, 0, true));
|
||||
assertEquals("18:05", OpenStateTextFormatter.formatHoursMinutes(18, 5, true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void formatHoursMinutes_12h()
|
||||
{
|
||||
assertEquals("9:00 AM", OpenStateTextFormatter.formatHoursMinutes(9, 0, false));
|
||||
assertEquals("6:05 PM", OpenStateTextFormatter.formatHoursMinutes(18, 5, false));
|
||||
assertEquals("12:00 PM", OpenStateTextFormatter.formatHoursMinutes(12, 0, false));
|
||||
assertEquals("12:00 AM", OpenStateTextFormatter.formatHoursMinutes(0, 0, false));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildAtLabel_today_open_close()
|
||||
{
|
||||
String open = OpenStateTextFormatter.buildAtLabel(true, true, "Sat", "09:00",
|
||||
OPENS_AT, CLOSES_AT, OPENS_DAY_AT, CLOSES_DAY_AT);
|
||||
String close = OpenStateTextFormatter.buildAtLabel(false, true, "Sat", "18:00",
|
||||
OPENS_AT, CLOSES_AT, OPENS_DAY_AT, CLOSES_DAY_AT);
|
||||
assertEquals("Opens at 09:00", open);
|
||||
assertEquals("Closes at 18:00", close);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildAtLabel_other_day()
|
||||
{
|
||||
String open = OpenStateTextFormatter.buildAtLabel(true, false, "Sat", "09:00",
|
||||
OPENS_AT, CLOSES_AT, OPENS_DAY_AT, CLOSES_DAY_AT);
|
||||
String close = OpenStateTextFormatter.buildAtLabel(false, false, "Tue", "18:00",
|
||||
OPENS_AT, CLOSES_AT, OPENS_DAY_AT, CLOSES_DAY_AT);
|
||||
assertEquals("Opens Sat at 09:00", open);
|
||||
assertEquals("Closes Tue at 18:00", close);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isSameLocalDate_and_dayShort_helpers()
|
||||
{
|
||||
ZonedDateTime a = ZonedDateTime.of(2025, 3, 1, 10, 0, 0, 0, ZoneId.of("Europe/Paris"));
|
||||
ZonedDateTime b = ZonedDateTime.of(2025, 3, 1, 22, 0, 0, 0, ZoneId.of("Europe/Paris"));
|
||||
ZonedDateTime c = a.plusDays(1);
|
||||
|
||||
assertTrue(OpenStateTextFormatter.isSameLocalDate(a, b));
|
||||
assertFalse(OpenStateTextFormatter.isSameLocalDate(a, c));
|
||||
|
||||
String day = OpenStateTextFormatter.dayShort(c, Locale.US);
|
||||
// March 2, 2025 is a Sunday; "Sun" in US locale
|
||||
assertEquals("Sun", day);
|
||||
}
|
||||
}
|
||||
@@ -277,6 +277,12 @@ JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsNameEd
|
||||
return g_editableMapObject.IsNameEditable();
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeCanMarkPlaceAsDisused(JNIEnv * env,
|
||||
jclass clazz)
|
||||
{
|
||||
return g_editableMapObject.CanMarkPlaceAsDisused();
|
||||
}
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeIsPointType(JNIEnv * env, jclass clazz)
|
||||
{
|
||||
return g_editableMapObject.IsPointType();
|
||||
@@ -434,6 +440,11 @@ JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeRollbackMapO
|
||||
g_framework->NativeFramework()->RollBackChanges(g_editableMapObject.GetID());
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeMarkPlaceAsDisused(JNIEnv * env, jclass clazz)
|
||||
{
|
||||
g_framework->NativeFramework()->MarkPlaceAsDisused(g_editableMapObject);
|
||||
}
|
||||
|
||||
JNIEXPORT jobjectArray JNICALL Java_app_organicmaps_sdk_editor_Editor_nativeGetAllCreatableFeatureTypes(JNIEnv * env,
|
||||
jclass clazz,
|
||||
jstring jLang)
|
||||
|
||||
@@ -99,6 +99,7 @@ public final class Editor
|
||||
|
||||
public static native boolean nativeIsAddressEditable();
|
||||
public static native boolean nativeIsNameEditable();
|
||||
public static native boolean nativeCanMarkPlaceAsDisused();
|
||||
public static native boolean nativeIsPointType();
|
||||
public static native boolean nativeIsBuilding();
|
||||
|
||||
@@ -164,6 +165,7 @@ public final class Editor
|
||||
public static native void nativeCreateNote(String text);
|
||||
public static native void nativePlaceDoesNotExist(@NonNull String comment);
|
||||
public static native void nativeRollbackMapObject();
|
||||
public static native void nativeMarkPlaceAsDisused();
|
||||
public static native void nativeCreateStandaloneNote(double lat, double lon, String text);
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,5 +7,6 @@ public enum RoadType
|
||||
Motorway,
|
||||
Ferry,
|
||||
Dirty,
|
||||
Steps
|
||||
Steps,
|
||||
Paved
|
||||
}
|
||||
|
||||
@@ -1433,4 +1433,10 @@
|
||||
<string name="type.leisure.sports_centre.sport.swimming">Plavecké centrum</string>
|
||||
<string name="type.disusedbusiness">Neobsazený prostor</string>
|
||||
<string name="type.leisure.fitness_centre.sport.yoga">Studio jógy</string>
|
||||
<string name="type.amenity.boat_rental">Půjčovna lodí</string>
|
||||
<string name="type.amenity.mobile_money_agent">Mobilní peněžní agent</string>
|
||||
<string name="type.amenity.payment_centre">Platební centrum</string>
|
||||
<string name="type.leisure.indoor_play">Vnitřní herní centrum</string>
|
||||
<string name="type.shop.telecommunication">Telekomunikační obchod</string>
|
||||
<string name="type.amenity.car_pooling">Spolujízda</string>
|
||||
</resources>
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
<string name="type.amenity.gambling">Gambling</string>
|
||||
<string name="type.leisure.adult_gaming_centre">Spillehal for voksne</string>
|
||||
<string name="type.leisure.amusement_arcade">Arkadespil</string>
|
||||
<string name="type.amenity.charging_station">Ladestander</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Cykelladestander</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Billadestander</string>
|
||||
<string name="type.amenity.charging_station">Ladestation</string>
|
||||
<string name="type.amenity.charging_station.bicycle">Ladestation til elcykler</string>
|
||||
<string name="type.amenity.charging_station.motorcar">Ladestation til elbiler</string>
|
||||
<string name="type.amenity.childcare">Vuggestue</string>
|
||||
<string name="type.amenity.cinema">Biograf</string>
|
||||
<string name="type.leisure.bowling_alley">Bowlinghal</string>
|
||||
@@ -83,17 +83,17 @@
|
||||
<string name="type.amenity.parking.street_side">Parkeringslomme</string>
|
||||
<string name="type.amenity.parking.street_side.fee">Parkeringslomme</string>
|
||||
<string name="type.amenity.parking.street_side.private">Privat parkeringslomme</string>
|
||||
<string name="type.amenity.parking.lane">Parkering i vejside</string>
|
||||
<string name="type.amenity.parking.lane.fee">Parkering i vejside</string>
|
||||
<string name="type.amenity.parking.lane.private">Privat parkering i vejside</string>
|
||||
<string name="type.amenity.parking_entrance">Parkeringsindkørsel</string>
|
||||
<string name="type.amenity.parking_entrance.private">Privat parkeringsindkørsel</string>
|
||||
<string name="type.amenity.parking_entrance.permissive">Parkeringsindkørsel</string>
|
||||
<string name="type.amenity.parking_space">Parkeringsplads</string>
|
||||
<string name="type.amenity.parking_space.permissive">Parkeringsplads</string>
|
||||
<string name="type.amenity.parking_space.private">Parkeringsplads</string>
|
||||
<string name="type.amenity.parking_space.underground">Parkeringsplads</string>
|
||||
<string name="type.amenity.parking_space.disabled">Handicapparkeringsplads</string>
|
||||
<string name="type.amenity.parking.lane">Gadeparkering</string>
|
||||
<string name="type.amenity.parking.lane.fee">Gadeparkering</string>
|
||||
<string name="type.amenity.parking.lane.private">Privat gadeparkering</string>
|
||||
<string name="type.amenity.parking_entrance">Indkørsel til parkeringshus</string>
|
||||
<string name="type.amenity.parking_entrance.private">Indkørsel til privat parkeringshus</string>
|
||||
<string name="type.amenity.parking_entrance.permissive">Indkørsel til parkeringshus</string>
|
||||
<string name="type.amenity.parking_space">Parkeringsbås</string>
|
||||
<string name="type.amenity.parking_space.permissive">Parkeringsbås</string>
|
||||
<string name="type.amenity.parking_space.private">Parkeringsbås</string>
|
||||
<string name="type.amenity.parking_space.underground">Parkeringsbås</string>
|
||||
<string name="type.amenity.parking_space.disabled">Handicapparkeringsbås</string>
|
||||
<string name="type.amenity.payment_terminal">Betalingsautomat</string>
|
||||
<string name="type.amenity.pharmacy">Apotek</string>
|
||||
<string name="type.amenity.place_of_worship">Tilbedelsessted</string>
|
||||
@@ -393,7 +393,7 @@
|
||||
<string name="type.man_made.bridge">Bro</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
<string name="type.highway.road.tunnel">Tunnel</string>
|
||||
<string name="type.highway.secondary">Sækunder hovedvej</string>
|
||||
<string name="type.highway.secondary">Sekundær hovedvej</string>
|
||||
<!-- These translations are used for all type.highway.*.bridge. -->
|
||||
<string name="type.highway.secondary.bridge">Bro</string>
|
||||
<!-- These translations are used for all type.highway.*.tunnel. -->
|
||||
@@ -964,7 +964,7 @@
|
||||
<string name="type.shop.curtain">Gardinhandel</string>
|
||||
<string name="type.shop.deli">Delikatessebutik</string>
|
||||
<string name="type.shop.department_store">Stormagasin</string>
|
||||
<string name="type.shop.doityourself">Isenkræmmer</string>
|
||||
<string name="type.shop.doityourself">Byggemarked</string>
|
||||
<string name="type.shop.dry_cleaning">Renseri</string>
|
||||
<string name="type.shop.electronics">Elektronikbutik</string>
|
||||
<string name="type.shop.erotic">Erotikbutik</string>
|
||||
@@ -984,7 +984,7 @@
|
||||
<string name="type.shop.hearing_aids">Høreapparatbutik</string>
|
||||
<string name="type.shop.herbalist">Urtebutik</string>
|
||||
<string name="type.shop.hifi">HiFi lyd</string>
|
||||
<string name="type.shop.houseware">Husholdningsartikler butik</string>
|
||||
<string name="type.shop.houseware">Isenkræmmer</string>
|
||||
<string name="type.shop.jewelry">Smykkebutik</string>
|
||||
<string name="type.shop.kitchen">Køkkenforretning</string>
|
||||
<string name="type.shop.laundry">Vaskeri</string>
|
||||
@@ -993,21 +993,21 @@
|
||||
<string name="type.shop.mobile_phone">Mobiltelefonbutik</string>
|
||||
<string name="type.shop.money_lender">Pengeudlåner</string>
|
||||
<string name="type.shop.motorcycle">Motorcykelforhandler</string>
|
||||
<string name="type.shop.motorcycle_repair">Motorcykel reparation</string>
|
||||
<string name="type.shop.motorcycle_repair">Motorcykelværksted</string>
|
||||
<string name="type.shop.music">Pladebutik</string>
|
||||
<string name="type.shop.musical_instrument">Butik med musikinstrumenter</string>
|
||||
<string name="type.shop.musical_instrument">Instrumentbutik</string>
|
||||
<string name="type.shop.newsagent">Avis-kiosk</string>
|
||||
<string name="type.shop.optician">Optiker</string>
|
||||
<string name="type.shop.outdoor">Fritidsudstyr</string>
|
||||
<string name="type.shop.outdoor">Friluftsbutik</string>
|
||||
<string name="type.shop.outpost">Afhentningssted</string>
|
||||
<string name="type.shop.pasta">Pasta butik</string>
|
||||
<string name="type.shop.pasta">Pastabutik</string>
|
||||
<string name="type.shop.pastry">Bagværk</string>
|
||||
<string name="type.shop.pawnbroker">Pantelåner</string>
|
||||
<string name="type.shop.pet">Dyrehandel</string>
|
||||
<string name="type.shop.pet_grooming">Kæledyrspleje</string>
|
||||
<string name="type.shop.photo">Fotobutik</string>
|
||||
<string name="type.shop.rental">Udlejningsbutik</string>
|
||||
<string name="type.shop.rental.bicycle">Cykeludlejningsbutik</string>
|
||||
<string name="type.shop.rental.bicycle">Cykeludlejning</string>
|
||||
<string name="type.shop.seafood">Fiskehandler</string>
|
||||
<string name="type.shop.second_hand">Genbrugsbutik</string>
|
||||
<string name="type.shop.shoes">Skobutik</string>
|
||||
@@ -1015,7 +1015,7 @@
|
||||
<string name="type.shop.stationery">Kontorartikler</string>
|
||||
<string name="type.shop.supermarket">Supermarked</string>
|
||||
<string name="type.shop.tattoo">Tatovør</string>
|
||||
<string name="type.shop.tea">Tebutik</string>
|
||||
<string name="type.shop.tea">Tehandel</string>
|
||||
<string name="type.shop.ticket">Billetkontor</string>
|
||||
<string name="type.shop.toys">Legetøjsbutik</string>
|
||||
<string name="type.shop.travel_agency">Rejsebureau</string>
|
||||
@@ -1026,7 +1026,7 @@
|
||||
<string name="type.shop.wine">Vinhandel</string>
|
||||
<string name="type.shop.agrarian">Landbrugsbutik</string>
|
||||
<string name="type.shop.antiques">Antikvitetsbutik</string>
|
||||
<string name="type.shop.appliance">Hvidevarer butik</string>
|
||||
<string name="type.shop.appliance">Hvidevareforretning</string>
|
||||
<!-- maybe change to Art Gallery for en-US when supported -->
|
||||
<string name="type.shop.art">Kunstbutik</string>
|
||||
<string name="type.shop.baby_goods">Børnebutik</string>
|
||||
@@ -1036,8 +1036,8 @@
|
||||
<string name="type.shop.charity">Velgørenhedsbutik</string>
|
||||
<string name="type.shop.cheese">Ostebutik</string>
|
||||
<string name="type.shop.craft">Kunst og kunsthåndværk</string>
|
||||
<string name="type.shop.dairy">Mejeriprodukter</string>
|
||||
<string name="type.shop.electrical">El-butik</string>
|
||||
<string name="type.shop.dairy">Mejeributik</string>
|
||||
<string name="type.shop.electrical">Elektrikerbutik</string>
|
||||
<string name="type.shop.fishing">Fiskeributik</string>
|
||||
<string name="type.shop.interior_decoration">Brugskunsthandel</string>
|
||||
<string name="type.shop.lottery">Lottobutik</string>
|
||||
@@ -1058,7 +1058,7 @@
|
||||
<string name="type.sport.australian_football">Australsk fodbold</string>
|
||||
<string name="type.sport.baseball">Baseball</string>
|
||||
<string name="type.sport.basketball">Basketball</string>
|
||||
<string name="type.sport.beachvolleyball">Beachvolley</string>
|
||||
<string name="type.sport.beachvolleyball">Strandvolley</string>
|
||||
<string name="type.sport.chess">Skak</string>
|
||||
<string name="type.sport.curling">Curling</string>
|
||||
<string name="type.sport.equestrian">Ridesport</string>
|
||||
@@ -1163,7 +1163,7 @@
|
||||
<string name="type.highway.bridleway">Ridesti</string>
|
||||
<string name="type.highway.elevator">Elevator</string>
|
||||
<string name="type.highway.bridleway.permissive">Ridesti</string>
|
||||
<string name="type.amenity.biergarten">Traktørsted</string>
|
||||
<string name="type.amenity.biergarten">Biergarten</string>
|
||||
<string name="type.aerialway">Svævebane</string>
|
||||
<string name="type.aerialway.cable_car">Kabinelift</string>
|
||||
<string name="type.aerialway.drag_lift">Træklift</string>
|
||||
@@ -1220,7 +1220,7 @@
|
||||
<string name="type.cuisine.bubble_tea">Boblete</string>
|
||||
<string name="type.barrier.wall">Mur</string>
|
||||
<string name="type.cuisine.fish_and_chips">Fish and Chips</string>
|
||||
<string name="type.highway">Hovedvej</string>
|
||||
<string name="type.highway">Vej</string>
|
||||
<string name="type.highway.services">Rasteplads</string>
|
||||
<string name="type.internet_access">Internet</string>
|
||||
<string name="type.internet_access.wlan">Trådløst internet</string>
|
||||
@@ -1305,7 +1305,7 @@
|
||||
<string name="type.railway.subway">Metrolinje</string>
|
||||
<string name="type.public_transport.platform">Stoppested</string>
|
||||
<string name="type.railway.subway.tunnel">Metrolinjetunnel</string>
|
||||
<string name="type.shop.hardware">Byggemarked</string>
|
||||
<string name="type.shop.hardware">Isenkræmmer</string>
|
||||
<string name="type.aerialway.t.bar">Ankerlift</string>
|
||||
<string name="type.traffic_calming.bump">Vejbump</string>
|
||||
<string name="type.route.ferry">Færgerute</string>
|
||||
@@ -1389,8 +1389,32 @@
|
||||
<string name="type.barrier.wicket_gate">Portlåge</string>
|
||||
<string name="type.natural.wetland.reedbed">Rørskov</string>
|
||||
<string name="type.shop.lighting">Lysbutik</string>
|
||||
<string name="type.amenity.bench.backless">Rygløs bænk</string>
|
||||
<string name="type.amenity.charging_station.motorcar.small">Opladningspunkt til biler</string>
|
||||
<string name="type.leisure.sports_centre.sport.multi">Sportscenter</string>
|
||||
<string name="type.leisure.sports_centre.sport.american_football">Sportscenter</string>
|
||||
<string name="type.amenity.bench.backless">Bænk</string>
|
||||
<string name="type.amenity.charging_station.motorcar.small">Ladestander til biler</string>
|
||||
<string name="type.leisure.sports_centre.sport.multi">Idrætscenter</string>
|
||||
<string name="type.leisure.sports_centre.sport.american_football">Idrætscenter</string>
|
||||
<string name="type.amenity.car_pooling">Samkørsel</string>
|
||||
<string name="type.shop.telecommunication">Telefonibutik</string>
|
||||
<string name="type.disusedbusiness">Ledig forretning</string>
|
||||
<string name="type.amenity.boat_rental">Bådudlejning</string>
|
||||
<string name="type.man_made.observatory">Observatorium</string>
|
||||
<string name="type.amenity.lounger">Solseng</string>
|
||||
<string name="type.leisure.bandstand">Scenepavillon</string>
|
||||
<string name="type.leisure.indoor_play">Legeland</string>
|
||||
<string name="type.leisure.sports_centre.sport.archery">Bueskydningscenter</string>
|
||||
<string name="type.leisure.sports_centre.sport.athletics">Atletikcenter</string>
|
||||
<string name="type.leisure.sports_centre.sport.baseball">Baseballcenter</string>
|
||||
<string name="type.leisure.sports_centre.sport.badminton">Badmintoncenter</string>
|
||||
<string name="type.leisure.sports_centre.sport.basketball">Basketballcenter</string>
|
||||
<string name="type.leisure.sports_centre.sport.golf">Golfcenter</string>
|
||||
<string name="type.leisure.sports_centre.sport.gymnastics">Gymnastikcenter</string>
|
||||
<string name="type.man_made.telescope">Teleskop</string>
|
||||
<string name="type.man_made.telescope.optical">Teleskop (Optisk)</string>
|
||||
<string name="type.man_made.telescope.radio">Teleskop (Radio)</string>
|
||||
<string name="type.man_made.telescope.gamma">Teleskop (Gamma)</string>
|
||||
<string name="type.leisure.sports_centre.sport.swimming">Svømmehal</string>
|
||||
<string name="type.amenity.food_bank">Fødevarebank</string>
|
||||
<string name="type.amenity.soup_kitchen">Suppekøkken</string>
|
||||
<string name="type.amenity.food_sharing">Fødevarerdeling</string>
|
||||
<string name="type.amenity.give_box">Donationsbøsse</string>
|
||||
</resources>
|
||||
|
||||
@@ -337,7 +337,9 @@
|
||||
<string name="type.cuisine.vegetarian">Vegetarisch</string>
|
||||
<string name="type.cuisine.vietnamese">Vietnamesisch</string>
|
||||
<string name="type.emergency">Notfall</string>
|
||||
<string name="type.emergency.access_point">Rettungspunkt</string>
|
||||
<string name="type.emergency.assembly_point">Notfall-Sammelpunkt</string>
|
||||
<string name="type.emergency.life_ring">Rettungsring</string>
|
||||
<string name="type.emergency.defibrillator">Defibrillator</string>
|
||||
<string name="type.emergency.fire_hydrant">Hydrant</string>
|
||||
<string name="type.emergency.phone">Notruftelefon</string>
|
||||
@@ -1438,4 +1440,15 @@
|
||||
<string name="type.power.portal">Abspannportal</string>
|
||||
<string name="type.shop.lighting">Lampenladen</string>
|
||||
<string name="type.disusedbusiness">Leerstehendes Geschäft</string>
|
||||
<string name="type.leisure.indoor_play">Indoor-Spielplatz</string>
|
||||
<string name="type.amenity.car_pooling">Fahrgemeinschaften</string>
|
||||
<string name="type.shop.telecommunication">Telekommunikationsgeschäft</string>
|
||||
<string name="type.man_made.telescope">Teleskop</string>
|
||||
<string name="type.man_made.telescope.optical">Teleskop (Optisch)</string>
|
||||
<string name="type.man_made.telescope.radio">Teleskop (Radio)</string>
|
||||
<string name="type.man_made.telescope.gamma">Teleskop (Gamma)</string>
|
||||
<string name="type.man_made.observatory">Observatorium</string>
|
||||
<string name="type.amenity.payment_centre">Zahlungszentrum</string>
|
||||
<string name="type.amenity.soup_kitchen">Suppenküche</string>
|
||||
<string name="type.amenity.food_bank">Tafel</string>
|
||||
</resources>
|
||||
|
||||
@@ -1437,4 +1437,13 @@
|
||||
<string name="type.leisure.fitness_centre.sport.yoga">Estudio de yoga</string>
|
||||
<string name="type.disusedbusiness">Local comercial vacante</string>
|
||||
<string name="type.amenity.lounger">Tumbona</string>
|
||||
<string name="type.amenity.boat_rental">Alquiler de botes</string>
|
||||
<string name="type.man_made.telescope">Telescopio</string>
|
||||
<string name="type.man_made.telescope.optical">Telescopio (óptico)</string>
|
||||
<string name="type.man_made.telescope.radio">Radiotelescopio</string>
|
||||
<string name="type.man_made.telescope.gamma">Telescopio Fermi</string>
|
||||
<string name="type.man_made.observatory">Observatorio</string>
|
||||
<string name="type.amenity.mobile_money_agent">Agencia de efectivo móvil</string>
|
||||
<string name="type.amenity.car_pooling">Punto de Vehículo Compartido</string>
|
||||
<string name="type.amenity.payment_centre">Centro de pagos</string>
|
||||
</resources>
|
||||
|
||||
@@ -1436,4 +1436,19 @@
|
||||
<string name="type.leisure.sports_centre.sport.yoga">Joogakeskus</string>
|
||||
<string name="type.disusedbusiness">Vaba äripind</string>
|
||||
<string name="type.amenity.lounger">Rannatool</string>
|
||||
<string name="type.amenity.boat_rental">Paadirent</string>
|
||||
<string name="type.man_made.telescope">Teleskoop</string>
|
||||
<string name="type.man_made.telescope.optical">Optiline teleskoop</string>
|
||||
<string name="type.man_made.telescope.radio">Raadioteleskoop</string>
|
||||
<string name="type.man_made.telescope.gamma">Gammateleskoop</string>
|
||||
<string name="type.man_made.observatory">Observatoorium</string>
|
||||
<string name="type.amenity.mobile_money_agent">Nutiraha müüja</string>
|
||||
<string name="type.amenity.car_pooling">Ühiskasutusautode peatus</string>
|
||||
<string name="type.amenity.payment_centre">Maksekeskus</string>
|
||||
<string name="type.leisure.indoor_play">Mängusaal/Mängutuba</string>
|
||||
<string name="type.shop.telecommunication">Sideteenuste pood</string>
|
||||
<string name="type.amenity.soup_kitchen">Supiköök</string>
|
||||
<string name="type.amenity.food_bank">Toidupank</string>
|
||||
<string name="type.amenity.food_sharing">Toidujagamine</string>
|
||||
<string name="type.amenity.give_box">Annetuskast</string>
|
||||
</resources>
|
||||
|
||||
@@ -1434,6 +1434,21 @@
|
||||
<string name="type.leisure.sports_centre.sport.volleyball">Complexe sportif</string>
|
||||
<string name="type.leisure.sports_centre.sport.yoga">Complexe sportif</string>
|
||||
<string name="type.leisure.fitness_centre.sport.yoga">Salle de yoga</string>
|
||||
<string name="type.disusedbusiness">Locaux commerciaux libres</string>
|
||||
<string name="type.disusedbusiness">Magasin vacant</string>
|
||||
<string name="type.amenity.lounger">Chaise longue</string>
|
||||
<string name="type.amenity.boat_rental">Vente de bateau</string>
|
||||
<string name="type.amenity.payment_centre">Centre de paiement</string>
|
||||
<string name="type.amenity.mobile_money_agent">Agent d\'argent liquide</string>
|
||||
<string name="type.leisure.indoor_play">Complexe de jeux intérieurs</string>
|
||||
<string name="type.shop.telecommunication">Boutique télécom</string>
|
||||
<string name="type.man_made.telescope.optical">Télescope (optique)</string>
|
||||
<string name="type.man_made.telescope.radio">Télescope (radio)</string>
|
||||
<string name="type.man_made.observatory">Observatoire</string>
|
||||
<string name="type.amenity.food_bank">Banque alimentaire</string>
|
||||
<string name="type.amenity.food_sharing">Repas partagé</string>
|
||||
<string name="type.man_made.telescope.gamma">Télescope (Gamma)</string>
|
||||
<string name="type.amenity.car_pooling">Covoiturage</string>
|
||||
<string name="type.amenity.soup_kitchen">Soupe populaire</string>
|
||||
<string name="type.amenity.give_box">Boîte à don</string>
|
||||
<string name="type.man_made.telescope">Télescope</string>
|
||||
</resources>
|
||||
|
||||
@@ -1400,4 +1400,5 @@
|
||||
<string name="type.shop.lighting">Negozio di illuminazione</string>
|
||||
<string name="type.amenity.bench.backless">Panchina senza schienale</string>
|
||||
<string name="type.amenity.charging_station.motorcar.small">Colonnina di ricarica</string>
|
||||
<string name="type.man_made.observatory">Osservatorio</string>
|
||||
</resources>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<string name="type.place.sea">Jūra</string>
|
||||
<string name="type.amenity.bar">Bārs</string>
|
||||
<string name="type.amenity.bicycle_parking">Divriteņu novietne</string>
|
||||
<string name="type.amenity.bicycle_rental">Velosipēdu īre</string>
|
||||
<string name="type.amenity.bicycle_rental">Velosipēdu noma</string>
|
||||
<string name="type.amenity.biergarten">Alus dārzs</string>
|
||||
<string name="type.amenity.bureau_de_change">Valūtas maiņa</string>
|
||||
<string name="type.amenity.bus_station">Autoosta</string>
|
||||
@@ -136,4 +136,23 @@
|
||||
<string name="type.sport.climbing">Kāpšana</string>
|
||||
<string name="type.sport.scuba_diving">Niršana</string>
|
||||
<string name="type.sport.cricket">Krikets</string>
|
||||
<string name="type.shop.telecommunication">Tālsaziņas preču veikals</string>
|
||||
<string name="type.shop.ticket">Biļešu tirdzniecības vieta</string>
|
||||
<string name="type.shop.toys">Rotaļlietu veikals</string>
|
||||
<string name="type.shop.travel_agency">Ceļojumu aģentūra</string>
|
||||
<string name="type.shop.tyres">Riepu veikals</string>
|
||||
<string name="type.amenity.payment_centre">Maksājumu centrs</string>
|
||||
<string name="type.amenity.pharmacy">Aptieka</string>
|
||||
<string name="type.amenity.place_of_worship">Pielūgsmes vieta</string>
|
||||
<string name="type.amenity.place_of_worship.buddhist">Budistu templis</string>
|
||||
<string name="type.amenity.place_of_worship.christian">Baznīca</string>
|
||||
<string name="type.amenity.boat_rental">Laivu noma</string>
|
||||
<string name="type.amenity.bicycle_repair_station">Divriteņu darbnīca</string>
|
||||
<string name="type.man_made.telescope.gamma">Teleskops (Gamma)</string>
|
||||
<string name="type.man_made.observatory">Observatorija</string>
|
||||
<string name="type.man_made.telescope">Teleskops</string>
|
||||
<string name="type.man_made.telescope.optical">Teleskops (optiskais)</string>
|
||||
<string name="type.man_made.telescope.radio">Teleskops (radio)</string>
|
||||
<string name="type.amenity.soup_kitchen">Zupas virtuve</string>
|
||||
<string name="type.amenity.food_sharing">Ēdiena kopīgošana</string>
|
||||
</resources>
|
||||
|
||||
@@ -1363,4 +1363,13 @@
|
||||
<string name="type.railway.funicular.tunnel">Kabelbanetunnel</string>
|
||||
<string name="type.military">Militært</string>
|
||||
<string name="type.landuse.education">Utdanningsinstitusjon</string>
|
||||
<string name="type.man_made.telescope">Teleskop</string>
|
||||
<string name="type.amenity.food_bank">Matsentral</string>
|
||||
<string name="type.man_made.telescope.gamma">Teleskop (Gamma)</string>
|
||||
<string name="type.man_made.telescope.radio">Teleskop (Radio)</string>
|
||||
<string name="type.amenity.soup_kitchen">Suppekjøkken</string>
|
||||
<string name="type.amenity.car_pooling">Samkjøring</string>
|
||||
<string name="type.shop.telecommunication">Telekommunikasjonsbutikk</string>
|
||||
<string name="type.amenity.boat_rental">Båtutleie</string>
|
||||
<string name="type.man_made.observatory">Observatorium</string>
|
||||
</resources>
|
||||
|
||||
@@ -1435,4 +1435,15 @@
|
||||
<string name="type.leisure.sports_centre.sport.yoga">Centrum sportowe</string>
|
||||
<string name="type.leisure.fitness_centre.sport.yoga">Studio Jogi</string>
|
||||
<string name="type.disusedbusiness">Pusty lokal</string>
|
||||
<string name="type.amenity.boat_rental">Wypożyczalnia łodzi</string>
|
||||
<string name="type.man_made.telescope">Teleskop</string>
|
||||
<string name="type.man_made.telescope.optical">Teleskop optyczny</string>
|
||||
<string name="type.man_made.telescope.radio">Radioteleskop</string>
|
||||
<string name="type.man_made.telescope.gamma">Teleskop (prom. gamma)</string>
|
||||
<string name="type.man_made.observatory">Obserwatorium</string>
|
||||
<string name="type.amenity.car_pooling">Car Pooling</string>
|
||||
<string name="type.shop.telecommunication">Sklep dostawcy usług telekomunikacyjnych</string>
|
||||
<string name="type.amenity.food_bank">Bank żywności</string>
|
||||
<string name="type.amenity.soup_kitchen">Jadłodajnia</string>
|
||||
<string name="type.amenity.food_sharing">Jadłodzielnia</string>
|
||||
</resources>
|
||||
|
||||
@@ -1425,4 +1425,19 @@
|
||||
<string name="type.leisure.fitness_centre.sport.yoga">Academia de ioga</string>
|
||||
<string name="type.disusedbusiness">Estabelecimento vazio</string>
|
||||
<string name="type.amenity.lounger">Espreguiçadeira</string>
|
||||
<string name="type.amenity.boat_rental">Aluguel de barco</string>
|
||||
<string name="type.man_made.telescope">Telescópio</string>
|
||||
<string name="type.man_made.telescope.optical">Telescópio (óptico)</string>
|
||||
<string name="type.man_made.telescope.radio">Telescópio (rádio)</string>
|
||||
<string name="type.man_made.telescope.gamma">Telescópio (gama)</string>
|
||||
<string name="type.man_made.observatory">Observatório</string>
|
||||
<string name="type.amenity.mobile_money_agent">Agente de Mobile Money</string>
|
||||
<string name="type.amenity.car_pooling">Carona</string>
|
||||
<string name="type.amenity.payment_centre">Centro de pagamentos</string>
|
||||
<string name="type.leisure.indoor_play">Centro de recreação interno</string>
|
||||
<string name="type.shop.telecommunication">Loja de Telecomunicação</string>
|
||||
<string name="type.amenity.soup_kitchen">Restaurante popular</string>
|
||||
<string name="type.amenity.food_bank">Banco de alimentos</string>
|
||||
<string name="type.amenity.food_sharing">Compartilhamento de alimentos</string>
|
||||
<string name="type.amenity.give_box">Caixa de doação</string>
|
||||
</resources>
|
||||
|
||||
@@ -652,8 +652,8 @@
|
||||
<string name="type.leisure.sauna">Сауна</string>
|
||||
<string name="type.leisure.slipway">Лодочный спуск</string>
|
||||
<string name="type.leisure.sports_centre">Спорткомплекс</string>
|
||||
<string name="type.sport.climbing">Скалодром</string>
|
||||
<string name="type.sport.yoga">Йога-центр</string>
|
||||
<string name="type.sport.climbing">Скалолазание</string>
|
||||
<string name="type.sport.yoga">Йога</string>
|
||||
<string name="type.leisure.stadium">Стадион</string>
|
||||
<string name="type.leisure.swimming_pool">Плавательный бассейн</string>
|
||||
<string name="type.leisure.swimming_pool.private">Плавательный бассейн</string>
|
||||
@@ -1131,7 +1131,7 @@
|
||||
<string name="type.shop.chemist">Бытовая химия</string>
|
||||
<string name="type.shop.chocolate">Магазин шоколада</string>
|
||||
<string name="type.shop.clothes">Магазин одежды</string>
|
||||
<string name="type.shop.coffee">Магазин кофе</string>
|
||||
<string name="type.shop.coffee">Продавец кофе</string>
|
||||
<string name="type.shop.computer">Компьютерный магазин</string>
|
||||
<string name="type.shop.confectionery">Кондитерская</string>
|
||||
<string name="type.shop.convenience">Продуктовый магазин</string>
|
||||
@@ -1248,7 +1248,7 @@
|
||||
<string name="type.sport.handball">Гандбол</string>
|
||||
<string name="type.sport.multi">Различные виды спорта</string>
|
||||
<!-- Used to tag a scuba diving site. -->
|
||||
<string name="type.sport.scuba_diving">Место для ныряния с аквалангом</string>
|
||||
<string name="type.sport.scuba_diving">Подводное плавание с аквалангом</string>
|
||||
<string name="type.sport.shooting">Стрельба</string>
|
||||
<string name="type.sport.skateboard">Скейтбординг</string>
|
||||
<string name="type.sport.skiing">Лыжи</string>
|
||||
@@ -1383,7 +1383,7 @@
|
||||
<string name="type.fee.yes">$</string>
|
||||
<string name="type.barrier.guard_rail">Дорожное ограждение (отбойник)</string>
|
||||
<string name="type.landuse.plant_nursery">Садовый питомник</string>
|
||||
<string name="type.amenity.studio">Студия</string>
|
||||
<string name="type.amenity.studio">Медиа-студия</string>
|
||||
<string name="type.leisure.firepit">Кострище</string>
|
||||
<string name="type.highway.ladder">Лестница-лаз</string>
|
||||
<string name="type.sport.diving">Высотные прыжки в воду</string>
|
||||
@@ -1399,4 +1399,57 @@
|
||||
<string name="type.office.security">Офис охранника</string>
|
||||
<string name="type.building.guardhouse">Будка безопасности</string>
|
||||
<string name="type.power.portal">Портальная опора</string>
|
||||
<string name="type.amenity.boat_rental">Прокат лодок</string>
|
||||
<string name="type.man_made.telescope">Телескоп</string>
|
||||
<string name="type.man_made.telescope.optical">Телескоп (оптический)</string>
|
||||
<string name="type.man_made.telescope.radio">Телескоп (радио)</string>
|
||||
<string name="type.man_made.telescope.gamma">Телескоп (Гамма)</string>
|
||||
<string name="type.man_made.observatory">Обсерватория</string>
|
||||
<string name="type.amenity.charging_station.motorcar.small">Пункт зарядки автомобиля</string>
|
||||
<string name="type.amenity.lounger">Шезлонг</string>
|
||||
<string name="type.amenity.car_pooling">Совместное использование авто</string>
|
||||
<string name="type.amenity.payment_centre">Платежный центр</string>
|
||||
<string name="type.leisure.bandstand">Эстрада</string>
|
||||
<string name="type.leisure.indoor_play">Крытый игровой центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.multi">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.american_football">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.archery">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.athletics">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.australian_football">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.badminton">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.baseball">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.basketball">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.beachvolleyball">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.bowls">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.climbing">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.cricket">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.curling">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.equestrian">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.field_hockey">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.futsal">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.golf">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.gymnastics">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.handball">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.ice_hockey">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.padel">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.pelota">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.scuba_diving">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.shooting">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.skateboard">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.skiing">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.soccer">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.swimming">Плавательный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.table_tennis">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.tennis">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.volleyball">Спортивный центр</string>
|
||||
<string name="type.leisure.sports_centre.sport.yoga">Спортивный центр</string>
|
||||
<string name="type.leisure.fitness_centre.sport.yoga">Студия Йоги</string>
|
||||
<string name="type.shop.telecommunication">Телекоммуникационный магазин</string>
|
||||
<string name="type.disusedbusiness">Вакантный бизнес</string>
|
||||
<string name="type.amenity.soup_kitchen">Бесплатная столовая</string>
|
||||
<string name="type.amenity.food_bank">Продовольственный банк</string>
|
||||
<string name="type.amenity.food_sharing">Обмен едой</string>
|
||||
<string name="type.amenity.give_box">Подарить коробку</string>
|
||||
<string name="type.amenity.bench.backless">Скамья без спинки</string>
|
||||
<string name="type.amenity.mobile_money_agent">Агент мобильных платежей</string>
|
||||
</resources>
|
||||
|
||||
@@ -154,4 +154,10 @@
|
||||
<string name="type.amenity.charging_station.motorcar.small">Polnilno mesto za avtomobile</string>
|
||||
<string name="type.amenity.childcare">Vrtec</string>
|
||||
<string name="type.amenity.cinema">Kino</string>
|
||||
<string name="type.amenity.boat_rental">Izposoja čolnov</string>
|
||||
<string name="type.man_made.telescope">Teleskop</string>
|
||||
<string name="type.man_made.telescope.optical">Teleskop (svetlobni)</string>
|
||||
<string name="type.man_made.telescope.radio">Teleskop (radijski)</string>
|
||||
<string name="type.man_made.telescope.gamma">Teleskop (gama žarki)</string>
|
||||
<string name="type.man_made.observatory">Zvezdarna</string>
|
||||
</resources>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
<string name="type.amenity.bbq">Грил</string>
|
||||
<string name="type.amenity.bench">Клупа</string>
|
||||
<string name="type.amenity.bicycle_parking">Паркинг за бицикле</string>
|
||||
<string name="type.amenity.bicycle_rental">Рентирање бицикли</string>
|
||||
<string name="type.amenity.bicycle_rental">Изнајмљивање бицикала</string>
|
||||
<string name="type.amenity.bicycle_repair_station">Станица за поправку бицикала</string>
|
||||
<string name="type.amenity.biergarten">Пивска башта</string>
|
||||
<string name="type.amenity.brothel">Јавна кућа</string>
|
||||
@@ -648,7 +648,7 @@
|
||||
<string name="type.leisure.slipway">Навоз</string>
|
||||
<string name="type.leisure.sports_centre">Спортски центар</string>
|
||||
<string name="type.sport.climbing">Вештачка стена</string>
|
||||
<string name="type.sport.yoga">Јога студио</string>
|
||||
<string name="type.sport.yoga">Јога</string>
|
||||
<string name="type.leisure.stadium">Стадион</string>
|
||||
<string name="type.leisure.swimming_pool">Базен</string>
|
||||
<string name="type.leisure.swimming_pool.private">Приватни базен</string>
|
||||
@@ -1161,7 +1161,7 @@
|
||||
<string name="type.shop.pet_grooming">Грумер</string>
|
||||
<string name="type.shop.photo">Фотограф</string>
|
||||
<string name="type.shop.rental">Центар за изнајмљивање</string>
|
||||
<string name="type.shop.rental.bicycle">Изнајмљивање бицикала</string>
|
||||
<string name="type.shop.rental.bicycle">Центар за изнајмљивање бицикала</string>
|
||||
<string name="type.shop.seafood">Рибарница</string>
|
||||
<string name="type.shop.second_hand">Половна одећа</string>
|
||||
<string name="type.shop.shoes">Обућа</string>
|
||||
@@ -1230,7 +1230,7 @@
|
||||
<string name="type.sport.soccer">Фудбал</string>
|
||||
<string name="type.sport.swimming">Пливање</string>
|
||||
<string name="type.sport.table_tennis">Стони тенис</string>
|
||||
<string name="type.sport.tennis">Тенис</string>
|
||||
<string name="type.sport.tennis">Тениски терен</string>
|
||||
<string name="type.sport.volleyball">Одбојка</string>
|
||||
<string name="type.sport.10pin">Куглање</string>
|
||||
<string name="type.sport.9pin">Куглање</string>
|
||||
@@ -1375,7 +1375,7 @@
|
||||
<string name="type.leisure.firepit">Огњиште</string>
|
||||
<string name="type.landuse.plant_nursery">Расадник</string>
|
||||
<string name="type.barrier.guard_rail">Заштитна ограда</string>
|
||||
<string name="type.amenity.studio">Студио</string>
|
||||
<string name="type.amenity.studio">Медијски студио</string>
|
||||
<string name="type.highway.ladder">Мердевине</string>
|
||||
<string name="type.man_made.crane">Кран</string>
|
||||
<string name="type.railway.station.subway.qingdao">Метро станица</string>
|
||||
@@ -1398,4 +1398,57 @@
|
||||
<string name="type.building.guardhouse">Кућица обезбеђења</string>
|
||||
<string name="type.power.portal">Носач електричних водова</string>
|
||||
<string name="type.shop.lighting">Продавница расвете</string>
|
||||
<string name="type.amenity.give_box">Кутија за поклоне</string>
|
||||
<string name="type.amenity.food_sharing">Дељење хране</string>
|
||||
<string name="type.amenity.food_bank">Банка хране</string>
|
||||
<string name="type.amenity.soup_kitchen">Народна кухиња</string>
|
||||
<string name="type.man_made.observatory">Опсерваторија</string>
|
||||
<string name="type.man_made.telescope">Телескоп</string>
|
||||
<string name="type.man_made.telescope.optical">Телескоп (оптички)</string>
|
||||
<string name="type.man_made.telescope.radio">Телескоп (радио)</string>
|
||||
<string name="type.man_made.telescope.gamma">Телескоп (гама)</string>
|
||||
<string name="type.amenity.car_pooling">Заједничка вожња</string>
|
||||
<string name="type.amenity.payment_centre">Плаћање рачуна</string>
|
||||
<string name="type.amenity.bench.backless">Клупа без наслона</string>
|
||||
<string name="type.amenity.boat_rental">Изнајмљивање чамаца</string>
|
||||
<string name="type.amenity.charging_station.motorcar.small">Место за пуњење аутомобила</string>
|
||||
<string name="type.amenity.lounger">Лежаљка</string>
|
||||
<string name="type.amenity.mobile_money_agent">Посредник за мобилно плаћање</string>
|
||||
<string name="type.leisure.bandstand">Бина</string>
|
||||
<string name="type.leisure.indoor_play">Играоница</string>
|
||||
<string name="type.leisure.sports_centre.sport.multi">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.american_football">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.archery">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.athletics">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.australian_football">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.badminton">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.baseball">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.basketball">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.beachvolleyball">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.bowls">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.climbing">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.cricket">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.curling">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.equestrian">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.field_hockey">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.futsal">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.golf">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.gymnastics">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.handball">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.ice_hockey">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.padel">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.pelota">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.scuba_diving">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.shooting">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.skateboard">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.skiing">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.soccer">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.swimming">Пливачки центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.table_tennis">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.tennis">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.volleyball">Спортски центар</string>
|
||||
<string name="type.leisure.sports_centre.sport.yoga">Спортски центар</string>
|
||||
<string name="type.leisure.fitness_centre.sport.yoga">Јога студио</string>
|
||||
<string name="type.shop.telecommunication">Продавница мобилног оператера</string>
|
||||
<string name="type.disusedbusiness">Некоришћен пословни простор</string>
|
||||
</resources>
|
||||
|
||||
@@ -43,6 +43,11 @@
|
||||
<string name="type.amenity.motorcycle_rental">Motorcycle Rental</string>
|
||||
<string name="type.amenity.car_sharing">Car Sharing</string>
|
||||
<string name="type.amenity.car_wash">Car Wash</string>
|
||||
<string name="type.man_made.telescope">Telescope</string>
|
||||
<string name="type.man_made.telescope.optical">Telescope (Optical)</string>
|
||||
<string name="type.man_made.telescope.radio">Telescope (Radio)</string>
|
||||
<string name="type.man_made.telescope.gamma">Telescope (Gamma)</string>
|
||||
<string name="type.man_made.observatory">Observatory</string>
|
||||
<string name="type.amenity.casino">Casino</string>
|
||||
<string name="type.amenity.gambling">Gambling</string>
|
||||
<string name="type.leisure.adult_gaming_centre">Adult Gaming Centre</string>
|
||||
@@ -123,6 +128,7 @@
|
||||
<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.car_pooling">Car Pooling</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>
|
||||
@@ -365,7 +371,9 @@
|
||||
<string name="type.cuisine.vegetarian">Vegetarian</string>
|
||||
<string name="type.cuisine.vietnamese">Vietnamese</string>
|
||||
<string name="type.emergency">Emergency</string>
|
||||
<string name="type.emergency.access_point">Emergency Rescue Point</string>
|
||||
<string name="type.emergency.assembly_point">Emergency Assembly Point</string>
|
||||
<string name="type.emergency.life_ring">Lifebuoy</string>
|
||||
<string name="type.emergency.defibrillator">Defibrillator</string>
|
||||
<string name="type.emergency.fire_hydrant">Fire Hydrant</string>
|
||||
<string name="type.emergency.phone">Emergency Phone</string>
|
||||
@@ -1440,6 +1448,10 @@
|
||||
<string name="type.self_service.no">No self-service</string>
|
||||
<!-- https://wiki.openstreetmap.org/wiki/Key:social_facility -->
|
||||
<string name="type.amenity.social_facility">Social Facility</string>
|
||||
<string name="type.amenity.soup_kitchen">Soup Kitchen</string>
|
||||
<string name="type.amenity.food_bank">Food Bank</string>
|
||||
<string name="type.amenity.food_sharing">Food Sharing</string>
|
||||
<string name="type.amenity.give_box">Give Box</string>
|
||||
<!-- https://wiki.openstreetmap.org/wiki/Tag:emergency=emergency_ward_entrance -->
|
||||
<string name="type.emergency.emergency_ward_entrance">Emergency Ward Entrance</string>
|
||||
<!-- https://wiki.openstreetmap.org/wiki/Tag:amenity=dojo -->
|
||||
|
||||
@@ -119,7 +119,7 @@ echo "Generating search categories / synonyms..."
|
||||
if [ -z "$SKIP_GENERATE_SYMBOLS" ]; then
|
||||
if Diff data/symbols_hash data/styles/*/*/symbols/* || [ ! -z "$SYMBOLS_NOT_GENERATED" ]; then
|
||||
echo "Generating symbols..."
|
||||
bash ./tools/unix/generate_symbols.sh
|
||||
bash ./tools/unix/generate_symbols.sh || (rm data/symbols_hash; exit 1)
|
||||
fi
|
||||
else
|
||||
echo "Skipping generate symbols..."
|
||||
@@ -128,7 +128,7 @@ fi
|
||||
if [ -z "$SKIP_GENERATE_DRULES" ]; then
|
||||
if Diff data/drules_hash data/styles/*/*/*.mapcss data/styles/*/*/*.prio.txt data/mapcss-mapping.csv || [ ! -z "$DRULES_NOT_GENERATED" ]; then
|
||||
echo "Generating drules..."
|
||||
bash ./tools/unix/generate_drules.sh
|
||||
bash ./tools/unix/generate_drules.sh || (rm data/drules_hash; exit 1)
|
||||
fi
|
||||
else
|
||||
echo "Skipping generate drules..."
|
||||
|
||||
@@ -397,7 +397,9 @@
|
||||
"amenity-payment_terminal": "Bezahlterminal",
|
||||
"amenity-public_bath": "Öffentliches Bad",
|
||||
"amenity-shower": "Dusche",
|
||||
"emergency-access_point": "4Rettungspunkt|Notfallpunkt|Notfall-Rettungspunkt|Notfall-Treffpunkt",
|
||||
"emergency-assembly_point": "Notfall-Sammelpunkt",
|
||||
"emergency-life_ring": "4Rettungsring",
|
||||
"emergency-defibrillator": "4Defibrillator",
|
||||
"emergency-fire_hydrant": "4Hydrant",
|
||||
"emergency-lifeguard": "Notfall-Rettungsschwimmer|Rettungsschwimmer",
|
||||
|
||||
@@ -345,6 +345,8 @@
|
||||
"shop-dry_cleaning": "3Dry Cleaner|cleaning",
|
||||
"shop-tyres|@shop": "3Tyre|tyres",
|
||||
"amenity-car_wash": "3Car Wash",
|
||||
"man_made-telescope|man_made-telescope-optical|man_made-telescope-radio|man_made-telescope-gamma": "5Telescope",
|
||||
"man_made-observatory": "4Observatory",
|
||||
"amenity-veterinary": "Veterinary Doctor|4veterinary",
|
||||
"amenity-animal_shelter": "Animal Shelter",
|
||||
"@charging_station": "4Charging Station|charging",
|
||||
@@ -419,12 +421,15 @@
|
||||
"amenity-internet_cafe": "3Internet Cafe",
|
||||
"amenity-motorcycle_parking": "4Motorcycle Parking",
|
||||
"amenity-parking_space-disabled|@category_parking": "Disabled Parking Space",
|
||||
"amenity-car_pooling|@category_parking": "Car Pooling",
|
||||
"amenity-nursing_home": "4Nursing Home",
|
||||
"amenity-payment_terminal": "Payment Terminal",
|
||||
"amenity-payment_centre": "Payment Centre",
|
||||
"amenity-public_bath": "Public Bath",
|
||||
"amenity-shower": "Shower",
|
||||
"emergency-access_point": "5Emergency Rescue Point|Emergency Location|Emergency Marker|Emergency Access Point",
|
||||
"emergency-assembly_point": "Emergency Assembly Point",
|
||||
"emergency-life_ring": "5Lifebuoy|6Life Ring|life-ring|lifering|flotation device|floatation device",
|
||||
"emergency-defibrillator": "4Defibrillator|AED",
|
||||
"emergency-fire_hydrant": "4Fire Hydrant|Fire Plug",
|
||||
"emergency-lifeguard": "Lifeguard|Lifesaver",
|
||||
@@ -493,6 +498,10 @@
|
||||
"man_made-cairn": "4Cairn",
|
||||
"wheelchair-yes": "5Wheelchair",
|
||||
"amenity-social_facility": "Social Facility",
|
||||
"social_facility-soup_kitchen": "4Soup Kitchen|Food",
|
||||
"social_facility-food_bank": "4Food Bank|foodbank|Food",
|
||||
"amenity-food_sharing": "Food Sharing|Food",
|
||||
"amenity-give_box": "Give Box",
|
||||
"leisure-sports_hall": "Sports hall",
|
||||
"amenity-arts_centre|@category_tourism": "Arts Center",
|
||||
"amenity-prison": "prison",
|
||||
|
||||
@@ -498,5 +498,16 @@
|
||||
"sport-9pin": "Bolos",
|
||||
"sport-10pin": "Bolos",
|
||||
"shop-bookmaker|@gambling": "Corredor de apuestas",
|
||||
"leisure-fitness_centre-sport-yoga": "Estudio de yoga"
|
||||
"leisure-fitness_centre-sport-yoga": "Estudio de yoga",
|
||||
"amenity-mobile_money_agent": "Agencia de efectivo móvil | agente de dinero móvil | agencia de dinero móvil | agente de efectivo móvil",
|
||||
"amenity-boat_rental": "4aquiler de botes|alquiler de barcos|bote|botes|barco|barcos|barca|barcas|lancha|lanchas|embarcación|embarcaciones|velero|veleros|nagegar|3alquiler",
|
||||
"man_made-telescope|man_made-telescope-optical|man_made-telescope-radio|man_made-telescope-gamma": "4Telescopio",
|
||||
"man_made-observatory": "3Observatorio",
|
||||
"amenity-car_pooling|@category_parking": "Car pooling | Vehículo compartido | Blabla Car",
|
||||
"amenity-payment_centre": "Centro de pagos",
|
||||
"leisure-indoor_play": "Parque interior|niños",
|
||||
"shop-telecommunication|@shop": "Telecomunicaciones",
|
||||
"leisure-bandstand": "4Tarima",
|
||||
"social_facility-soup_kitchen": "4Comedor social | Comedor popular | Comedor comunitario | Comida",
|
||||
"social_facility-food_bank": "Banco de alimentos | alimento | comida | voluntariado"
|
||||
}
|
||||
|
||||
@@ -24,3 +24,4 @@ China_Guangdong Hong Kong
|
||||
US_Guam Guam
|
||||
Macedonia North Macedonia
|
||||
Czech Republic Czechia
|
||||
Myanmar Burma
|
||||
|
||||
|
@@ -386,6 +386,11 @@
|
||||
<include field="operator" />
|
||||
<include field="opening_hours" />
|
||||
</type>
|
||||
<type id="amenity-car_pooling">
|
||||
<include field="name" />
|
||||
<include field="operator" />
|
||||
<include field="opening_hours" />
|
||||
</type>
|
||||
<type id="amenity-pharmacy" group="shop">
|
||||
<include group="poi_internet" />
|
||||
</type>
|
||||
@@ -1189,6 +1194,14 @@
|
||||
<include field="opening_hours" />
|
||||
<include field="level" />
|
||||
</type>
|
||||
<type id="amenity-food_sharing">
|
||||
<include group="poi_internet" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="amenity-give_box">
|
||||
<include group="poi_internet" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="tourism-picnic_site" />
|
||||
<type id="leisure-picnic_table" />
|
||||
<type id="leisure-park">
|
||||
@@ -1251,6 +1264,15 @@
|
||||
</type>
|
||||
<type id="amenity-social_facility">
|
||||
<include group="poi_internet" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="social_facility-soup_kitchen">
|
||||
<include group="poi_internet" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="social_facility-food_bank">
|
||||
<include group="poi_internet" />
|
||||
<include field="operator" />
|
||||
</type>
|
||||
<type id="amenity-payment_centre">
|
||||
<include group="poi_internet" />
|
||||
|
||||
@@ -169,7 +169,7 @@ highway|residential|bridge;[highway=residential][bridge?];;name;int_name;81;
|
||||
# railway|rail|service|bridge;[railway=rail][service?][service!=spur][bridge?];...
|
||||
railway|rail|bridge;[railway=rail][bridge?][dont=match];;name;int_name;82;
|
||||
deprecated:boundary|administrative|10:04.2024;[boundary=administrative][admin_level=10];x;name;int_name;83;
|
||||
deprecated:boundary|administrative|6:04.2024;[boundary=administrative][admin_level=6];x;name;int_name;84;
|
||||
emergency|access_point;[emergency=access_point];;name;;84;
|
||||
highway|secondary|bridge;[highway=secondary][bridge?];;name;int_name;85;
|
||||
highway|tertiary|bridge;[highway=tertiary][bridge?];;name;int_name;86;
|
||||
barrier|bollard;87;
|
||||
@@ -225,7 +225,7 @@ place|suburb;128;
|
||||
landuse|allotments;129;
|
||||
landuse|forest|coniferous;[landuse=forest][wood=coniferous],[landuse=forest][leaf_type=coniferous],[natural=wood][wood=coniferous],[natural=wood][leaf_type=coniferous];;name;int_name;130;
|
||||
landuse|forest|mixed;[landuse=forest][wood=mixed],[landuse=forest][leaf_type=mixed],[landuse=forest][leaf_cycle=mixed],[natural=wood][wood=mixed],[natural=wood][leaf_type=mixed],[natural=wood][leaf_cycle=mixed];;name;int_name;131;
|
||||
deprecated:natural|wood|mixed:01.2020;[natural=wood][wood=mixed],[natural=wood][leaf_type=mixed],[natural=wood][leaf_cycle=mixed];x;name;int_name;132;landuse|forest|mixed
|
||||
emergency|life_ring;132;
|
||||
sport|tennis;133;
|
||||
# ~730k usages.
|
||||
landuse|vineyard;134;
|
||||
@@ -628,17 +628,17 @@ drinking_water|no;505;
|
||||
deprecated|deprecated;506;x
|
||||
deprecated|deprecated;507;x
|
||||
deprecated|deprecated;508;x
|
||||
deprecated:railway|spur|bridge:06.2023;509;x
|
||||
deprecated|deprecated;510;x
|
||||
deprecated|deprecated;511;x
|
||||
deprecated|deprecated;512;x
|
||||
amenity|car_pooling;509;
|
||||
social_facility|soup_kitchen;510;
|
||||
social_facility|food_bank;511;
|
||||
amenity|food_sharing;512;
|
||||
sport|curling;513;
|
||||
deprecated|deprecated;514;x
|
||||
deprecated|deprecated;515;x
|
||||
deprecated|deprecated;516;x
|
||||
deprecated|deprecated;517;x
|
||||
deprecated|deprecated;518;x
|
||||
deprecated|deprecated;519;x
|
||||
amenity|give_box;514;
|
||||
man_made|telescope;515;
|
||||
man_made|telescope|optical;[man_made=telescope][telescope:type=optical];;name;int_name;516;
|
||||
man_made|telescope|radio;[man_made=telescope][telescope:type=radio];;name;int_name;517;
|
||||
man_made|telescope|gamma;[man_made=telescope][telescope:type=gamma];;name;int_name;518;
|
||||
man_made|observatory;519;
|
||||
sport|diving;520;
|
||||
#~270k uses.
|
||||
man_made|utility_pole;521;
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 7 and column 16.
|
@@ -77,6 +77,8 @@ vending=water : vending=drinks
|
||||
vending=milk : vending=drinks
|
||||
vending=bread : vending=food
|
||||
|
||||
highway=emergency_access_point : emergency=access_point
|
||||
|
||||
building=entrance : entrance=yes
|
||||
|
||||
ice_road=yes : highway=ice_road
|
||||
|
||||
@@ -242,6 +242,7 @@
|
||||
@neutral_label: #51585E;
|
||||
@healthcare_label: #983E44;
|
||||
@public_transport_label: #2F6499;
|
||||
@emergency_label: #247F52;
|
||||
|
||||
/* 6.4 Road labels */
|
||||
|
||||
|
||||
1
data/styles/default/dark/symbols/access_point-m.svg
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 6.7 KiB |
1
data/styles/default/dark/symbols/food_bank-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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="#6e4426" r="8.25"/><path d="m5.40439659 10.9208845 1.66497587 2.7936423-1.40439659.7854732-1.66497587-2.7936423zm8.48497961-1.30248563c.1648759.16547497.1067017.33549981.0697536.38988023l-.4380042.5278054-.6259719.740475-.5369481.6188133c-.326327.369091-.6071716.6702095-.72781.7580936l-.0452585.0257766-.0128471.0043095c-.1930198.0592449-.9966097.0941052-2.41076971.104581l-1.41415344.0028979-.56983671.3962245-1.22668022-2.05836 1.15247826-.8300108c.39709497-.2523366.78419173-.38244764 1.16129028-.39033316l.0364622-.00038156c.38859717 0 .73067579.13023822 1.02623587.39071472h1.72754997c.2369804.0514113.3554706.1871537.3554706.4072272 0 .2200736-.1184902.3663266-.3554706.4387589h-1.86216448c-.07860487.0051388-.11790731.0426001-.11790731.1123837 0 .1046754.05865282.1491799.11790731.1491799l.90691258-.0103822.4942633-.0160402c.2708403-.012161.5027742-.0299189.6065724-.05585.3293242-.0822724 2.110004-1.67235874 2.2125241-1.75200674s.3026137-.12817636.4764018.04624321zm-3.6909669-3.77570294c-.0953136-.29519343-.0969978-.44798224-.0969978-.69213749 0-.60830957-.49315336-1.10142003-1.10142007-1.10142003-.60830957 0-1.10142003.49311046-1.10142003 1.10142003 0 .24414668-.00168624.39692692-.09699782.69213749-.09534354.29519342-.52319594.80943657-.52319594 1.43566029 0 .95082119.77082259 1.72164378 1.72164379 1.72164378.95082119 0 1.72160097-.77077973 1.72160097-1.72164378 0-.56356277-.3465674-1.03645253-.4853801-1.34062523zm-.35982581-2.77957701c-.00037908-.02303239-.01293243-.04310709-.03149545-.05412282l-.03584588-.0089961-.07532111.00360309c-.13534339.01138062-.41475604.05828767-.60648789.24999351-.12874614.12876329-.19222565.29576342-.22343826.43281093-.02675465-.08282078-.07076517-.17207866-.14346746-.24480239-.13454896-.13456502-.32770192-.1711184-.42926654-.18098477l-.06882538-.00359276c-.03450959.00067646-.06248952.02854864-.06305951.06307666l.00159083.04631626c.00635078.09321555.03708217.30583386.18300631.45172273.13458752.1345811.3277212.17113608.42927376.18100226l.12801359.00359241c.04385109 0 .43525377-.00712751.68185185-.25361374.20610698-.20621669.24487627-.51045136.25198392-.63278334z" fill="#000" fill-rule="evenodd"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
1
data/styles/default/dark/symbols/food_sharing-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="12" viewBox="0 0 10 12" width="10" xmlns="http://www.w3.org/2000/svg"><path d="m1.40439659 7.9208845 1.66497587 2.7936423-1.40439659.7854732-1.66497587-2.79364231zm8.4849796-1.30248563c.16487591.16547497.10670169.33549981.06975361.38988026l-.43800423.52780539-.62597187.74047497-.53694807.61881334c-.32632701.36909096-.60717167.67020945-.72780998.75809352l-.04525857.02577662-.01284708.00430951c-.19301982.05924488-.99660972.09410524-2.41076971.10458107l-1.41415344.0028978-.56983671.39622455-1.22668022-2.05836003 1.15247826-.83001081c.39709497-.25233656.78419173-.3824476 1.16129028-.39033312l.0364622-.00038156c.38859717 0 .73067579.13023823 1.02623587.39071468h1.72754994c.23698041.05141129.35547062.18715372.35547062.40722729 0 .22007356-.11849021.3663265-.35547062.43875883h-1.86216445c-.07860487.00513887-.11790731.04260011-.11790731.11238372 0 .10467541.05865282.14917992.11790731.14917992l.90691261-.01038221.49426323-.01604024c.27084037-.01216092.50277426-.0299189.60657246-.05584997.32932419-.08227242 2.11000399-1.67235874 2.21252409-1.75200674.10252009-.079648.3026137-.12817636.47640178.04624321zm-3.69096692-3.77570294c-.09531354-.29519343-.09699782-.44798224-.09699782-.69213749 0-.60830957-.49315331-1.10142003-1.10142002-1.10142003-.60830957 0-1.10142003.49311046-1.10142003 1.10142003 0 .24414668-.00168624.39692692-.09699782.69213749-.09534354.29519342-.52319594.80943657-.52319594 1.43566029 0 .95082119.77082259 1.72164378 1.72164379 1.72164378.95082119 0 1.72160093-.77077973 1.72160093-1.72164378 0-.56356277-.34656739-1.03645253-.48538006-1.34062523zm-.35982578-2.77957701c-.00037908-.02303239-.01293243-.04310709-.03149545-.05412282l-.03584588-.0089961-.07532111.00360309c-.13534339.01138062-.41475604.05828767-.60648789.24999351-.12874614.12876329-.19222565.29576342-.22343826.43281093-.02675465-.08282078-.07076517-.17207866-.14346746-.24480238-.13454896-.13456503-.32770192-.17111841-.42926654-.18098478l-.06882538-.00359276c-.03450959.00067646-.06248952.02854864-.06305951.06307666l.00159083.04631626c.00635078.09321555.03708217.30583386.18300631.45172273.13458752.1345811.3277212.17113608.42927376.18100226l.12801359.00359241c.04385109 0 .43525377-.00712751.68185185-.25361374.20610698-.20621669.24487627-.51045135.25198392-.63278334z" fill="#777" fill-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
1
data/styles/default/dark/symbols/give_box-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="11" viewBox="0 0 10 11" width="10" xmlns="http://www.w3.org/2000/svg"><path d="m1.40439659 6.9208845 1.66497587 2.79364231-1.40439659.78547319-1.66497587-2.79364231zm8.4849796-1.30248563c.16487591.16547497.10670169.33549981.06975361.38988026l-.43800423.52780539-.62597187.74047497-.53694807.61881334-.30691719.3410534-.1751764.18625299c-.10683664.11054758-.19209936.19172754-.24571639.23078713l-.04525857.02577662-.01284708.00430951c-.19301982.05924488-.99660972.09410524-2.41076971.10458107l-1.41415344.0028978-.56983671.3962246-1.22668022-2.05836008 1.15247826-.83001081c.39709497-.25233656.78419173-.3824476 1.16129028-.39033312l.0364622-.00038156c.38859717 0 .73067579.13023823 1.02623587.39071468h1.72754994c.23698041.05141129.35547062.18715372.35547062.40722729 0 .22007356-.11849021.3663265-.35547062.43875883h-1.86216445c-.07860487.00513887-.11790731.04260011-.11790731.11238372 0 .10467541.05865282.14917992.11790731.14917992l.90691261-.01038221.49426323-.01604024.36592704-.02276118c.1048133-.00920099.18874632-.02012325.24064542-.03308879.32932419-.08227242 2.11000399-1.67235874 2.21252409-1.75200674.10252009-.079648.3026137-.12817636.47640178.04624321zm-2.38737619-4.86878187-.00166678 4.000383h-5.00033322l-.001-3.997383zm-5.49948258 0-.00045062 1.65580113-.42167958.90580112-.63441545-.29583278zm5.99572437 0 1.05654565 2.26576947-.63441545.29583278-.42167957-.90580112z" fill="#777" fill-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
1
data/styles/default/dark/symbols/lifebuoy-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="12" viewBox="0 0 12 12" width="12" xmlns="http://www.w3.org/2000/svg"><path d="m6 0c3.23839694 0 5.8775718 2.56557489 5.9958615 5.77506174l.0041385.22493826c0 3.23839694-2.56557489 5.8775718-5.77506174 5.9958615l-.22493826.0041385c-3.3137085 0-6-2.6862915-6-6s2.6862915-6 6-6zm-3 6h-2.4c0 2.98233765 2.41766235 5.4 5.4 5.4v-2.4c-1.65685425 0-3-1.34314575-3-3zm3-2.4c-1.3254834 0-2.4 1.0745166-2.4 2.4s1.0745166 2.4 2.4 2.4 2.4-1.0745166 2.4-2.4-1.0745166-2.4-2.4-2.4zm0-3v2.4c1.59768088 0 2.90366088 1.24891996 2.99490731 2.82372721l.00509269.17627279h2.4c0-2.98233765-2.41766235-5.4-5.4-5.4z" fill="#983E44" opacity=".6"/></svg>
|
||||
|
After Width: | Height: | Size: 642 B |
1
data/styles/default/dark/symbols/observatory-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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="#51585E" r="8.25"/><path d="m11.9788057 9.45701798v4.46417412h-2.48216516v-1.9344754c0-.5341906-.43304708-.9672377-.96723771-.9672377-.51282301 0-.93243211.3990962-.96518032.9036416l-.00205739.0635961v1.9344754h-2.48216512v-4.46417412zm-3.44940287-4.1392834c1.90503617 0 3.44940287 1.54436664 3.44940287 3.44940283h-6.8988057c0-1.90503619 1.54436664-3.44940283 3.44940283-3.44940283zm4.47021307-1.83773458.6985699.69856997-1.0498311 1.04983111c.2863445.33051154.5419599.68947967.7623009 1.07107475l-.8568598.49403817c-.520321-.90122443-1.2678995-1.64880299-2.169124-2.16912399l.4940382-.8568598c.3815951.22034103.7405632.47595638 1.0710748.7623009z" fill="#000"/></g></svg>
|
||||
|
After Width: | Height: | Size: 853 B |
1
data/styles/default/dark/symbols/parking_pooling-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="19" viewBox="0 0 29 19" width="29" xmlns="http://www.w3.org/2000/svg"><g fill="none"><path d="m6.185075.4995c1.777125 0 3.382725.375525 4.56885 1.3638 1.2542475 1.043175 1.74465 2.530875 1.74465 4.202625 0 .70428972-.0885354 1.37740429-.2813988 2.0016737.1097684-.01288087.2224325-.01884789.3364903-.01884789 1.0018875 0 1.8962402.46041088 2.4830213 1.18119574.5702976-1.00377388 1.6501558-1.68022155 2.8880068-1.68022155 1.2250215 0 2.2953081.66249835 2.872122 1.64875713.5861846-.70238108 1.4692751-1.14973132 2.4568499-1.14973132 1.7673849 0 3.2001334 1.43274852 3.2001334 3.20013339 0 .7313317-.245322 1.4053653-.6581629 1.944298l-.074637.0915686.1409174.0845388c1.2235368.7673092 2.0881394 2.0596347 2.2705608 3.570914l.0213847.2173535.0984085 1.2911937h-20.69720984l.09840858-1.2911937c.12227689-1.6043637 1.01014496-2.9844197 2.29194549-3.7882675l.13958437-.0845388-.073304-.0915686c-.37843751-.4940216-.61611258-1.1015656-.65309705-1.7627038l-.00506585-.1815942c-.84977747.3668477-1.81813376.5570547-2.8535331.6031408v3.147975c0 .8284275-.67155 1.5-1.5 1.5h-3.0015c-.8284275 0-1.5-.67155-1.5-1.5v-13.0005c0-.8284275.67155-1.5 1.5-1.5z" fill="#111" opacity=".6"/><path d="m12.5536665 13.8204843c.5404977 0 1.0540327.1154407 1.517294.3230112-.6662367.7508614-1.1159451 1.6987981-1.2504799 2.7493425l-.0344806.3559128h-3.936c.14615915-1.9177167 1.7485089-3.4282665 3.7036665-3.4282665zm10.7 0c1.9551576 0 3.5575073 1.5105498 3.7036665 3.4282665h-3.895333l-.0060809-.0911937-.0216381-.2213141c-.1283466-1.0743203-.5858754-2.0432621-1.2667992-2.806658.4550736-.1987522.9577425-.3091007 1.4861847-.3091007zm-5.3289719-.2138492c2.0771169 0 3.7794184 1.6047752 3.9346947 3.6421157h-7.8693893c.1552763-2.0373405 1.8575778-3.6421157 3.9346946-3.6421157zm-11.7390946-11.6068351c1.57395 0 2.786025.3293925 3.61005 1.01595.81477.677625 1.20435 1.70415 1.20435 3.05055 0 1.391025-.416475 2.4687-1.296075 3.208725-.861075.7311-2.111925 1.08855-3.713625 1.08855h-.989775v4.636425h-3.000525l.000225-12.999975zm6.3680665 7.24895081c1.1046432 0 2.0001334.89549019 2.0001334 2.00013339s-.8954902 2.0001334-2.0001334 2.0001334-2.0001334-.8954902-2.0001334-2.0001334.8954902-2.00013339 2.0001334-2.00013339zm10.7 0c1.1046432 0 2.0001334.89549019 2.0001334 2.00013339s-.8954902 2.0001334-2.0001334 2.0001334-2.0001334-.8954902-2.0001334-2.0001334.8954902-2.00013339 2.0001334-2.00013339zm-5.3289719-.49902581c1.1735489 0 2.1248982.95134932 2.1248982 2.1248982 0 1.1735488-.9513493 2.1248982-2.1248982 2.1248982-1.1735488 0-2.1248981-.9513494-2.1248981-2.1248982 0-1.17354888.9513493-2.1248982 2.1248981-2.1248982zm-11.8500196-4.475475h-1.07415v3.8599125h.7027875c.842625 0 1.481685-.1958625 1.898325-.525765.42591-.338775.611055-.82884.611055-1.4619 0-.650925-.1748925-1.1142-.5267175-1.426275-.342675-.30315-.8706-.4459725-1.6113-.4459725z" fill="#20607c"/></g></svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
1
data/styles/default/dark/symbols/parking_pooling-s.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="12" viewBox="0 0 18 12" width="18" xmlns="http://www.w3.org/2000/svg"><g fill="none"><path d="m3.90636316.31547368c1.12239473 0 2.13645789.23717369 2.88558947.86134737.79215632.65884737 1.10188421 1.59844737 1.10188421 2.65428948 0 .44481455-.05591709.86993955-.17772557 1.26421496.06932743-.00813528.14048371-.01190393.2125202-.01190393.63277103 0 1.19762539.29078582 1.56822398.74601837.36018795-.63396245 1.04220365-1.06119256 1.82400435-1.06119256.7736977 0 1.4496682.41842001 1.8139718 1.04132029.3702218-.4436091.9279632-.7261461 1.5516946-.7261461 1.1162431 0 2.0211369.90489381 2.0211369 2.02113689 0 .46189369-.1549402.88759915-.4156819 1.22797764l-.0471391.05783284.0890005.05339291c.7727601.48461638 1.3188248 1.30082194 1.4340384 2.25531406l.0135061.1372759.0621528.8154908h-13.07192207l.06215279-.8154908c.0772275-1.01328225.63798628-1.88489661 1.44754451-2.39258996l.08815855-.05339291-.04629724-.05783284c-.23901318-.31201361-.38912375-.69572559-.41248237-1.11328658l-.00319948-.11469106c-.53670156.23169325-1.14829501.35182404-1.80223143.38093102v1.98819474c0 .52321737-.42413684.94736839-.94736842.94736839h-1.89568421c-.52321737 0-.94736842-.42413681-.94736842-.94736839v-8.2108421c0-.52321737.42413684-.94736843.94736842-.94736843z" fill="#111" opacity=".6"/><path d="m7.92863147 8.72872693c.34136694 0 .66570485.07290994.95829094.20400705-.42078106.47422827-.70480741 1.07292512-.78977674 1.73642682l-.02177725.2247871h-2.48589474c.09231105-1.21118954 1.10432143-2.16522097 2.33915779-2.16522097zm6.75789473 0c1.2348364 0 2.2468468.95403143 2.3391578 2.16522097h-2.4602103l-.0038406-.0575961-.0136661-.1397773c-.0810611-.6785181-.3700266-1.29048128-.8000838-1.77262609.2874149-.12552769.60489-.19522148.938643-.19522148zm-3.3656664-.13506265c1.3118632 0 2.387001 1.01354223 2.4850703 2.30028362h-4.97014063c.09806925-1.28674139 1.17320703-2.30028362 2.48507033-2.30028362zm-7.41416506-7.3306327c.99407368 0 1.75959473.20803737 2.28003158.64165263.51459157.42797368.7606421 1.07630526.7606421 1.92666316 0 .8785421-.26303684 1.55917895-.81857368 2.02656316-.54383685.46174736-1.33384737.68750526-2.34544737.68750526h-.62512105v2.92826842h-1.89506843l.00014211-8.21051053zm4.02193673 4.57828472c.69766938 0 1.26324215.56557277 1.26324215 1.26324215 0 .69766937-.56557277 1.26324215-1.26324215 1.26324215-.69766937 0-1.26324215-.56557278-1.26324215-1.26324215 0-.69766938.56557278-1.26324215 1.26324215-1.26324215zm6.75789473 0c.6976694 0 1.2632422.56557277 1.2632422 1.26324215 0 .69766937-.5655728 1.26324215-1.2632422 1.26324215s-1.2632421-.56557278-1.2632421-1.26324215c0-.69766938.5655727-1.26324215 1.2632421-1.26324215zm-3.3656664-.31517419c.7411887 0 1.3420409.6008522 1.3420409 1.34204095s-.6008522 1.34204095-1.3420409 1.34204095c-.7411888 0-1.34204098-.6008522-1.34204098-1.34204095s.60085218-1.34204095 1.34204098-1.34204095zm-7.48422296-2.82661579h-.67841052v2.43783947h.44386579c.53218421 0 .93580105-.12370263 1.1989421-.33206211.26899579-.21396315.38592947-.52347789.38592947-.92330526 0-.41111053-.11045842-.70370526-.33266368-.90080526-.21642632-.19146316-.54985263-.28166684-1.01766316-.28166684z" fill="#20607c"/></g></svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
1
data/styles/default/dark/symbols/soup_kitchen-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<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="#6e4426" r="8.25"/><path d="m5.40439659 10.9208845 1.66497587 2.7936423-1.40439659.7854732-1.66497587-2.7936423zm8.48497961-1.30248563c.1648759.16547497.1067017.33549981.0697536.38988023l-.4380042.5278054-.6259719.740475-.5369481.6188133c-.326327.369091-.6071716.6702095-.72781.7580936l-.0452585.0257766-.0128471.0043095c-.1930198.0592449-.9966097.0941052-2.41076971.104581l-1.41415344.0028979-.56983671.3962245-1.22668022-2.05836 1.15247826-.8300108c.39709497-.2523366.78419173-.38244764 1.16129028-.39033316l.0364622-.00038156c.38859717 0 .73067579.13023822 1.02623587.39071472h1.72754997c.2369804.0514113.3554706.1871537.3554706.4072272 0 .2200736-.1184902.3663266-.3554706.4387589h-1.86216448c-.07860487.0051388-.11790731.0426001-.11790731.1123837 0 .1046754.05865282.1491799.11790731.1491799l.90691258-.0103822.4942633-.0160402c.2708403-.012161.5027742-.0299189.6065724-.05585.3293242-.0822724 2.110004-1.67235874 2.2125241-1.75200674s.3026137-.12817636.4764018.04624321zm-7.07695726-.61839887-.00064003-.76822841c-.79974138-.64144198-1.31177891-1.6268104-1.31177891-2.73177159h7c0 1.10496119-.5120375 2.09032961-1.3117789 2.73177159l-.00064.76822841z" fill="#000" fill-rule="evenodd"/></g></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
1
data/styles/default/dark/symbols/telescope-gamma-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="19" viewBox="0 0 14 19" width="14" xmlns="http://www.w3.org/2000/svg"><path d="m13.1340274.00741332-8.49199134 1.21422959 1.21962985 1.21976833 6.55564899-.9357696-.9357696 6.55564895 1.2197683 1.21976832 1.2142296-8.49212981c.0725574-.50887145-.3895117-.8436881-.7815158-.78151578m-10.82601505.83814936c-2.97333242 2.97402475-2.97333242 7.79521825 0 10.76924302 2.97402475 2.9733324 7.79521825 2.9733324 10.76924305 0zm-.84645746 11.86715912v3.902594h-.69234211c-.38355753 0-.69234211.2895375-.69234211.6491399v.0864043c0 .3596025.30878458.64914.69234211.64914h8.30810528c.38355753 0 .69234211-.2895375.69234211-.64914v-.0864043c0-.3596024-.30878458-.6491399-.69234211-.6491399h-.6923421v-1.4278864c-2.47539997.1890094-5.00992596-.6352931-6.92342107-2.4747076" fill="#777" transform="translate(0 .5)"/></svg>
|
||||
|
After Width: | Height: | Size: 822 B |
1
data/styles/default/dark/symbols/telescope-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="15" viewBox="0 0 14 15" width="14" xmlns="http://www.w3.org/2000/svg"><path d="m7.82311911 5.67246657 3.40536139 7.66676663c.1034778.2351768 0 .507982-.244584.6208669-.2351769.1034779-.5079821 0-.620867-.2445839l-1.12884905-2.5399104h-4.40251137l-1.12884907 2.5399104c-.1128849.2445839-.38569009.3480618-.62086698.2445839-.24458397-.1128849-.3480618-.3856901-.24458397-.6208669l3.00085711-6.74487323-1.63683115.76197312-1.1946986-2.54931747 6.38740431-2.98204296 1.19469857 2.54931748zm-.79019435.54561038-1.78734435 4.01682125h3.57468871zm2.59635286-5.02337835 2.55872458-1.1946986 1.5897957 3.41476843-2.5587245 1.1946986zm-9.40707557 5.4278826 2.55872456-1.1946986.79019435 1.70268068-2.55872456 1.1946986z" fill="#777" transform="translate(0 .5)"/></svg>
|
||||
|
After Width: | Height: | Size: 771 B |
1
data/styles/default/dark/symbols/telescope-optical-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="17" viewBox="0 0 18 17" width="18" xmlns="http://www.w3.org/2000/svg"><path d="m16.6801082.00001-1.6419569 1.64195683c-.5169266-.44784856-1.0783599-.84763607-1.6751823-1.19225383l-.7726855 1.34014584c1.409533.81379244 2.5787608 1.98302024 3.3925532 3.39255325l1.3401459-.77268557c-.3446178-.59682233-.7444053-1.15825566-1.1922539-1.6751823l1.6419569-1.64195683zm-8.72593811 2.09165983c-4.26738784 0-7.72685565 3.45946781-7.72685565 7.72685565h15.45371126c0-4.26738784-3.4594678-7.72685565-7.72685561-7.72685565m-7.72685565 9.27222677v4.6361134h15.45371126v-4.6361134z" fill="#777" transform="translate(0 .5)"/></svg>
|
||||
|
After Width: | Height: | Size: 629 B |
1
data/styles/default/dark/symbols/telescope-radio-m.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg height="19" viewBox="0 0 14 19" width="14" xmlns="http://www.w3.org/2000/svg"><path d="m7.69225716.00010119c-.93627166-.01384608-.93627166 1.39789983 0 1.3846076 2.68461564 0 4.84612664 2.16151093 4.84612664 4.8461266-.0138461.93627166 1.3978998.93627166 1.3846076 0 0-3.43299608-2.7977382-6.2307342-6.23073424-6.2307342m-5.38432358.84641063c-2.9731679 2.9738602-2.9731679 7.79478695 0 10.76864718 2.97386021 2.9731679 7.79478692 2.9731679 10.76864712 0zm5.38432358 1.92280457c-.93627166-.01384608-.93627166 1.39789983 0 1.3846076 1.15517812 0 2.0769114.92159482 2.0769114 2.0769114-.01384607.93627166 1.39789984.93627166 1.38460764 0 0-1.90355853-1.55796051-3.461519-3.46151904-3.461519m-6.2307342 9.94369791v3.9023781h-.6923038c-.38353631 0-.6923038.2895214-.6923038.649104v.0863996c0 .3595826.30876749.649104.6923038.649104h8.3076456c.38353631 0 .6923038-.2895214.6923038-.649104v-.0863996c0-.3595826-.30876749-.649104-.6923038-.649104h-.6923038v-1.4278074c-2.47526301.188999-5.00964876-.6352579-6.923038-2.4745707" fill="#777" transform="translate(0 .5)"/></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -428,6 +428,7 @@ area|z14-[area:highway=living_street],
|
||||
area|z14-[amenity=grave_yard],
|
||||
area|z14-[landuse=cemetery],
|
||||
area|z15-[amenity=parking],
|
||||
area|z15-[amenity=car_pooling],
|
||||
area|z16-[public_transport=platform],
|
||||
area|z16-[railway=platform],
|
||||
{fill-opacity: 1;}
|
||||
@@ -590,6 +591,7 @@ area|z10-[landuse=farmyard],
|
||||
/* Parking */
|
||||
|
||||
area|z15-[amenity=parking],
|
||||
area|z15-[amenity=car_pooling],
|
||||
{fill-color: @parking;}
|
||||
|
||||
area|z15-[amenity=parking][location=underground],
|
||||
|
||||
@@ -848,6 +848,8 @@ node|z17-[leisure=indoor_play],
|
||||
node|z17-[amenity=courthouse],
|
||||
node|z17-[amenity=nursing_home],
|
||||
node|z17-[amenity=social_facility],
|
||||
node|z17-[social_facility=food_bank],
|
||||
node|z17-[social_facility=soup_kitchen],
|
||||
node|z17-[amenity=animal_shelter],
|
||||
node|z17-[amenity=kindergarten],
|
||||
node|z17-[amenity=childcare],
|
||||
@@ -915,10 +917,19 @@ node|z15-[leisure=sports_centre][sport=swimming],
|
||||
node|z17-[highway=ladder],
|
||||
node|z18-[amenity=dojo],
|
||||
node|z18-[amenity=vending_machine],
|
||||
node|z18-[amenity=food_sharing],
|
||||
node|z18-[amenity=give_box],
|
||||
node|z18-[man_made=telescope],
|
||||
node|z17-[man_made=telescope][telescope:type=optical],
|
||||
node|z17-[man_made=telescope][telescope:type=radio],
|
||||
node|z17-[man_made=telescope][telescope:type=gamma],
|
||||
node|z16-[man_made=observatory],
|
||||
node|z17-[amenity=fire_station],
|
||||
node|z18-[amenity=internet_cafe],
|
||||
node|z18-[emergency=defibrillator],
|
||||
node|z18-[emergency=access_point],
|
||||
node|z18-[emergency=assembly_point],
|
||||
node|z19-[emergency=life_ring],
|
||||
node|z18-[emergency=lifeguard],
|
||||
node|z18-[amenity=toilets],
|
||||
node|z18-[amenity=atm],
|
||||
@@ -1436,6 +1447,12 @@ node|z17-[amenity=nursing_home],
|
||||
node|z17-[amenity=social_facility],
|
||||
{icon-image: social_facility-m.svg;}
|
||||
|
||||
node|z17-[social_facility=soup_kitchen],
|
||||
{icon-image: soup_kitchen-m.svg;}
|
||||
|
||||
node|z17-[social_facility=food_bank],
|
||||
{icon-image: food_bank-m.svg;}
|
||||
|
||||
node|z17-[amenity=cinema],
|
||||
{icon-image: cinema-m.svg;}
|
||||
node|z18-[amenity=cinema],
|
||||
@@ -1510,9 +1527,15 @@ node|z19-[emergency=fire_hydrant],
|
||||
node|z18-[emergency=defibrillator],
|
||||
{icon-image: defibrillator-m.svg;font-size: 11;}
|
||||
|
||||
node|z18-[emergency=access_point],
|
||||
{icon-image: access_point-m.svg;font-size: 11;}
|
||||
|
||||
node|z18-[emergency=assembly_point],
|
||||
{icon-image: assembly_point-m.svg;font-size: 11;}
|
||||
|
||||
node|z19-[emergency=life_ring],
|
||||
{icon-image: lifebuoy-m.svg; font-size: 11;}
|
||||
|
||||
node|z17-[emergency=lifeguard],
|
||||
{icon-image: lifeguard-m.svg; font-size: 11;}
|
||||
|
||||
@@ -1576,6 +1599,23 @@ node|z17-[amenity=parcel_locker],
|
||||
node|z18-[amenity=vending_machine][vending=fuel],
|
||||
{icon-image: fuel-dispenser-m.svg;}
|
||||
|
||||
node|z18-[amenity=food_sharing],
|
||||
{icon-image: food_sharing-m.svg;}
|
||||
node|z18-[amenity=give_box],
|
||||
{icon-image: give_box-m.svg;}
|
||||
|
||||
node|z18-[man_made=telescope],
|
||||
{icon-image: telescope-m.svg;}
|
||||
node|z17-[man_made=telescope][telescope:type=optical],
|
||||
{icon-image: telescope-optical-m.svg;}
|
||||
node|z17-[man_made=telescope][telescope:type=radio],
|
||||
{icon-image: telescope-radio-m.svg;}
|
||||
node|z17-[man_made=telescope][telescope:type=gamma],
|
||||
{icon-image: telescope-gamma-m.svg;}
|
||||
|
||||
node|z16-[man_made=observatory],
|
||||
{icon-image: observatory-m.svg;}
|
||||
|
||||
node|z17-[aeroway=gate],
|
||||
{icon-image: airport_gate-m.svg;font-size: 11;}
|
||||
|
||||
@@ -2157,6 +2197,7 @@ node|z17-[amenity=bicycle_parking],
|
||||
node|z17-[amenity=motorcycle_parking],
|
||||
node|z17-[amenity=car_wash],
|
||||
node|z18-[amenity=parking],
|
||||
node|z18-[amenity=car_pooling],
|
||||
node|z18-[amenity=car_rental],
|
||||
node|z18-[amenity=car_sharing],
|
||||
{text: name;text-color: @poi_label;text-offset: 1;font-size: 10;}
|
||||
@@ -2231,6 +2272,11 @@ node|z16-[amenity=parking],
|
||||
node|z17-[amenity=parking],
|
||||
{icon-image: parking-m.svg;font-size: 11;icon-min-distance: 10}
|
||||
|
||||
node|z16-[amenity=car_pooling],
|
||||
{icon-image: parking-pooling-s.svg;icon-min-distance: 5;}
|
||||
node|z17-[amenity=car_pooling],
|
||||
{icon-image: parking-pooling-m.svg;font-size: 11;icon-min-distance: 10}
|
||||
|
||||
node|z16-[amenity=parking][location=underground],
|
||||
{icon-image:parking_underground-m.svg;}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ node[shop=wholesale],
|
||||
|
||||
node[craft=photographer],
|
||||
node[craft=tailor],
|
||||
node[craft=winery],
|
||||
{text-color: @shop_label}
|
||||
|
||||
node[amenity=bar],
|
||||
@@ -73,6 +74,7 @@ node[amenity=place_of_worship]
|
||||
node[amenity=social_facility],
|
||||
node[historic=ship],
|
||||
node[leisure=hackerspace],
|
||||
node[social_facility],
|
||||
node[tourism=attraction],
|
||||
node[tourism=gallery],
|
||||
node[tourism=museum],
|
||||
@@ -134,6 +136,9 @@ node[amenity=townhall],
|
||||
node[amenity=university][name],
|
||||
node[barrier=border_control],
|
||||
node[building=guardhouse],
|
||||
node[man_made=communications_tower],
|
||||
node[man_made=lighthouse],
|
||||
node[man_made=observatory],
|
||||
node[office=diplomatic],
|
||||
node[office=security],
|
||||
node[shop=money_lender],
|
||||
@@ -153,3 +158,6 @@ node[healthcare],
|
||||
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;}
|
||||
|
||||
node[emergency=access_point],
|
||||
{text-color: @emergency_label;text-halo-radius: 0.1;text-halo-opacity: 0.7;text-halo-color: @label_halo_light;}
|
||||
|
||||
@@ -140,6 +140,7 @@ railway-platform # area z16- (also has captio
|
||||
|
||||
amenity-bicycle_parking # area z15- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-bicycle_parking-covered # area z15- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-car_pooling # area z15- (also has icon z16-, caption(optional) z18-)
|
||||
amenity-motorcycle_parking # area z15- (also has icon z17-, caption(optional) z17-)
|
||||
amenity-parking # area z15- (also has icon z16-, caption(optional) z18-)
|
||||
amenity-parking-fee # area z15- (also has icon z16-, caption(optional) z18-)
|
||||
|
||||