Compare commits

..

1 Commits

Author SHA1 Message Date
Harry Bond
00e77cd745 [android] Add Map Layers button to custom left button options
Signed-off-by: Harry Bond <me@hbond.xyz>

Signed-off-by: Harry Bond <me@hbond.xyz>
2025-08-06 09:49:44 +01:00
6326 changed files with 1083800 additions and 245726 deletions

View File

@@ -3,6 +3,7 @@ BasedOnStyle: Google
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: Right
AlignConsecutiveMacros: AcrossEmptyLinesAndComments
AlignEscapedNewlines: LeftWithLastLine
AlignOperands: AlignAfterOperator
@@ -39,10 +40,8 @@ ColumnLimit: 120
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 4
DerivePointerAlignment: false
EmptyLineBeforeAccessModifier: Always
IncludeBlocks: Preserve
IndentAccessModifiers: false
IndentCaseLabels: false
IndentExternBlock: NoIndent
InsertBraces: false
InsertNewlineAtEOF: true
@@ -50,7 +49,6 @@ LambdaBodyIndentation: OuterScope
PackConstructorInitializers: CurrentLine
PointerAlignment: Middle
RemoveBracesLLVM: true
RemoveSemicolon: true
QualifierAlignment: Right
SpacesInContainerLiterals: false
Standard: Latest

View File

@@ -1,8 +0,0 @@
# Files that should not be formatted.
./3party
# A patched copy of the https://registry.khronos.org/OpenGL/api/GLES3/gl3.h
./android/sdk/src/main/cpp/app/organicmaps/sdk/opengl/gl3stub.h
# Formatting it leads to crashes in runtime. Newer protobuf may fix it.
./libs/indexer/drules_struct.pb.cc
# No need to format this 3party tool.
tools/osmctools/*.c

View File

@@ -36,6 +36,8 @@ jobs:
android-google-beta:
name: Android Google Beta
runs-on: ubuntu-latest
container:
image: runmymind/docker-android-sdk:latest
environment: beta
steps:
- name: Install build tools and dependencies

View File

@@ -1,4 +1,4 @@
name: Android Check Store Metadata
name: Android Check Metadata
on:
workflow_dispatch: # Manual trigger
pull_request:
@@ -11,7 +11,7 @@ on:
jobs:
android-check-metadata:
name: Check app metadata
runs-on: ubuntu-latest
runs-on: codeberg-tiny
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -21,8 +21,5 @@ jobs:
android
tools/python/check_store_metadata.py
- name: Check Google Play metadata
run: ./tools/python/check_store_metadata.py gplay
- name: Check F-Droid metadata
run: ./tools/python/check_store_metadata.py fdroid
- name: Check metadata
run: ./tools/python/check_store_metadata.py android

View File

@@ -37,7 +37,9 @@ on:
jobs:
lint:
name: Android Lint
runs-on: ubuntu-latest
runs-on: codeberg-tiny
container:
image: runmymind/docker-android-sdk:latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
@@ -56,6 +58,8 @@ jobs:
android-check:
name: Build Android Debug
runs-on: ubuntu-latest
container:
image: runmymind/docker-android-sdk:latest
strategy:
fail-fast: false
matrix:

View File

@@ -6,7 +6,7 @@ on:
jobs:
precondition:
runs-on: ubuntu-latest
runs-on: codeberg-tiny
name: Check preconditions
steps:
- name: Checkout sources
@@ -31,6 +31,8 @@ jobs:
android-google-beta:
name: Android Google Beta
runs-on: ubuntu-latest
container:
image: runmymind/docker-android-sdk:latest
needs: precondition
if: ${{ needs.precondition.outputs.updated != '' }}
environment: beta

View File

@@ -5,22 +5,26 @@ on:
jobs:
android-release-metadata:
name: Upload Google Play metadata
runs-on: ubuntu-latest
runs-on: codeberg-tiny
container:
image: runmymind/docker-android-sdk:latest
environment: production
steps:
- name: Checkout
- name: Checkout sources
# TODO: use shallow (and sparse?) checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
sparse-checkout: |
android
tools/python/check_store_metadata.py
# - name: Parallel submodules checkout
# shell: bash
# run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Restore release keys
shell: bash
run: |
echo "$PRIVATE_H" | base64 -d > private.h
echo "$GOOGLE_PLAY_JSON" | base64 -d > android/app/google-play.json
env:
PRIVATE_H: ${{ secrets.PRIVATE_H }}
GOOGLE_PLAY_JSON: ${{ secrets.GOOGLE_PLAY_JSON }}
- name: Upload

View File

@@ -10,6 +10,8 @@ jobs:
tag:
name: Tag
runs-on: ubuntu-latest
container:
image: runmymind/docker-android-sdk:latest
environment: production
steps:
- name: Checkout sources

View File

@@ -3,20 +3,20 @@ on:
workflow_dispatch: # Manual trigger
pull_request:
paths:
- packaging/app.comaps.comaps.metainfo.xml
- .forgejo/workflows/appstream-check.yaml # Run check on self change
- packaging/app.comaps.desktop.metainfo.xml
- .forgejo/workflows/appstream-check.yaml # Run check on self change
jobs:
validate-appstream:
name: Validate appstream metadata xml
runs-on: ubuntu-latest
runs-on: codeberg-tiny
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 1
sparse-checkout: |
packaging/app.comaps.comaps.metainfo.xml
packaging/app.comaps.desktop.metainfo.xml
- name: Install appstream validator and flatpak Builder
shell: bash
@@ -29,8 +29,8 @@ jobs:
- name: Lint appstream data with flatpak Builder
shell: bash
run: flatpak run --command=flatpak-builder-lint org.flatpak.Builder appstream packaging/app.comaps.comaps.metainfo.xml
run: flatpak run --command=flatpak-builder-lint org.flatpak.Builder appstream packaging/app.comaps.desktop.metainfo.xml
- name: Run appstreamcli in pedantic mode
shell: bash
run: flatpak run --command=appstreamcli org.flatpak.Builder validate --pedantic packaging/app.comaps.comaps.metainfo.xml
run: flatpak run --command=appstreamcli org.flatpak.Builder validate --pedantic packaging/app.comaps.desktop.metainfo.xml

View File

@@ -33,7 +33,7 @@ concurrency:
jobs:
should-run-check:
name: Should run coverage
runs-on: ubuntu-latest
runs-on: codeberg-tiny
outputs:
run-from-pr: ${{ steps.run-from-pr.outputs.run-from-pr }}
manually-triggered: ${{ steps.manually-triggered.outputs.manually-triggered }}

View File

@@ -1,9 +1,8 @@
name: DCO
name: dco
on: [pull_request]
jobs:
check:
runs-on: ubuntu-latest
runs-on: codeberg-tiny
steps:
- name: Check for Developer Certificate of Origin (DCO) compliance
uses: https://github.com/KineticCafe/actions-dco@fb284c903a7673a3d4b0bdd104479a6f0d46dae7 # v1.3.6
- uses: https://github.com/KineticCafe/actions-dco@v1

View File

@@ -3,20 +3,20 @@ on:
workflow_dispatch: # Manual trigger
pull_request:
paths:
- qt/res/linux/app.comaps.comaps.desktop
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
- qt/res/app.comaps.desktop.desktop
- .forgejo/workflows/desktop-file-check.yaml # Run check on self change
jobs:
validate-desktop-file:
name: Validate .desktop file
runs-on: ubuntu-latest
runs-on: codeberg-tiny
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 1
sparse-checkout: |
qt/res/linux/app.comaps.comaps.desktop
qt/res/app.comaps.desktop.desktop
- name: Install desktop-file-validate tool
shell: bash
@@ -27,4 +27,4 @@ jobs:
- name: Validate desktop file
shell: bash
run: desktop-file-validate qt/res/linux/app.comaps.comaps.desktop && echo "Successfully validated .desktop file"
run: desktop-file-validate qt/res/app.comaps.desktop.desktop && echo "Successfully validated .desktop file"

View File

@@ -35,7 +35,7 @@ jobs:
name: Apple TestFlight
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8

View File

@@ -10,7 +10,7 @@ on:
jobs:
ios-check-metadata:
name: Check app metadata
runs-on: ubuntu-latest
runs-on: codeberg-tiny
steps:
- name: Checkout
uses: actions/checkout@v4

View File

@@ -37,7 +37,7 @@ jobs:
name: Build iOS
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8

View File

@@ -7,7 +7,7 @@ jobs:
name: iOS Release
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8

View File

@@ -133,14 +133,6 @@ jobs:
with:
key: ${{ github.workflow }}-unity-${{ matrix.compiler.CC }}-${{ matrix.CMAKE_BUILD_TYPE }}
- name: Configure repository
shell: bash
env:
SKIP_MAP_DOWNLOAD: 1
SKIP_GENERATE_SYMBOLS: 1
SKIP_GENERATE_DRULES: 1
run: ./configure.sh
- name: CMake
shell: bash
env:

View File

@@ -32,7 +32,7 @@ jobs:
name: macOS builds and tests
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
HOMEBREW_NO_ANALYTICS: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
strategy:

View File

@@ -1,382 +0,0 @@
name: map-generator
on:
workflow_dispatch: # Manual trigger
inputs:
jobs:
description: 'Which job(s) to run right now?'
required: true
default: 'all'
type: choice
options:
- all
- copy-coasts
- planet
- wiki
- isolines
- subways
- tiger
- maps
env:
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 }}
DEBIAN_FRONTEND: noninteractive
TZ: Etc/UTC
jobs:
copy-coasts:
if: inputs.jobs == 'copy-coasts' || inputs.jobs == 'all'
name: Copy Previously Generated Coasts
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- 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
fi
update-planet:
if: inputs.jobs == 'planet' || inputs.jobs == 'all'
name: Update Planet
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -y
apt-get install -y pyosmium osmium-tool python3-venv python3-pip wget2
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
pip3 install "protobuf<4"
- name: Download Planet File if Absent
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-planet/planet/ ]; then
mkdir -p /media/4tbexternal/osm-planet/planet/
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
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
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
wiki-update:
if: inputs.jobs == 'wiki' || inputs.jobs == 'all'
name: Update Wikipedia
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -y
apt-get install -y jq curl wget2 rustc cargo git ca-certificates
- name: Clone wikiparser if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/wikiparser ]; then
cd /media/4tbexternal
git clone https://codeberg.org/comaps/wikiparser.git
fi
- name: Check for planet file
shell: bash
run: |
if [ ! -f /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf ]; then
echo "ERROR: No file at /media/4tbexternal/osm-planet/planet/planet-latest.osm.pbf"
ls -al /media/4tbexternal/
ls -al /media/4tbexternal/osm-planet/
ls -al /media/4tbexternal/osm-planet/planet/
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
ls -al
echo "Downloading ..."
./download.sh /media/4tbexternal/osm-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
echo "DONE"
update-isolines:
if: inputs.jobs == 'isolines' || inputs.jobs == 'all'
name: Update Isolines
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
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
- name: Update Isolines
shell: bash
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 \
--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/ \
--data_dir=./data/ \
--srtm_path=../osm-planet/SRTM-patched-europe/ \
--threads=22
update-subways:
if: inputs.jobs == 'subways' || inputs.jobs == 'all'
name: Update Subways
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq && apt-get install -y --no-install-recommends curl osmctools osmium-tool python3-venv ca-certificates git python3-pip
rm -f /usr/lib/python*/EXTERNALLY-MANAGED
pip3 install "protobuf<4"
- name: Clone subways if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/subways ]; then
cd /media/4tbexternal
git clone https://codeberg.org/comaps/subways.git
fi
- name: Clone main repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Update Subways
shell: bash
run: |
cd /media/4tbexternal/comaps-init/
cp tools/unix/maps/settings.sh.prod tools/unix/maps/settings.sh
./tools/unix/maps/generate_subways.sh
update-tiger:
if: inputs.jobs == 'tiger' || inputs.jobs == 'all'
name: Update TIGER
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq && apt-get install -y --no-install-recommends \
build-essential \
clang \
cmake \
ninja-build \
ca-certificates \
git \
wget2
- name: Clone main repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Build address_parser
shell: bash
run: |
cd /media/4tbexternal/comaps-init
rm -rf ../omim-build-relwithdebinfo/CMakeCache.txt
rm -rf ../omim-build-relwithdebinfo/CMakeFiles
./tools/unix/build_omim.sh -R address_parser_tool
- name: Update TIGER from Nominatim
shell: bash
run: |
cd /media/4tbexternal/osm-planet/
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
generate-maps:
if: inputs.jobs == 'maps' || inputs.jobs == 'all'
name: Generate Maps
runs-on: mapfilemaker
container:
image: ubuntu:latest
volumes:
- /media/4tbexternal:/media/4tbexternal
options: --ulimit nofile=262144:262144
concurrency:
group: ${{ github.workflow }}-map-generator-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
steps:
- name: Install dependencies
shell: bash
run: |
apt-get update -qq \
&& apt-get install -y --no-install-recommends \
curl \
osmctools \
rclone \
git \
ca-certificates \
openssh-client \
sshpass \
vim \
wget \
build-essential \
clang \
cmake \
ninja-build \
python3 \
python3-pip \
python3.12-venv \
qt6-base-dev \
qt6-positioning-dev \
libc++-dev \
libfreetype-dev \
libglvnd-dev \
libgl1-mesa-dev \
libharfbuzz-dev \
libicu-dev \
libqt6svg6-dev \
libqt6positioning6-plugins \
libqt6positioning6 \
libsqlite3-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
zlib1g-dev
- name: Clone repo if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/comaps-init ]; then
cd /media/4tbexternal
git clone --recurse-submodules --shallow-submodules -b rebase-generator-pastk-wb251014 --single-branch https://codeberg.org/comaps/comaps.git comaps-init
fi
- name: Make output folders if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-maps ]; then
mkdir -p /media/4tbexternal/osm-maps
fi
- name: Get SRTM if necessary
shell: bash
run: |
if [ ! -d /media/4tbexternal/osm-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

View File

@@ -0,0 +1,22 @@
name: Close stale PRs
on:
schedule:
- cron: "0 0 * * *" # Runs every day at midnight
jobs:
stale:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-pr-stale: 180 # 6 months before warning
days-before-pr-close: 365 # Closed after 12 months
stale-pr-label: "stale"
stale-pr-message: "Hi! This PR has been inactive for 6 months. If it's still relevant, please update it to let us know youd like to keep it open 😊"
close-pr-message: "This PR has been automatically closed after 12 months of inactivity."
days-before-issue-stale: -1 # Issues are never stale
days-before-issue-close: -1 # Issues are never closed
remove-stale-when-updated: true

View File

@@ -6,7 +6,7 @@ on:
- main
env:
JAVA_HOME: /usr/lib/jvm/temurin-21-jdk-amd64 # Java 21 is required for Android Gradle 8 plugin
JAVA_HOME: /usr/lib/jvm/temurin-17-jdk-amd64 # Java 17 is required for Android Gradle 8 plugin
SKIP_MAP_DOWNLOAD: true
jobs:
@@ -23,17 +23,6 @@ jobs:
shell: bash
run: git submodule update --depth 1 --init --recursive --jobs=$(($(nproc) * 20))
- name: Install protobuf
shell: bash
run: |
sudo apt-get update -y
sudo apt-get install -y python3-pip
pip install "protobuf<3.21" --break-system-packages
- name: Configure repository
shell: bash
run: ./configure.sh
- name: Lint
shell: bash
working-directory: android
@@ -73,9 +62,7 @@ jobs:
libxinerama-dev \
libxcursor-dev \
libxi-dev \
python3-pip \
zlib1g-dev
pip install "protobuf<3.21" --break-system-packages
- name: Checkout sources
uses: actions/checkout@v4

43
.github/workflows/clang-format.yaml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: clang-format
on:
push:
branches: [ master ]
paths:
- 'android/app/src/**.java'
- '.clang-format'
- '.github/workflows/clang-format.yml'
pull_request:
branches: [ master ]
paths:
- 'android/app/src/**.java'
- '.clang-format'
- '.github/workflows/clang-format.yml'
jobs:
check-formatting:
runs-on: ubuntu-latest
continue-on-error: true # TODO(AB): Remove this line when ready to enforce formatting.
steps:
- uses: actions/checkout@v4
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get install -y clang-format-19
clang-format-19 --version
- name: Check Java formatting
run: |
JAVA_FILES=($(find android/app/src -name '*.java'))
FORMATTING_ISSUES=$(clang-format-19 --dry-run --Werror $JAVA_FILES 2>&1 || true)
if [ -n "$FORMATTING_ISSUES" ]; then
echo "$FORMATTING_ISSUES"
echo ""
echo "To fix formatting, please run:"
echo " clang-format -i <file>"
exit 1
fi

View File

@@ -1,51 +0,0 @@
name: Code style check
on:
pull_request:
branches: [ master ]
paths: # Should stay in sync with tools/unix/clang-format.sh
- '.github/workflows/code-style-check.yaml'
- 'android/app/src/**.java'
- 'android/sdk/src/**.java'
- 'android/sdk/src/main/cpp/**.[ch]pp'
- 'dev_sandbox/**.[ch]pp'
- 'generator/**.[ch]pp'
- 'iphone/**.[ch]pp'
- 'iphone/**.[hm]'
- 'iphone/**.mm'
- 'libs/**.[ch]pp'
- 'libs/**.[hm]'
- '!libs/indexer/drules_struct.pb.h'
- 'libs/**.mm'
- 'qt/**.[ch]pp'
- 'qt/**.h'
- 'tools/**.[ch]pp'
- '.clang-format'
- '.clang-format-ignore'
jobs:
code-style-check:
runs-on: ubuntu-latest
steps:
- name: Install clang-format
run: |
sudo apt purge -y clang-format-18 # Remove default old version of clang-format
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
echo 'deb http://apt.llvm.org/noble/ llvm-toolchain-noble-20 main' | sudo tee /etc/apt/sources.list.d/llvm-toolchain-noble-20.list
sudo apt-get update
sudo apt-get install -y clang-format-20
sudo update-alternatives --force --install /usr/bin/clang-format clang-format /usr/bin/clang-format-20 10
sudo update-alternatives --force --install /usr/bin/git-clang-format git-clang-format /usr/bin/git-clang-format-20 10
clang-format --version
- name: Checkout sources
uses: actions/checkout@v4
- name: Check code style
run: tools/unix/clang-format.sh
- name: Post clang-format comments
if: failure()
uses: reviewdog/action-suggester@v1.21.0
with:
tool_name: clang-format
fail_level: error

View File

@@ -10,7 +10,7 @@ jobs:
name: Build iOS
runs-on: macos-15
env:
DEVELOPER_DIR: /Applications/Xcode_26.app/Contents/Developer
DEVELOPER_DIR: /Applications/Xcode_16.app/Contents/Developer
LANG: en_US.UTF-8 # Fastlane complains that the terminal is using ASCII.
LANGUAGE: en_US.UTF-8
LC_ALL: en_US.UTF-8
@@ -30,7 +30,6 @@ jobs:
run: |
brew install qt \
optipng
pip3 install "protobuf<3.21" --break-system-packages
- name: Checkout sources
uses: actions/checkout@v4

28
.gitignore vendored
View File

@@ -14,29 +14,20 @@ stxxl.errlog
stxxl.log
screenlog.0
data/styles/*/*/out/*
data/resources-*_design/*
# symbols png/sdf are now generated at build
data/symbols/**/symbols.png
data/symbols/**/symbols.sdf
data/resources-*_*/symbols.png
data/resources-*_*/symbols.sdf
data/drules_proto_default_design.bin
data/colors_design.txt
data/patterns_design.txt
data/bookmarks
data/edits.xml
data/World.mwm
data/WorldCoasts.mwm
data/world_mwm/*
data/*_hash
data/drules_proto*
data/classificator.txt*
data/types.txt*
data/visibility.txt*
data/colors.txt*
data/patterns.txt*
# TODO: designer is not used at the moment
# data/symbols/*/design/
# data/colors_design.txt
# data/patterns_design.txt
# Auto-generated from data/categories-strings/* by tools/unix/generate_categories.sh
data/categories.txt
# Compiled Python
*.pyc
@@ -55,9 +46,10 @@ omim.sdf
*.suo
*.aps
*.rc
!qt/res/windows/windows.rc
!qt/res/windows.rc
*.pdb
out/
out/*
qt/mapswithme.log
# XCode
xcode/keys/*

4
.gitmodules vendored
View File

@@ -65,7 +65,3 @@
[submodule "3party/imgui/imgui"]
path = 3party/imgui/imgui
url = https://github.com/ocornut/imgui
[submodule "3party/glaze"]
path = 3party/glaze
url = https://github.com/stephenberry/glaze
branch = main

View File

@@ -57,7 +57,6 @@ endif()
add_subdirectory(agg)
add_subdirectory(bsdiff-courgette)
add_subdirectory(glaze)
add_subdirectory(minizip)
add_subdirectory(open-location-code)
add_subdirectory(opening_hours)

View File

@@ -4,9 +4,7 @@ set(FT_DISABLE_HARFBUZZ ON)
add_subdirectory(freetype)
# Fix warning with ONE_PIXEL macro clash.
if(NOT MSVC)
target_compile_options(freetype PRIVATE -Wno-macro-redefined)
endif()
target_compile_options(freetype PRIVATE -Wno-macro-redefined)
# Use ft2build.h from the current directory instead of the default.
target_include_directories(freetype

Submodule 3party/glaze deleted from 5a58d7936e

View File

@@ -11,23 +11,14 @@ target_include_directories(${PROJECT_NAME}
harfbuzz/src
)
if (MSVC)
target_compile_options(${PROJECT_NAME}
PRIVATE
/GR-
/EHsc-
/Zc:threadSafeInit-
)
else()
# Keep these settings in sync with xcode/harfbuzz project.
target_compile_options(${PROJECT_NAME}
PRIVATE
-fno-rtti
-fno-exceptions
-fno-threadsafe-statics
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-format-pedantic>
)
endif()
# Keep these settigns in sync with xcode/harfbuzz project.
target_compile_options(${PROJECT_NAME}
PRIVATE
-fno-rtti
-fno-exceptions
-fno-threadsafe-statics
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:-Wno-format-pedantic>
)
target_compile_definitions(${PROJECT_NAME}
PRIVATE
@@ -37,20 +28,14 @@ target_compile_definitions(${PROJECT_NAME}
#$<$<BOOL:${APPLE}>:HAVE_CORETEXT>
HAVE_ATEXIT
HAVE_GETPAGESIZE
HAVE_MMAP
HAVE_MPROTECT
HAVE_PTHREAD
HAVE_SYSCONF
HAVE_SYS_MMAN_H
HAVE_UNISTD_H
)
if (NOT MSVC)
target_compile_definitions(${PROJECT_NAME}
PRIVATE
HAVE_MMAP
HAVE_PTHREAD
HAVE_SYS_MMAN_H
HAVE_UNISTD_H
)
endif()
target_link_libraries(${PROJECT_NAME} Freetype::Freetype)
add_library(harfbuzz::harfbuzz ALIAS harfbuzz)

View File

@@ -172,7 +172,6 @@ add_library(icuuc
icu/icu4c/source/common/uvector.cpp
icu/icu4c/source/common/uvectr32.cpp
icu/icu4c/source/common/uvectr64.h
icu/icu4c/source/common/wintz.cpp
icu/icu4c/source/common/wintz.h
)

View File

@@ -11,7 +11,6 @@ set(SRC
protobuf/src/google/protobuf/message_lite.cc
protobuf/src/google/protobuf/repeated_field.cc
protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc
protobuf/src/google/protobuf/stubs/bytestream.cc
protobuf/src/google/protobuf/stubs/common.cc
protobuf/src/google/protobuf/stubs/int128.cc

View File

@@ -7,6 +7,7 @@
#include <boost/utility/enable_if.hpp>
#include <boost/utility.hpp>
#include <boost/type_traits/is_pod.hpp>
#include <boost/iostreams/device/mapped_file.hpp>
#include "mappable_vector.hpp"
@@ -282,6 +283,12 @@ namespace succinct { namespace mapper {
return mapper.bytes_read();
}
template <typename T>
size_t map(T& val, boost::iostreams::mapped_file_source const& m, uint64_t flags = 0, const char* friendly_name = "<TOP>")
{
return map(val, m.data(), flags, friendly_name);
}
template <typename T>
uint64_t size_of(T& val)
{

View File

@@ -8,6 +8,7 @@
#include <stdint.h>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/iostreams/device/mapped_file.hpp>
namespace succinct { namespace util {
@@ -204,6 +205,29 @@ namespace succinct { namespace util {
std::string m_cur_value;
};
struct mmap_lines
{
typedef buffer_line_iterator iterator;
typedef buffer_line_iterator const_iterator;
mmap_lines(std::string filename)
: m_map(filename)
{}
const_iterator begin() const
{
return const_iterator(m_map.data(), m_map.size());
}
const_iterator end() const
{
return const_iterator();
}
private:
boost::iostreams::mapped_file_source m_map;
};
struct input_error : std::invalid_argument
{
input_error(std::string const& what)

View File

@@ -19,18 +19,7 @@ extern "C" {
#endif
#include "vulkan_wrapper.h"
#if defined(_WIN32)
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#ifndef NOMINMAX
#define NOMINMAX
#endif
#include <windows.h>
#else
#include <dlfcn.h>
#endif
int InitVulkan(void) {
#if defined(__APPLE__)
@@ -41,9 +30,6 @@ int InitVulkan(void) {
if (!libvulkan) {
libvulkan = dlopen("libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL);
}
#elif defined( _WIN32 )
HMODULE libvulkan = LoadLibraryA("vulkan-1.dll");
auto dlsym = [](HMODULE h, char const * name) { return GetProcAddress(h, name); };
#else
void* libvulkan = dlopen("libvulkan.so.1", RTLD_NOW | RTLD_LOCAL);
if (!libvulkan) {

View File

@@ -1,9 +1,8 @@
cmake_minimum_required(VERSION 3.22.1)
project(omim C CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_C_STANDARD 23)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_C_STANDARD 17)
# Our code does not rely on gnu extensions.
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_C_EXTENSIONS OFF)
@@ -39,16 +38,18 @@ if (APPLE AND NOT ("${CMAKE_SYSTEM_NAME}" STREQUAL Android))
# https://gitlab.kitware.com/cmake/cmake/-/issues/21963
enable_language(OBJC)
set(CMAKE_OBJC_EXTENSIONS OFF)
set(CMAKE_OBJC_STANDARD 23)
set(CMAKE_OBJC_STANDARD 11)
set(CMAKE_OBJC_FLAGS -fobjc-arc)
set(CMAKE_OBJC_VISIBILITY_PRESET hidden)
enable_language(OBJCXX)
set(CMAKE_OBJCXX_EXTENSIONS OFF)
set(CMAKE_OBJCXX_STANDARD 23)
set(CMAKE_OBJCXX_STANDARD 20)
set(CMAKE_OBJCXX_FLAGS -fobjc-arc)
set(CMAKE_OBJCXX_VISIBILITY_PRESET hidden)
endif()
execute_process(COMMAND "./configure.sh" WORKING_DIRECTORY ${OMIM_ROOT})
message(STATUS "Using compiler ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
if (CMAKE_UNITY_BUILD)
@@ -85,7 +86,7 @@ if (MSVC)
add_compile_options(/utf-8)
add_link_options(/INCREMENTAL:NO)
else()
add_compile_options(-ffast-math $<$<CXX_COMPILER_ID:GNU>:-Wno-psabi>)
add_compile_options(-ffast-math)
endif()
if (PLATFORM_WIN)
@@ -104,7 +105,7 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
elseif (${CMAKE_BUILD_TYPE} MATCHES "Rel")
add_definitions(-DRELEASE)
if (NOT MSVC)
add_compile_options(-O3 $<$<CXX_COMPILER_ID:GNU>:-flto=auto>)
add_compile_options(-Ofast $<$<CXX_COMPILER_ID:GNU>:-flto=auto>) # Also enables -ffast-math
endif()
else()
message(FATAL_ERROR "Unknown build type: " ${CMAKE_BUILD_TYPE})
@@ -120,7 +121,7 @@ if (PLATFORM_LINUX AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_BUILD_T
add_compile_options(-fno-fat-lto-objects)
# To fix ar and ranlib "plugin needed to handle lto object".
string(REGEX MATCH "[0-9]+" GCC_MAJOR_VERSION ${CMAKE_CXX_COMPILER_VERSION})
file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}*/liblto_plugin.so)
file(GLOB_RECURSE plugin /usr/lib/gcc/*/${GCC_MAJOR_VERSION}/liblto_plugin.so)
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> --plugin ${plugin} <TARGET>")
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> --plugin ${plugin} qcs <TARGET> <OBJECTS>")
@@ -175,15 +176,15 @@ 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 (Qt6_VERSION VERSION_LESS ${MINIMUM_REQUIRED_QT_VERSION})
message(FATAL_ERROR "Unsupported Qt version: ${Qt6_VERSION}, the minimum required is ${MINIMUM_REQUIRED_QT_VERSION}")
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}")
else()
message(STATUS "Found Qt version: ${Qt6_VERSION}")
message(STATUS "Found Qt version: ${Qt6Widgets_VERSION}")
endif()
endif()
# To allow #include "base/file_name.hpp" in all sources.
include_directories("${CMAKE_HOME_DIRECTORY}" "${CMAKE_HOME_DIRECTORY}/libs" "${CMAKE_HOME_DIRECTORY}/tools")
include_directories(${CMAKE_HOME_DIRECTORY})
if (USE_PCH)
message(STATUS "Precompiled headers are ON")
@@ -195,7 +196,7 @@ if (USE_PCH)
endif()
# Should be on the root level, not in 3party, so tests can get these dependencies.
if (PLATFORM_LINUX)
if (PLATFORM_LINUX OR PLATFORM_WIN)
find_package(ICU COMPONENTS uc i18n data REQUIRED)
find_package(Freetype REQUIRED)
find_package(harfbuzz REQUIRED)
@@ -225,42 +226,49 @@ endif()
# Used in qt/ and shaders/
find_package(Python3 REQUIRED COMPONENTS Interpreter)
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "import google.protobuf;
print(google.protobuf.__version__)"
RESULT_VARIABLE PROTOBUF_CHECK
OUTPUT_VARIABLE PROTOBUF_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(PROTOBUF_CHECK EQUAL 0)
if(PROTOBUF_VERSION VERSION_LESS "4.0.0")
message(STATUS "Python protobuf ${PROTOBUF_VERSION} found (< 4.0)")
else()
message(FATAL_ERROR "Python protobuf ${PROTOBUF_VERSION} found, but version < 4.0 required")
endif()
else()
message(FATAL_ERROR "Python protobuf not found. Install version <4.0")
endif()
add_subdirectory(libs)
add_subdirectory(base)
add_subdirectory(coding)
add_subdirectory(descriptions)
add_subdirectory(drape)
add_subdirectory(drape_frontend)
add_subdirectory(editor)
add_subdirectory(ge0)
add_subdirectory(generator/mwm_diff)
add_subdirectory(geometry)
add_subdirectory(indexer)
add_subdirectory(kml)
add_subdirectory(map)
add_subdirectory(cppjansson)
add_subdirectory(platform)
add_subdirectory(routing)
add_subdirectory(routing_common)
add_subdirectory(search)
add_subdirectory(shaders)
add_subdirectory(storage)
add_subdirectory(tracking)
add_subdirectory(traffic)
add_subdirectory(transit)
if (PLATFORM_DESKTOP)
add_subdirectory(dev_sandbox)
omim_add_tool_subdirectory(feature_list)
add_subdirectory(generator)
add_subdirectory(tools)
add_subdirectory(openlr)
add_subdirectory(poly_borders)
omim_add_tool_subdirectory(topography_generator)
add_subdirectory(track_analyzing)
omim_add_tool_subdirectory(track_generator)
if (NOT SKIP_QT_GUI)
add_subdirectory(qt)
omim_add_tool_subdirectory(skin_generator)
endif()
if (GENERATOR_TOOL)
add_compile_options(-march=native -mtune=native)
message(STATUS "target CPU optimizations enabled, produced binaries will NOT work on a different CPU")
endif()
add_subdirectory(dev_sandbox)
endif()
omim_add_test_subdirectory(libs/qt_tstfrm)
omim_add_test_subdirectory(qt_tstfrm)
if (PLATFORM_ANDROID)
add_subdirectory(android/sdk/src/main/cpp)

View File

@@ -1 +1 @@
See [docs/INSTALL.md](docs/INSTALL.md)
See [docs/INSTALL.md](docs/INSTALL.md)

View File

@@ -19,20 +19,20 @@
</div>
<div align="center">
<p align="center">
<a href="https://codeberg.org/comaps/comaps/src/branch/main/LICENSE">
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="License"/>
<a href="https://codeberg.org/comaps/comaps/releases">
<img src="https://img.shields.io/github/license/comaps/comaps?style=for-the-badge&logo=opensourceinitiative&logoColor=white&color=588157" alt="License" style="width: 90%; max-width: 150px;"/>
</a>
<a href="https://github.com/comaps/comaps/actions/workflows/android-check.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge" alt="Android Build Status"/>
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/android-check.yaml?label=Android%20Build&logo=android&logoColor=white&style=for-the-badge&color=588157" alt="Android Build Status" style="width: 90%; max-width: 170px;"/>
</a>
<a href="https://github.com/comaps/comaps/actions/workflows/ios-check.yaml">
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge" alt="iOS Build Status"/>
<img src="https://img.shields.io/github/actions/workflow/status/comaps/comaps/.github/workflows/ios-check.yaml?label=iOS%20Build&logo=apple&logoColor=white&style=for-the-badge&color=588157" alt="iOS Build Status" style="width: 90%; max-width: 145px;"/>
</a>
<a href="https://opencollective.com/comaps">
<img src="https://img.shields.io/opencollective/all/comaps?label=Open%20Collective%20Donors&logo=opencollective&logoColor=white&style=for-the-badge&color=588157" alt="Open Collective Donors"/>
<img src="https://img.shields.io/opencollective/all/comaps?label=Open%20Collective%20Donors&logo=opencollective&logoColor=white&style=for-the-badge&color=588157" alt="Open Collective Donors" style="width: 90%; max-width: 191px;"/>
</a>
<a href="https://liberapay.com/CoMaps">
<img src="https://img.shields.io/liberapay/patrons/CoMaps.svg?label=Liberapay%20Patrons&logo=liberapay&logoColor=white&style=for-the-badge&color=588157" alt="Liberapay Patrons"/>
<img src="https://img.shields.io/liberapay/patrons/CoMaps.svg?label=Liberapay%20Patrons&logo=liberapay&logoColor=white&style=for-the-badge&color=588157" alt="Liberapay Patrons" style="width: 90%; max-width: 160px;"/>
</a>
</p>
</div>
@@ -41,6 +41,8 @@
A community-led free & open source maps app based on [OpenStreetMap](https://www.openstreetmap.org), built for transparency, privacy, and not-for-profit values. A fork of Organic Maps, originally based on Maps.ME.
**Available for:** Android, iOS, ARM macOS, and alpha Linux/macOS desktop builds (also usable on Linux phones).
<p align="center">
<a href="https://apps.apple.com/app/comaps/id6747180809">
<img src="docs/badges/apple-appstore.png" alt="App Store" width="160"/>
@@ -51,9 +53,6 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www
<a href="https://f-droid.org/en/packages/app.comaps.fdroid/">
<img src="docs/badges/fdroid.png" alt="F-Droid" width="160"/>
</a>
<a href="https://apt.izzysoft.de/fdroid/index/apk/app.comaps">
<img src="docs/badges/izzyondroid.png" alt="Obtainium" width="160"/>
</a>
<a href="https://apps.obtainium.imranr.dev/redirect?r=obtainium://add/https://codeberg.org/comaps/comaps">
<img src="docs/badges/obtainium.png" alt="Obtainium" width="160"/>
</a>
@@ -78,10 +77,9 @@ A community-led free & open source maps app based on [OpenStreetMap](https://www
## ⚡️ Highlights
- **Offline-first**: Navigate without a connection
- **Privacy-respecting**: No tracking, ads or data collection
- **Privacy-respecting**: No tracking, Ads or data collection
- **Lightweight**: Battery- and space-efficient
- **Simple**: Polished, user-focused interface
- **Cross-platform**: Available for Android, iOS, MacOS, and Linux.
- **Community-built**: Free, open source, and collaborative
- **Transparent**: Open finances and governance
@@ -127,8 +125,10 @@ You can help by donating, contributing code, translating, or by telling others a
- Build instructions: [docs/INSTALL.md](docs/INSTALL.md)
- Contribution guide: [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md)
> [!NOTE]
> Some docs might be outdated, contain broken links or old references to Organic Maps, etc. Its a work in progress and help is much appreciated!
There is a dedicated [Zulip](https://codeberg.org/comaps/Governance/src/branch/main/contribute.md#3-team-messaging) chat for active contributors.
There is a dedicated Zulip chat for active contributors: [Zulip](https://comaps.zulipchat.com)
---
@@ -142,7 +142,7 @@ There is a dedicated [Zulip](https://codeberg.org/comaps/Governance/src/branch/m
## 💸 Funding
CoMaps is free. To fund development, we rely on your voluntary support ♥️
CoMaps is free. To stay that way, it relies on your support.
Donate via [OpenCollective](https://opencollective.com/comaps/donate) or [Liberapay](https://liberapay.com/CoMaps).
The project's financial information is completely open and transparent at [our Open Collective](https://opencollective.com/comaps).
@@ -158,12 +158,6 @@ SHA-256: 4894e8e6963627ef660031d8593fe77297f835acb4e23810003e926135023b4c
SHA-1: 8b7b5739f917e9f7c681671ced0c9c8562123ade
MD5: 9cce0ffea281dc2f0e0a154d6d2e281e
```
To verify CoMaps via [AppVerifier](https://github.com/soupslurpr/AppVerifier), use the following signing certificate fingerprint:
```
app.comaps
48:94:E8:E6:96:36:27:EF:66:00:31:D8:59:3F:E7:72:97:F8:35:AC:B4:E2:38:10:00:3E:92:61:35:02:3B:4C
```
---
## ⚖️ License

View File

@@ -24,6 +24,3 @@
/src/main/res/drawable-mdpi/uk_northern_ireland.png
/src/main/res/drawable-mdpi/uk_scotland.png
/src/main/res/drawable-mdpi/uk_wales.png
# Symlinked to F-Droid relnotes by tools/unix/link_gplay_relnotes.sh
/src/google/play/release-notes

View File

@@ -29,12 +29,12 @@ def getCommitMessage() {
project.ext.appId = 'app.comaps'
project.ext.appName = 'CoMaps'
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
// I have Java 21 installed, but this doesn't work on MacOS.
//java {
// toolchain {
// languageVersion.set(JavaLanguageVersion.of(17))
// }
//}
android {
namespace = 'app.organicmaps'
@@ -138,6 +138,8 @@ android {
disable 'MissingTranslation'
// https://github.com/organicmaps/organicmaps/issues/3551
disable 'MissingQuantity', 'UnusedQuantity'
// https://github.com/organicmaps/organicmaps/issues/3550
disable 'ByteOrderMark'
// https://github.com/organicmaps/organicmaps/issues/1077
disable 'CustomSplashScreen'
// https://github.com/organicmaps/organicmaps/issues/3610
@@ -311,8 +313,8 @@ android {
compileOptions {
coreLibraryDesugaringEnabled = true
sourceCompatibility JavaVersion.VERSION_21
targetCompatibility JavaVersion.VERSION_21
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
@@ -355,7 +357,8 @@ dependencies {
// Fix for app/organicmaps/util/FileUploadWorker.java:14: error: cannot access ListenableFuture
// https://github.com/organicmaps/organicmaps/issues/6106
implementation libs.google.guava
implementation libs.appdevnext.androidchart
implementation libs.devnullorthrow.mpandroidchart
implementation libs.jcip.annotations
// Test Dependencies
androidTestImplementation libs.androidx.test.junit

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/bg_app_icon_test"/>
<foreground android:drawable="@drawable/ic_launcher_foreground_test"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground_monochrome"/>
</adaptive-icon>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/bg_app_icon_debug"/>
<foreground android:drawable="@drawable/ic_launcher_foreground_debug"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground_monochrome"/>
</adaptive-icon>

View File

@@ -1 +0,0 @@
../../../../google/java/app/organicmaps/location

View File

@@ -0,0 +1 @@
../../../../../google/java/app/organicmaps/sdk/location

View File

@@ -1 +0,0 @@
CoMaps - Mapas ensin conexón con privacidá

View File

@@ -1 +0,0 @@
Лесна навигация - Открийте повече от вашето пътуване - Подкрепен от общността

View File

@@ -1 +0,0 @@
CoMaps - Хайкинг, Велосипед, Пътуване без Интернет

View File

@@ -1 +0,0 @@
মানচিত্র নেভিগেশন - আপনার যাত্রা সম্পর্কে আরও জানুন - সম্প্রদায় কর্তৃক পরিচালিত

View File

@@ -1 +0,0 @@
কোম্যাপস - অফলাইনে হাইকিং, সাইকেলিং ও ড্রাইভিং

View File

@@ -0,0 +1 @@
সহজ মানচিত্র নেভিগেশন - আপনার যাত্রা সম্পর্কে আরও জানুন - সম্প্রদায় কর্তৃক পরিচালিত

View File

@@ -0,0 +1 @@
কোম্যাপস - অফলাইনে হাইকিং, সাইকেলিং এবং ড্রাইভিং করুন গোপনীয়তা সহ

View File

@@ -1 +0,0 @@
CoMaps - Camina, pedala o condueix privadament

View File

@@ -1,8 +1,9 @@
• OpenStreetMap-Daten vom 4. November
Aktualisierte Karten-Icons, inkl. Farben für Unterhaltungs-, Sport- & andere Unternehmen
Informationen zu Steckdosen an EV-Ladestationen
Symbole für Sportzentren, Veranstaltungsorte, Massagesalons, Gästehäuser und einige stillgelegte Unternehmen
Verbesserungen bei der Suche
Behebung eines Absturzes bei der Suche
• Verbesserte Sprachführung während der Navigation
Weitere Änderungen finden in unseren Codeberg-Versionshinweisen!
Wir stellen vor: Das neue CoMaps-Logo!
Verbesserte Höhenlinien in vielen Regionen (Stufen von 20/50 m)
Links zu Panoramax-Bildern für ausgewählte POIs
OpenStreetMap-Daten vom 13. Juli
Neue Farben für viele Objekte und Farben werden früher angezeigt
Öffnungszeiten werden beim Antippen eines POI angezeigt
• Verschiedene Arten von Feuchtgebieten
• Neue Farben für Vegetation und andere Features; einige neue Icons
• Wandern: bessere Darstellung der Höhenlinien

View File

@@ -1,8 +1,10 @@
• OpenStreetMap data as of November 4
• Recategorized map icons including some new colors for entertainment, sports and other businesses
Display info about available sockets on charging stations
Added bandstands, backless benches and loungers
New icons for different sport centres, event venues, massage salons, guest houses and some disused businesses
Multiple search improvements and crash fix
Improved voice guidance during navigation
Check our Codeberg release notes for more changes!
Introducing CoMaps logo!
upgrade altitude contour lines for many regions to 20 or 50 meters step
add Panoramax Picture links to selected POIs
OpenStreetMap data as of July 13
add color fills to many features and display fills earlier for existing features
display opening hours state when selecting a POI
• split all wetlands into several distinct types
• update vegetation and other map colors, update some map icons
• outdoors: bolder altitude contour lines

View File

@@ -1,7 +1,9 @@
• Datos OSM del 04/11
Iconos del mapa recategorizados, incluyendo nuevos colores
Visualización de información sobre enchufes disponibles en estaciones de recarga
Adición de iconos para diferentes centros deportivos, lugares de eventos, salones de masajes, posadas y algunos establecimientos comerciales desactivados
Varias mejoras y correcciones de errores en la búsqueda
Mejora en la orientación por voz durante la navegación
Más detalles en Codeberg
¡Presentamos el logo de CoMaps!
mejora de isolíneas con más detalle para muchas regiones
añade enlaces de imágenes de Panoramax a POIs seleccionados
datos de OpenStreetMap a 13 de julio
añadidos rellenos de color a muchas características
se muestra el estado de horarios de apertura al seleccionar un POI
• se dividen los humedales en tipos distintos
• se actualiza la vegetación y otros colores del mapa, así como otros iconos
• exteriores: líneas de contorno de altitud más gruesas

View File

@@ -1 +1 @@
Navegación sencilla - Descubre más en tu camino - Creado por la comunidad
Navegación de mapa fácil - Descubre más en tu camino - Creado por la comunidad

View File

@@ -24,7 +24,7 @@ Sartu komunitatean eta lagundu maparik onena aplikatzen
• Lineaz kanpoko Wikipedia artikuluak
• Metroaren garraio geruza eta jarraibideak
• Arrastoen grabazioa
Markagailuak eta arrastoak esportatu eta inportatu KML, KMZ, GPX formatuetan
Laster-markak eta ibilbideak esportatu eta inportatu KML, KMZ, GPX formatuetan
• Gauean erabiltzeko modu iluna
• Hobetu mapako datuak guztiontzat oinarrizko editore integratua erabiliz

View File

@@ -1 +0,0 @@
ناوبری آسان نقشه - کشف بیشتر از سفر شما - توسط جامعه

View File

@@ -1 +0,0 @@
CoMaps - کوه‌نوردی، دوچرخه‌سواری و رانندگی آفلاین

View File

@@ -1,34 +1,32 @@
Yhteisön johtama vapaa ja avoimeen lähdekoodiin perustuva karttasovellus, jonka karttadata perustuu OpenStreetMap:n avoimeen dataan. Sovelluksessa painottuu vahva sitoutuminen läpinäkyvyyteen, yksityisyyteen ja voittoa tavoittelemattomaan toimintaan. CoMaps on haarautunut Organic Maps:sta, joka taas omalta osaltaan on haarautunut Maps.ME:stä.
Yhteisövetoinen, ilmainen ja avoimeen lähdekoodiin perustuva karttasovellus, jonka pohjalla käytetään OpenStreetMapin avointa karttadataa. Sovelluksen kehityksessä on sitouduttu läpinäkyvyyteen, yksityisyyteen ja voittoa tavoittelemattomuuteen. CoMapsin projekti on haarautunut Organic Mapsista, joka taas on haarautunut aiemmin Maps.ME:stä
Lue tarkemmin projektin syistä ja sen suunnasta osoitteesta <b><i>codeberg.org/comaps</i></b>.
Liity yhteisöön ja auta kehittämään parasta karttasovellusta
• Käytä sovellusta ja levitä siitä sanaa
• Anna palautetta ja raportoi ongelmista
• Päivitä karttadataa sovelluksessa tai OpenStreetMap:n verkkosivuilla
Lue lisää projektin tavotteista ja suunnasta osoitteesta <b><i>codeberg.org/comaps</i></b>.
Liity yhteisöön ja auta kehittämään paras saatavilla oleva karttasovellus
• Käytä sovellusta ja kerro siitä myös muille
• Anna palautetta ja raportoi ongelmia
• Päivitä karttoja, joko sovelluksessa tai OpenStreetMapin verkkosivuilla
‣ <b>Offline-painotteinen</b>: Suunnittele ja navigoi matkasi ilman verkkoyhteyttä. Etsi reittipisteitä retkilläsi. Kaikki sovelluksen toiminnot on suunniteltu käytettäväksi ilman verkkoyhteyttä.
‣ <b>Kunnioittaa yksityisyyttä</b>: Sovellus on suunniteltu yksityisyyttä silmälläpitäen. Sovellu ei tunnista ihmisä, seuraa toimintaasi, eikä kerää henkilökohtaisia tietojasi. Mainosvapaa.
‣ <b>Yksinkertainen ja viimeistelty</b>: Olennaiset ominaisuudet, joita on helppo käyttää.
‣ <b>Säästää akkua ja tilaa</b>: Ei kuluta akkua, kuten toiset karttasovellukset. Kompaktit kartat säästävät tilaa puhelimessasi.
‣ <b>Ilmainen ja yhteisön rakentama</b>: Ihmiset, kuten sinä ovat auttaneet sovelluksen kehityksessä lisäämällä paikkoja OpenStreetMap:iin, testaamalla sovellusta ja antamalla palautetta. Voit auttaa myös kehittämällä sovellusta ja lahjoittamalla sovelluskehitykseen.
‣ <b>Avoin ja läpinäkyvä päätöksenteko ja rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva.</b>
‣ <b>Offline-painotteinen</b>: Suunnittele ja navigoi ulkomailla ilman mobiiliverkkoja. Kaikki sovelluksen toiminnot on suunniteltu käytettäväksi ilman verkkoyhteyttä.
‣ <b>Kunnioittaa yksityisyyttä</b>: Sovellus on suunniteltu yksilön yksityisyys silmälläpitäen. Sovellus ei tunnista tai kerää tietoja sinusta. Mainosvapaa.
‣ <b>Yksinkertainen ja viimeistelty</b>: Olennaiset ominaisuudet, joita on helppo käyttää.
‣ <b>Säästä akkua ja tallennustilaa</b>: Ei kuluta akkua, kuten muut navigointisovellukset. Kompaktit kartat säästävät arvokasta tallennustilaa puhelimessasi.
‣ <b>Ilmainen ja yhteisön luoma</b>: Vapaaehtoiset, kuten sinä olette auttaneet sovelluksen kehityksessä lisäämällä paikkoja OpenStreetMap:iin, testaamalla sovellusta ja antamalla palautetta. Voit myös auttaa kehittämällä ominaisuuksia ja lahjoittamalla sovelluskehitykseen
‣ <b>Avoin ja läpinäkyvä päätöksenteko sekä rahoitus. Voittoa tavoittelematon ja täysin avoimeen lähdekoodiin perustuva.</b>
<b>Tärkeimmät ominaisuudet</b>:
<ul>
<li>Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta</li>
<li>Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.</li>
<li>Kävely- ja pyörätiet</li>
<li>Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta</li>
<li>Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla</li>
<li>Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa</li>
<li>Tallenna suosikkipaikkasi yhdellä napautuksella</li>
<li>Offline Wikipedia-artikkelit</li>
<li>Maanalaisen liikenteen tasot ja ohjeet</li>
<li>Reittien tallennus</li>
<li>Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa</li>
<li>Tumma tila iltaa ja yötä varten</li>
<li>Paranna karttadataa kaikille sisäänrakennetulla editorilla</li>
</ul>
• Ladattavat yksityiskohtaiset kartat paikoista, joita ei löydy edes Google Maps:sta
• Ulkoilutila, josta löytyy korostettuna reitit, leirintäpaikat, vesipisteet, huiput ja korkeuserot yms.
• Kävely- ja pyörätiet
• Kiinnostavat paikat, kuten ravintolat, huoltoasemat, hotellit, kaupat, nähtävyydet ja monta muuta
• Etsi nimellä, osoitteella tai kiinnostavan paikan kategorialla
• Navigointi ääni-ilmoituksilla kävellessä, pyöräillessä tai ajaessa
• Tallenna suosikkipaikkasi yhdellä napautuksella
• Offline Wikipedia-artikkelit
• Maanalaisen liikenteen tasot ja ohjeet
• Reittien tallennus
• Tuo ja vie kirjanmerkkejä ja reittejä KML-, KMZ- ja GPX-formaateissa
• Tumma tila iltaa ja yötä varten
• Paranna karttadataa kaikille sisäänrakennetulla editorilla
<b>Vapaus on täällä</b>
Löydä matkasi, navigoi maailmassa yksityisyyden ja yhteisön tukemana!
Löydä matkasi ja navigoi maailmalla yksityisyyden ja yhteisön tukemana!

View File

@@ -1 +1 @@
CoMaps - Navigoi yksityisesti ilman verkkoyhteyttä
CoMaps - Navigoi ilman verkkoyhteyttä yksityisesti

View File

@@ -1,8 +1,7 @@
• Données OpenStreetMap au 4 novembre
Recatégorisation des icônes sur la carte avec ajout de nouvelles couleurs pour certains types de lieux
• Affichage des prises sur les bornes électriques
Ajout d'icônes pour les centres sportifs, salles d'événements, salon de massage et autres lieux
Multiple améliorations dans la recherche
Correction d'un plantage dans la recherche
• Amélioration de la synthèse vocale durant la navigation
Plus d'informations sur notre Codeberg
Présentation du logo CoMaps !
Amélioration des courbes daltitude à une précision de 20 ou 50 mètres pour de nombreuses régions
• Ajout d'un lien vers les images Panoramax des POI
Données OpenStreetMap du 13 juillet
Affichage de létat des heures douverture lors de la sélection dun POI
Mise à jour du style(végétation et zones humides), mise à jour de certaines icônes de la carte
Outdoors: Améliorations de la visibilité des courbes d'altitude

View File

@@ -1 +1 @@
Navigation facile - Vivez de grands voyages - Propulsé par la communauté
Navigation cartographique facile - Découvrez davantage de votre voyage - Propulsé par la communauté

View File

@@ -1 +1 @@
CoMaps - Pješačite, biciklirajte, vozite Offline
CoMaps - Pješačite, biciklirajte, vozite Offline i privatno

View File

@@ -1,32 +0,0 @@
Egy közösség által vezetett, ingyenes és nyílt forráskódú térképalkalmazás, amely az OpenStreetMap adatain alapul, és amelynek alapelvei a átláthatóság, az adatvédelem és a nonprofit működés. A CoMaps az Organic Maps alkalmazás egyik változata, amely viszont a Maps.ME alkalmazás egyik változata.
A projekt előzményeiről és fejlesztési irányáról bővebben a <b><i>codeberg.org/comaps</i></b> oldalon olvashat.
Csatlakozzon a közösséghez, és segítsen a legjobb térképalkalmazás létrehozásában
• Használja az alkalmazást, és terjessze a hírt róla
• Adjon visszajelzést, és jelentsen problémákat
• Frissítse a térképadatokat az alkalmazásban vagy az OpenStreetMap weboldalon
‣ <b>Offline</b>: Tervezze meg és navigálja külföldi utazását mobilszolgáltatás nélkül, keressen útpontokat távoli túrákon stb. Az alkalmazás összes funkciója úgy van kialakítva, hogy offline is működjön.
‣ <b>A magánélet tiszteletben tartása</b>: Az alkalmazás a magánélet tiszteletben tartásával lett kialakítva nem azonosítja az embereket, nem követi nyomon őket és nem gyűjt személyes adatokat. Reklámmentes.
‣ <b>Egyszerű és kifinomult</b>: alapvető, könnyen használható funkciók, amelyek egyszerűen működnek.
‣ <b>Takarékos az akkumulátorral és a tárhellyel</b>: Nem meríti le az akkumulátort, mint más navigációs alkalmazások. A kompakt térképek értékes helyet takarítanak meg a telefonon.
‣ <b>Ingyenes és a közösség által fejlesztett</b>: Az Önhöz hasonló emberek segítettek az alkalmazás fejlesztésében azzal, hogy helyeket adtak hozzá az OpenStreetMaphez, tesztelték és visszajelzéseket adtak a funkciókról, valamint fejlesztői ismereteikkel és pénzzel is hozzájárultak a fejlesztéshez.
‣ <b>Nyílt, átlátható döntéshozatal és pénzügyek, nonprofit és teljesen nyílt forráskódú.
<b>Főbb jellemzők</b>:
• Letölthető részletes térképek olyan helyekkel, amelyek nem érhetők el a Google Maps-en
• Kültéri mód kiemelt túraútvonalakkal, kempingekkel, vízforrásokkal, csúcsokkal, szintvonalakkal stb.
• Gyalogos és kerékpáros útvonalak
• Érdekes helyek, például éttermek, benzinkutak, szállodák, üzletek, látnivalók és még sok más
• Keresés név, cím vagy érdekes hely kategória alapján
• Hangos navigáció gyalogos, kerékpáros vagy autós utazáshoz
• Kedvenc helyek könyvjelzővel egyetlen érintéssel
• Offline Wikipedia cikkek
• Metróhálózat és útvonaltervezés
• Útvonalrögzítés
• Könyvjelzők, útvonalak exportálása és importálása KML, KMZ, GPX formátumokban
• Sötét mód az éjszakai használathoz
• A beépített alapszerkesztővel mindenki javíthatja a térképadatokat
<b>A szabadság itt van</b>
Fedezze fel utazását, navigáljon a világban, ahol az adatvédelem és a közösség az első!

View File

@@ -1 +0,0 @@
Egyszerű térképnavigáció Fedezze fel utazását A közösség támogatásával

View File

@@ -1 +1 @@
CoMaps túrázás, kerékpározás, autózás offline
CoMaps - Túra, Bicikli, Vezetés offline diszkréten

View File

@@ -0,0 +1 @@
Navigation facile del mappa Discoperi tu viage Alimentate per le communitate

View File

@@ -1,32 +0,0 @@
Aplikasi peta gratis & sumber terbuka yang dipimpin komunitas, berbasis data OpenStreetMap dan diperkuat dengan komitmen terhadap transparansi, privasi, serta non-profit. CoMaps adalah turunan dari Organic Maps, yang merupakan turunan dari Maps.ME.
Baca lebih lanjut tentang alasan proyek ini dan arahnya di <b><i>codeberg.org/comaps</i></b>.
Bergabunglah dengan komunitas dan bantu menjadikan aplikasi peta terbaik
• Gunakan aplikasi ini dan sebarkan
• Beri masukan dan laporkan masalah
• Perbarui data peta di aplikasi atau di situs OpenStreetMap
‣ <b>Fokus Offline</b>: Rencanakan dan navigasikan perjalananmu di luar negeri tanpa perlu layanan seluler, cari titik saat hiking jauh, dll. Semua fungsi aplikasi dirancang untuk bekerja offline.
‣ <b>Menghormati Privasi</b>: Aplikasi ini dirancang dengan privasi sebagai prioritas tidak mengidentifikasi orang, tidak melacak, dan tidak mengumpulkan informasi pribadi. Bebas iklan.
‣ <b>Sederhana dan Rapi</b>: fitur penting yang mudah digunakan dan langsung berfungsi.
‣ <b>Hemat Baterai dan Ruang</b>: Tidak menguras baterai seperti aplikasi navigasi lain. Peta ringkas menghemat ruang berharga di ponselmu.
‣ <b>Gratis dan Dibangun oleh Komunitas</b>: Orang seperti kamu membantu membangun aplikasi ini dengan menambahkan tempat ke OpenStreetMap, menguji serta memberi masukan fitur, dan menyumbangkan keterampilan pengembangan maupun dana.
‣ <b>Terbuka dan Transparan</b>: Pengambilan keputusan dan keuangan transparan, non-profit, dan sepenuhnya sumber terbuka.
<b>Fitur Utama</b>:
• Peta detail yang bisa diunduh, dengan tempat yang tidak ada di Google Maps
• Mode outdoor dengan sorotan jalur hiking, area berkemah, sumber air, puncak, garis kontur, dll
• Jalur pejalan kaki dan jalur sepeda
• Titik menarik seperti restoran, SPBU, hotel, toko, tempat wisata, dan banyak lagi
• Pencarian berdasarkan nama, alamat, atau kategori titik menarik
• Navigasi dengan suara untuk berjalan, bersepeda, atau berkendara
• Tandai tempat favoritmu dengan sekali tap
• Artikel Wikipedia offline
• Layer dan rute transportasi subway
• Rekaman jejak
• Ekspor dan impor bookmark serta jejak dalam format KML, KMZ, GPX
• Mode gelap untuk digunakan saat malam
• Tingkatkan data peta untuk semua orang dengan editor bawaan sederhana
<b>Kebebasan Ada di Sini</b>
Temukan perjalananmu, jelajahi dunia dengan privasi dan komunitas di garis depan!

View File

@@ -1 +0,0 @@
Navigasi peta mudah Temukan lebih banyak Didukung oleh komunitas

View File

@@ -1,4 +1,4 @@
Una app realizzata dalla community gratuita e open-source, basata su OpenStreetMap e sull'impegno alla trasparenza, al rispetto della Privacy e senza scopo di lucro. CoMaps è uno spin-off di Organic Maps, che a sua volta deriva da Maps.ME.
Una app sviluppata dalla comunità, gratuita e open-source, basata su OpenStreetMap e sull'impegno alla trasparenza, al rispetto della Privacy senza scopo di lucro. CoMaps è uno spin-off di Organic Maps, che a sua volta deriva da Maps.ME.
Leggi delle ragioni del progetto e della sua direzione futura su <b><i>codeberg.org/comaps</i></b>.
Unisciti alla nostra comunità e aiutaci a creare la migliore app di mappe.
@@ -15,7 +15,7 @@ Unisciti alla nostra comunità e aiutaci a creare la migliore app di mappe.
<b>Funzionalità principali</b>:
• Scarica mappe dettagliate di luoghi che non sono disponibili su Google Maps
• Modalità Outdoor con percorsi escursionistici, campeggi, sorgenti d'acqua, picchi, dislivelli ed altri punti d'interesse evidenziati
• Modalità Outdoor con percorsi escursionistici, campeggi, sorgenti d'acqua, picchi, dislivelli ed altro evidenziati
• Strade pedonali e piste ciclabili
• Punti d'interesse come ristoranti, stazioni di benzina, hotel, negozi, luoghi turistici e molto altro
• Cerca per nome, indirizzo o categoria

View File

@@ -1 +1 @@
Navigazione semplice - Immergiti nella tua avventura - Realizzato dalla comunità
Navigazione semplice - Immergiti nella tua avventura - Sviluppato dalla comunità

View File

@@ -1 +0,0 @@
Vienkārša kartes navigācija - Atklāj vairāk par savu ceļojumu - Darbina kopiena

View File

@@ -1 +0,0 @@
CoMaps - dodies ceļā bezsaistē ar privātumu

View File

@@ -1,32 +0,0 @@
App għall-mapep b'xejn u b'sors miftuħ (open source) immexxi mill-komunità bbażata fuq dejta minn OpenStreetMap, b'impenn għal trasparenza, privatezza u mhux għal-profitt. CoMaps hija fork ta' Organic Maps, li min-naħa tagħha hija fork ta' Maps.ME.
Kompli aqra dwar ir-raġunijiet għall-proġett u d-direzzjoni tiegħu hawn <b><i>codeberg.org/comaps</i></b>.
Ingħaqad mal-komunità u għin biex toħloq l-aqwa app tal-mapep
• Uża l-app u semmiha ma' min taf
• Agħti feedback u rrapporta problemi
• Aġġorna d-dejta tal-mapep fl-app jew fuq il-websajt OpenStreetMap
‣ <b>Iffokata fuq offlajn</b>: Ippjana u innaviga l-vjaġġ tiegħek barra minn pajjiżek mingħajr ħtieġa ta' servizz ċellulari, fittex waypoints waqt ħajk, eċċ. Il-funzjonijiet kollha tal-app huma ddisinjati biex jaħdmu offlajn.
‣ <b>Tirrispetta l-Privatezza</b>: L-app hija ddisinjata bil-privatezza f'moħħha - ma tidentifikax nies, ma ssegwikx, u ma tiġborx informazzjoni personali. Bla reklami.
‣ <b>Sempliċi u Rfinuta</b>: karatteristiċi essenzjali, faċli biex jintużaw u li sempliċement jaħdmu.
‣ <b>Tiffrankalek Batterija u Spazju</b>: Ma taħlix il-batterija bħal apps oħra tal-mapep. Mapep kompatti li jiffrankawlek spazju prezzjuż fuq il-mowbajl.
‣ <b>B'xejn u Mibnija mill-Komunità</b>: Nies bħalek għenu fl-iżvilupp tal-app billi żiedu postijiet f'OpenStreetMap, ittestjaw u taw feedback dwar il-karatteristiċi u kkontribwew il-ħiliet u l-flus tagħhom.
‣ <b>Trasparenza fil-finanzi u fit-teħid ta' deċiżjonijiet, Mhux għall-profitt u sors kompletament miftuħ.</b>
<b>Karatteristiċi Prinċipali</b>:
• Mapep dettaljati li jistgħu jitniżżlu b'postijiet li mhumiex disponibbli fuq Google Maps
• Modalità ta' barra b'mogħdijiet tal-mixi, postijiet għal-ikkampjar, sorsi tal-ilma, quċċati, linji tal-kontorn, eċċ.
• Mogħdijiet għall-mixi u rotti għar-roti
• Postijiet ta' interess bħal ristoranti, stazzjonijiet tal-petrol, lukandi, ħwienet, postijiet turistiċi u ħafna aktar
• Fittex bl-isem jew bl-indirizz jew bil-kategorija interess
• Navigazzjoni b'avviżi bil-vuċi għall-mixi, ċikliżmu, u sewqan
• Immarka l-postijiet favoriti tiegħek b'tapp waħda
• Artikli offlajn ta' Wikipedia
• Direzzjonijiet tas-subways
• Reġistrazzjoni ta' trekks
• Esportazzjoni u importazzjoni ta' bookmarks u trekks f'formati KML, KMZ, GPX
• Modalità mudlama biex tintuża bil-lejl
• Ittejjeb id-dejta tal-mapep għal kulħadd b'użu ta' editur bażiku u integrat
<b>Il-Libertà Waslet</b>
Skopri l-vjaġġ tiegħek, innaviga d-dinja bil-privatezza u bil-komunità fuq quddiem nett!

View File

@@ -1 +0,0 @@
Navigazzjoni ta' mapep faċli - Skopri iktar mill-vjaġġ - Imsaħħaħ mill-komunita`

View File

@@ -1 +0,0 @@
CoMaps - Imxi, Suq Rota u Karozza bil-Privatezza

View File

@@ -1 +1 @@
CoMaps - Wandel, fiets, rijd offline met privacy
CoMaps - Wandel, fiets, rijdt offline met privacy

View File

@@ -1 +0,0 @@
Enkel kartnavigering - Opplev mere på din reise - Drevet av felleskapet

View File

@@ -1 +0,0 @@
CoMaps - Gå, sykle, kjøre offline med personvern

View File

@@ -1,32 +0,0 @@
Prowadzona przez społeczność, darmowa i otwartoźródłowa aplikacja mapowa oparta na danych OpenStreetMap, wzmacniana zobowiązaniem do transparentności, prywatności i działalnością non-profit. CoMaps jest forkiem/spin-off'em Organic Maps, który z kolei jest forkiem Maps.ME.
Przeczytaj o powodach powstania projektu i jego kierunku na stronie <b><i>codeberg.org/comaps</i></b>.
Dołącz do społeczności i pomóż stworzyć najlepszą aplikację mapową
• Używaj aplikacji i rozpowszechnia o niej informacje,
• Przekazuj opinie i zgłaszaj problemy,
• Aktualizuj dane w aplikacji lub na stronie OpenStreetMap.
‣ <b>Skoncentrowana na pracy w trybie offline</b>: Zaplanuj trasę i nawiguj podczas swojej podróży za granicą bez potrzeby korzystania z sieci komórkowej, wyszukuj punkty nawigacyjne podczas dalekich wędrówek itp. Wszystkie funkcje aplikacji zostały zaprojektowane do pracy w trybie offline.
‣ <b>Poszanowanie prywatności</b>: Aplikacja została zaprojektowana z myślą o prywatności nie identyfikuje osób, nie śledzi ich i nie gromadzi danych osobowych. Bez reklam.
‣ <b>Prosta i dopracowana</b>: niezbędne, łatwe w użyciu funkcje, które po prostu działają.
‣ <b>Oszczędza baterię i miejsce</b>: Nie wyczerpuje baterii jak inne aplikacje nawigacyjne. Kompaktowe mapy oszczędzają cenne miejsce w telefonie.
‣ <b>Darmowa i stworzona przez społeczność</b>: Osoby takie jak Ty pomogły w tworzeniu aplikacji, dodając miejsca do OpenStreetMap, testując i przekazując opinie na temat funkcji oraz wnosząc swoje umiejętności programistyczne i pieniądze.
‣ <b>Otwarte i transparentne podejmowanie decyzji i zarządzanie finansami, nie dla zysku i w pełni otwartoźródłowe.</b>
<b>Główne funkcje</b>:
• Szczegółowe mapy do pobrania z miejscami niedostępnymi na wielu mapach komercyjnych,
• Tryb outdoorowy z wyróżnionymi szlakami turystycznymi, kempingami, źródłami wody, szczytami, poziomicami itp.,
• Ścieżki spacerowe i rowerowe,
• Punkty zainteresowania, takie jak restauracje, stacje benzynowe, hotele, sklepy, atrakcje turystyczne i wiele innych,
• Wyszukiwanie według nazwy, adresu lub kategorii punktu zainteresowania,
• Nawigacja z komunikatami głosowymi dla pieszych, rowerzystów i kierowców,
• Dodawanie zakładek do ulubionych miejsc jednym dotknięciem,
• Artykuły z Wikipedii offline,
• Warstwa z liniami metra oraz nawigacja z użyciem metra,
• Nagrywanie tras,
• Eksport i import zakładek i tras w formatach KML, KMZ i GPX,
• Ciemny tryb do użytku w nocy,
• Ulepszanie danych mapowych dzięki wbudowanemu edytorowi.
<b>Wolność jest tutaj</b>
Odkrywaj swoją podróż, nawiguj po świecie z prywatnością i społecznością na pierwszym planie!

View File

@@ -0,0 +1,9 @@
Wprowadzamy logo CoMaps!
• zwiększenie dokładności izolinii w wielu regionach w krokach 20 do 50 metrów
• dodanie linków do zdjęć z Panoramax do wybranych POI
• aktualizacja danych OpenStreetMap z 13 lipca
• dodanie wypełnienia kolorem dla wielu typów obiektów
• wyświetlanie stanu godzin otwarcia przy wyborze POI
• podział mokradeł na kilka typów
• aktualizacja koloru roślinności i innych kolorów, aktualizacja części ikon na mapie
• tryb outdoorowy: pogrubione warstwice wysokości

View File

@@ -1 +0,0 @@
Łatwa nawigacja po mapie - Odkryj więcej z podróży - Wspierane przez społeczność

View File

@@ -1 +0,0 @@
CoMaps - Nawiguj offline z zachowaniem prywatności

View File

@@ -1,7 +1,9 @@
• Dados OSM de 04/11
Ícones do mapa recategorizados, incluindo novas cores
Exibição de informações sobre tomadas disponíveis em eletropostos
Adição de ícones para diferentes centros esportivos, locais de eventos, salões de massagem, pousadas e alguns estabelecimentos comerciais desativados
Diversas melhorias e correção de erro na busca
Melhoria na orientação por voz durante a navegação
Confira nossas notas de lançamento no Codeberg para mais detalhes!
Apresentamos o logo do CoMaps!
Curvas de nível mais detalhadas em muitas regiões
Adicionados links de imagens do Panoramax para pontos de interesse selecionados
Dados OSM de 13/07
Adicionados preenchimentos de cor a muitos elementos
Exibição de horário de funcionamento ao selecionar um ponto de interesse
• Divididas áreas úmidas em vários tipos distintos
• Atualizada cores/ícones para vegetação e outros elementos
• Ar livre: curvas de nível de altitude mais destacadas

View File

@@ -1,32 +0,0 @@
Uma aplicação pela comunidade, grátis e open-source, de mapas baseada em dados do OpenStreetMap e reforçada com compromisso para transparência, privacidade e sem fins lucrativos. CoMaps é um fork/spin-off de Organic Maps, que, por sua vez, é um fork de Maps.ME
Leia sobre as razões deste projeto e a sua direção em <b><i>codeberg.org/comaps</i></b>.
Junte-se à comunidade e ajude a fazer a melhor aplicação de mapas
• Use a aplicação e partilhe-a com outros
• Dê feedback e reporte problemas
• Atualize os dados de mapa na aplicação ou no site do OpenStreetMap
‣ <b>Simples e Polida</b>: funcionalidades essenciais fáceis que “somente funcionam”.
‣ <b>Foco Offline</b>: Planeie e navegue as suas viagens no estrangeiro sem dados móveis, procure locais numa caminhada distante, etc. Todas as funções da aplicação foram criadas com intenção de serem usadas sem internet.
‣ <b>Respeita a privacidade</b>: A aplicação foi criada com privacidade em mente — não identifica o utilizador, não rastreia, e não usa a sua informação pessoal. Sem anúncios.
‣ <b>Saves Your Battery and Space</b>: Não esgota a sua bateria ao contrário de outras aplicações. Mapas compactos salvam espaço no seu telemóvel.
‣ <b>Gratuita e Feita pela Comunidade</b>: Pessoas como si ajudam a criar a aplicação ao adicionar locais ao OpenStreetMap, testando e dando opiniões em funcionalidades e contribuindo com dotes de desenvolvimento e dinheiro.
‣ <b>Decisões e Finanças Abertas e Transparentes, Sem fins lucrativos e Open-Source.</b>
<b>Funcionalidades principais</b>:
• Mapas detalhados descarregáveis com locais que não estão disponíveis com o Google Maps
• Modo ao Ar Livre com trilhos de caminhada destacados, acampamentos, fontes de água, cumes, curvas de nível, etc
• Caminhos pedestres e ciclovias
• Pontos de interesse como restaurantes, estações de serviço, hotéis, lojas, atrações e muitos mais
• Pesquise por nome, endereço, ou por categoria de ponto de interesse
• Navegação com anúncios de voz ao caminhar, pedalar ou conduzir
• Marque os seus locais favoritos com um único clique
• Artigos da Wikipédia Offline
• Camada de metro e direções
• Gravação de Percursos
• Exportar e importar marcadores e percursos em formatos KML, KMZ, GPX
• Um modo escuro para usar durante a noite
• Melhore a informação do mapa para todos com um editor básico embebido
<b>A liberdade chegou</b>
Descubra a sua jornada, navegue o mundo com privacidade e a comunidade à frente!

View File

@@ -0,0 +1,32 @@
Um aplicativo de mapas gratuito e de código aberto, liderado pela comunidade, baseado em dados do OpenStreetMap e reforçado pelo compromisso com a transparência, privacidade e sem fins lucrativos. O CoMaps é um fork/spin-off do Organic Maps, que por sua vez é um fork do Maps.ME.
Leia mais sobre os motivos do projeto e sua direção em <b><i>codeberg.org/comaps</i></b>.
Junte-se à comunidade e ajude a criar o melhor aplicativo de mapas.
• Use o aplicativo e divulgue-o.
• Envie feedback e relate problemas.
• Atualize os dados do mapa no aplicativo ou no site do OpenStreetMap.
‣ <b>Foco offline</b>: Planeje e navegue em sua viagem ao exterior sem a necessidade de sinal de celular, pesquise pontos de referência durante uma caminhada distante, etc. Todas as funções do aplicativo foram projetadas para funcionar offline.
‣ <b>Respeitando a privacidade</b>: O aplicativo foi projetado com a privacidade em mente - não identifica pessoas, não rastreia e não coleta informações pessoais. Sem anúncios.
‣ <b>Simples e sofisticado</b>: recursos essenciais e fáceis de usar que simplesmente funcionam.
‣ <b>Economiza bateria e espaço</b>: Não consome muita bateria como outros aplicativos de navegação. Mapas compactos economizam espaço precioso no seu celular.
‣ <b>Gratuito e desenvolvido pela comunidade</b>: Pessoas como você ajudaram a desenvolver o aplicativo adicionando lugares ao OpenStreetMap, testando e dando feedback sobre os recursos e contribuindo com suas habilidades de desenvolvimento e dinheiro.
‣ <b>Tomada de decisões e finanças abertas e transparentes, sem fins lucrativos e totalmente de código aberto.</b>
<b>Principais recursos</b>:
• Mapas detalhados para download com locais não disponíveis no Google Maps
• Modo ao ar livre com trilhas em destaque, acampamentos, fontes de água, picos, curvas de nível, etc.
• Trilhas para caminhada e ciclovias
• Pontos de interesse como restaurantes, postos de gasolina, hotéis, lojas, pontos turísticos e muito mais
• Pesquise por nome, endereço ou por categoria de ponto de interesse
• Navegação com anúncios de voz para caminhadas, ciclismo ou direção
• Marque seus lugares favoritos com um único toque
• Artigos offline da Wikipédia
• Camada e direções de transporte público do metrô
• Gravação de trilhas
• Exporte e importe favoritos e trilhas nos formatos KML, KMZ e GPX
• Um modo escuro para usar à noite
• Aprimore os dados do mapa para todos usando um editor básico integrado
<b>A Liberdade Chegou</b>
Descubra sua jornada, navegue pelo mundo com privacidade e comunidade em primeiro lugar!

View File

@@ -1,32 +0,0 @@
O aplicație de hărți gratuită & open source, condusă de comunitate, bazată pe date OpenStreetMap și întărită prin angajament față de transparență, confidențialitate și statut non-profit. CoMaps este un fork/spin-off al Organic Maps, care la rândul său este un fork al Maps.ME.
Citește mai multe despre motivele proiectului și direcția sa pe <b><i>codeberg.org/comaps</i></b>.
Alătură-te comunității de acolo și ajută la crearea celei mai bune aplicații de hărți:
• Folosește aplicația și promovează-o
• Oferă feedback și raportează probleme
• Actualizează datele hărților în aplicație sau pe site-ul OpenStreetMap
‣ <b>Orientare offline</b>: Planifică-ți și navighează-ți călătoria în străinătate fără nevoia unui semnal cellular, caută puncte de reper în timpul unei drumeții îndepărtate etc. Toate funcțiile aplicației sunt concepute să funcționeze offline.
‣ <b>Respectă confidențialitatea</b>: Aplicația este concepută cu confidențialitatea în minte - nu identifică persoanele, nu urmărește și nu colectează informații personale. Fără reclame.
‣ <b>Simplă și rafinată</b>: caracteristici esențiale, ușor de utilizat, care funcționează fără probleme.
‣ <b>Economisește bateria și spațiul</b>: Nu consumă bateria la fel de mult ca alte aplicații de navigație. Hărțile compacte economisesc spațiu prețios pe telefon.
‣ <b>Gratuită și construită de comunitate</b>: Oameni ca tine au contribuit la construirea aplicației prin adăugarea de locații pe OpenStreetMap, testare și oferire de feedback pentru funcții, și prin contribuția cu abilități de dezvoltare și finanțare.
‣ <b>Decizii și finanțare deschise și transparente, non-profit și cu sursă complet deschisă (open source)</b>.
<b>Caracteristici principale</b>:
• Hărți detaliate, descărcabile, cu locații care nu sunt disponibile pe Google Maps
• Mod pentru activități în aer liber cu trasee de drumeție marcate, locuri de campat, surse de apă, vârfuri, linii de contur etc.
• Căi pietonale și piste de ciclism
• Puncte de interes precum restaurante, benzinării, hoteluri, magazine, obiective turistice și multe altele
• Căutare după nume, adresă sau categorie de punct de interes
• Navigație cu anunțuri vocale pentru mers pe jos, cu bicicleta sau cu mașina
• Marchează-ți locațiile preferate cu un singur clic
• Articole Wikipedia offline
• Strat pentru metrou și indicații de traseu
• Înregistrare trasee
• Exportă și importă marcaje și trasee în formatele KML, KMZ, GPX
• Un mod întunecat pentru utilizare nocturnă
• Îmbunătățește datele hărții pentru toți, folosind un editor de bază integrat
<b>Libertatea este aici</b>
Descoperă-ți călătoria, navighează prin lume având în frunte confidențialitatea și comunitatea!

View File

@@ -1 +0,0 @@
Navigare ușoară - Descoperă mai mult din călătoria ta - Susținut de comunitate

View File

@@ -1 +1 @@
CoMaps - călătorește offline cu confidențialitate
CoMaps - Drumeții, Ciclism, Condus Offline în confidențialitate

View File

@@ -1,8 +1,9 @@
• Карты OpenStreetMap от 4 ноября
Обновлены цвета иконок на карте, добавлены новые цвета для развлечений, спорта, некоторых бизнесов
На зарядных станциях показываются имеющиеся типы разъёмов
Добавлены эстрады, скамейки без спинок и лежаки
Новые иконки для разных спорт центров, массажных салонов, гостевых домов, некоторых закрытых бизнесов
Несколько улучшений и исправлений в поиске
Улучшены голосовые подсказки при навигации
Подробнее смотрите на codeberg.org/comaps/comaps/releases
Представляем логотип CoMaps!
Линии высот для многих регионов с шагом 20м или 50м
Ссылки на изображения Panoramax к выбранным POI
Карты OpenStreetMap от 13 июля
Заливки цветом ко многим объектам и более ранняя заливка для существующих объектов
Показ часов работы при выборе POI
Разные водно-болотные угодья отличаются цветом
• Обновлены цвета растительности и другие цвета на карте, изменены некоторые иконки
В стиле "Активный отдых" более четкие линии высот

View File

@@ -1 +0,0 @@
Jednoduchá navigácia - Objav viac zo svojej cesty - Funguje vďaka komunite

View File

@@ -1 +0,0 @@
CoMaps - kráčaj, bicykluj a jazdi v súkromí

View File

@@ -1,31 +0,0 @@
Brezplačno in odprtokodno zemljevidno orodje, ki ga vodi skupnost, temelji na podatkih OpenStreetMap in je okrepljena s predanostjo transparentnosti, zasebnosti in nedobičkonosnosti. CoMaps je izpeljanka OrganicMaps, ta pa je izpeljanka Maps.ME.
Preverite si o razlogih za ta projekt in njegovi usmerjenosti na <b><i>codeberg.org/comaps</i></b>.
Pridružite se skupnosti in pomagajte narediti najboljše zemljevidno orodje
• Uporabljajte orodje in širite glas o njem
• Dajajte povratne informacije in poročajte o napakah
• Posodabljajte podatke zemljevida v tem orodju ali na spletni strani OpenStreetMap
‣ <b>Osredotočeno na uporabo brez povezave</b>: Načrtujte in se usmerjajte na vašem potovanju v tujini vrez potrebe po mobilnih podatkih, iščite vmesne točke potocanja ko ste na daljšem pohodu ipd. Vse zmogljivosti orodja so zasnovane za delo brez povezave.
‣ <b>Spoštovanje zasebnosti</b>: orodje je zasnovano z mislijo na zasebnost ne prepoznava oseb, ne sledi in ne zbira osebnih podatkov. Brez oglasov.
‣ <b>Preprosto in dodelano</b>: nujne zmogljivosti, enostavne za uporabo, ki preprosto delujejo.
‣ <b>Prihrani vašo baterijo in prostor.</b>: ne izčrpava vaše baterije kakor druga usmerjevalna orodja. Strnjeni zemljevidi prihranijo dragocen prostor na vašem telefonu.
‣ <b>Brezplačno in ustvarjeno v skupnosti</b>: ljudje kot ste vi pomagajo ustvarjati to orodje, tako da dodajajo kraje na OpenStreetMap, preizkušajo in dajejo povratne informacije o zmogljivostih in prispevajo svoje razvijalske sposobnosti in sredstva.
‣ <b>Odprto in transparentno odločanje in finance, nedobičkonosno in popolnoma odprtokodno.</b>
<b>Glavne zmogljivosti</b>:
• Prenosljivi podrobni zemljevidi s kraji, ki na Googlovoh zemljevidih niso na voljo.
• Prikaz za dejavnosti na prostem s poudarjenimi pohodniškimi potmi, tabornimi prostori, vodnimi viri, vrhovi, plastnicami itd.
• Pešpoti in kolesarke poti
• Kraji zanimanja, npr. restavracije, bencinske črpalke, hoteli, trgovine, znamenitosti in mnogo več
• Iščite po imenu, hišnemu naslovu ali po vrsti
• Usmerjanje z glasovnimi obvestili za hojo, kolesarjenje ali vožnjo avtomobila.
• Zaznamujte svoje najljubše kraje s preprostim dotikom
• Wikipedijini članki brez povezave
• Prometna plast podzemne železnice z usmerjanjem
• Izvozite ali uvozite zaznamke in sledi v oblikah KML, KMZ, GPX
• Temni prikaz za uporabo ponoči
• Izboljšajtw podatke zemljevida za vse z uporabo vgrajenega urejevalnika
<b>Svoboda je tu</b>
Odkijte več o vašem potovanju, usmerjajte se po svetu s poudarkom na zasebnosti in skupnostnem delovanju!

View File

@@ -1 +0,0 @@
Enostavno usmerjanje Odkrij več o svojem potovanju Podprto v skupnosti

View File

@@ -1 +0,0 @@
CoMapsHodi, kolesari, vozi brez povezave, zasebno

Some files were not shown because too many files have changed in this diff Show More