Organic Maps

A free offline maps app for travelers, tourists, hikers, and cyclists based on top of crowd-sourced OpenStreetMap data and curated with love by MapsWithMe (Maps.Me) founders

Scale to fit

App ID:

OMaps

See details on the page automatic-app-scaling.

Phone Compatibility

4 of 5 Points (UI is not made for mobile devices)

How to install

Apt

Note that there is no Debian package for this application yet.

https://wiki.debian.org/OrganicMaps

Flatpak

Command:

# Confirm that you trust and add the flathub repo to flatpak
flatpak install flathub app.organicmaps.desktop

Repo

Known Issues

GPS doesn't work, as it does not support Geoclue:

https://github.com/organicmaps/organicmaps/issues/3870

Compiling from source

THESE instructions may be outdated. The OpenGL issues have been fixed upstream with the last flatpak version.

As the compilation of organicmaps requires at least 4GB RAM you can't compile it directly locally on the phone, as this would result in a kernel panic.

Setup QEMU

As your host is most likely running on an amd64 architecture, you need to install QEMU system for arm64:

sudo apt install qemu-system-arm

Get (an up to date) debian image. The nocloud image allows root access without password:

wget -c https://cdimage.debian.org/cdimage/cloud/bookworm/daily/20221112-1197/debian-12-nocloud-arm64-daily-20221112-1197.qcow2

Increase the virtual image size, so there is enough space for the compilation process:

qemu-img resize debian-12-nocloud-arm64-daily-20221112-1197.qcow2 +10G

Then start the image. As organicmaps requires at least 4GB of memory, give it at least 6GB to avoid any kernel panic during compilation or linking:

qemu-system-aarch64 -m 6G -cpu max -smp 4 -M virt -nographic -bios /usr/share/qemu-efi-aarch64/QEMU_EFI.fd -drive if=none,file=debian-12-nocloud-arm64-daily-20221112-1197.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -device virtio-net-device,netdev=net0 -netdev user,hostfwd=tcp:127.0.0.1:2222-:22,id=net0

Once the image startet successfully, you can login as root without any password. You still need to grow the filesystem. As there were some errors in regards to wrong checksums of backup supernodes of the ext4 FS, deactivate the following option in /etc/fstab as otherwise you'll end up with a read-only filesystem:

vim /etc/fstab
"remove the grub option: errors=remount-ro from the first entry"

Then extend the FS

growpart /dev/vda 1

and add the contrib component to debian sources, update and reboot:

vim /etc/apt/sources.list.d/debian.sources
sudo apt update
reboot
Install dependencies
# install build-requirements
sudo apt install build-essential clang ninja-build python3 qtbase5-dev libc++-dev libfreetype-dev libglu1-mesa-dev libicu-dev libqt5svg5-dev libsqlite3-dev zlib1g-dev ccache cmake git
Get the sources

As several paths are hard coded during the compilation process, make sure you create at pseudo home directory for mobian.

There was an error with some boost libraries during the ./configure stage. As a solution, you need to clone also all submodules (there is most likely a much better solution, by utilising existing boost packages from debian.)

As long as this PR isn't merged, you may want to use the wayland_es branch from here instead the master branch.

## create fake mobian dir
mkdir /home/mobian
cd /home/mobian
## shallow copy for a one off compilation
git clone --filter=blob:limit=128k --depth=1 --shallow-submodules  https://github.com/organicmaps/organicmaps.git
## only due to error messages from boost libraries 
cd organicmaps
git submodule update --init --recursive
build package

You can use more than 1 core for compilation, but I found that I run twice out of memory and into a kernel panic, so in the end I stuck to a single kernel:

./configure.sh
tools/unix/build_omim.sh -n 1 -r desktop
copy it to mobian

As the executable relies on several other files, it's best to copy the whole build directory to your phone (choose your IP address, and make sure the ssh server is running on your phone: sudo service ssh status):

scp -r omim-build-release mobian@10.42.0.1:~/

And make sure there is a data directory in the build directory. If not present, copy it from the source directory.

run it under mobian

Check which dynamic libraries are missing under phosh/mobian

ldd ~/omim-build-release/OMaps

I needed to install at least those two additional runtime packages, and in particular I'm not certain if this is the right one for libOpenGL.so.0 (please feel free to improve)

# install runtime dependencies
sudo apt install libicu72 libopengl0

Finally start Organicmaps with the cs2 Option (for the very first start, it will ask to accept the Copyright and ask to Download the worldmap)

~/omim-build-release/OMaps -es2

If you get the following error message regarding copyright file

File copyright.html doesn't exist in the scope wrf

just make a symbolic link in the home directory:

ln -s omim-build-release organicmaps

Please feel free to add, how to avoid those hard coded paths. For now it's a very q'n'd solution, but at least OMaps starts for now. Nevertheless, I get random segfaults while using it.