View on GitHub

Raster tiles chartplotter

Download this project as a .zip file Download this project as a tar.gz file

GaladrielMap License: CC BY-SA 4.0

This is a server-based chart plotter navigation software for pleasure crafts, motorhomes, and off-road cars. The application can be placed on a weak server such as RaspberryPi, NAS or router and used on full clients such as tablets and smartphones. Only browser need.


v. 2.3

Technically this an online tiles map viewer. With GaladrielCache – this an offline viewer with tile grabbing features. It is assumed that the application is used in the onboard local area network of the boat or car. The author uses it from the wi-fi router/GSM modem under OpenWRT as a server on his sailboat “Galadriel”.

The author is not responsible for the consequences of using the GaladrielMap for navigation. It is not guaranteed that any of the information on the screen is correct, including but not limited to spatial position, speed, depth, and direction of movement.

The GaladrielMap created with use a lot of famous projects, so don’t forget to install dependenses.


  1. Online or offline user-defined maps
  2. Positioning with GNSS receivers
  3. Tracking
  4. Display routes and POIs files in gpx, kml and csv format
  5. Creating and edit a route localy and save it to the server in gpx format
  6. Exchange coordinates via clipboard
  7. Weather forecast from Thomas Krüger Weather Service
  8. Display AIS info
  9. Collision detection
  10. netAIS support
  11. A Man OverBoard feature
  12. Optimised for E-Ink screens Dashboard
  13. Control the GaladrielCache Loader
  14. English or Russian interface, dependent of browser language settings



Linux, OpenWRT, VenusOS. Modern browsers include mobile.


Full feature live demo. Sometimes there floating a virtual sailboat. Unfortunately, the Oracle Inc. turned out to be a crook, so the demo does not work.

Ready to use images

Available ready to use virtual machine disk image and Raspberry Pi bootable image. It’s a fully configured Linux system with GaladrielMap, GaladrielCache, netAIS, gpsd, gpxlogger, etc. for test and builds own onboard server.


You must have a web server under Linux with web server and php support. Just copy app, dependences and set paths.
Paths and other are set and describe in params.php
More detailed instructions are available in emergencykit/ directory.

Emergency kit

All you need to install, including dependences, are in emergencykit/. See README.txt how to install. You may download full pack – more 10MB, or without vector tiles support and screenshots pack – less them 3MB.

Dependences and thanks

Create a local copy of dependences and/or edit index.php

More thanks


The GaladrielMap applies OSM-style tiles map, both raster and vector. It can be one OSM- or mapbox-like on-line map or with GaladrielCache any number of stacked maps, online and offline.
stacked maps
The map source is set in the params.php, and if it is GaladrielCache (default), you have available any number of user-defined map sources. How to define a new map – described in GaladrielCache project.
At least, it include
Open Sea Map
Open Topo Map

Mapbox-style vector tiles maps

GaladrielMap has limited support the Mapbox-style vector tiles maps. Mapbox style file must be placed on $mapSourcesDir directory of the GaladrielCache with {mapname}.json name. (See GaladrielCache docs.) Sprites and glyphs you can find in styles/ directory.


GaladrielMap gets realtime spatial data and other info via gpsd. Usually enough plug a GNSS receiver to the server.
How to install and configure gpsd see gpsd pages.
Also, GaladrielMap can get data from VenusOS or Signal K - localy or via LAN. If GaladrielMap don’t find gpsd, it it tries to discover Signal K and then VenusOS on LAN and takes the data from there.

Map always sets to current position. This behavior can be temporarily disabled on the Settings menu. Following the cursor is disabled if Route or Loader menu are open.


GaladrielMap uses gpxlogger app from the gpsd-clients packet to log track on your server. Control gpxlogger are in Handle tracks tab.
GaladrielMap displays the current track as a not well-formed gpx file. Other tracks may be displayed simultaneously.
Run chkGPXfiles.php in cli to repair non-well-formed gpx files for other applications.
Tracks placed in tracks directory on the server as it described in params.php.
Installation and configuring the gpxlogger describe in gpsd documentation. You may use any other server-side logger for tracking in gpx format, set up it in params.php. If not - the logged track will still be updated if its name will be recognized as “current track” (see params.php).

Routes and POIs

Display routes and POIs
GaladrielMap display routes and PointOfInterest on gpx, kml and csv formats. Place you routes and POIs files to route directory on the server as it directory described in params.php. Open POI tab.


Comma-Separated Values text file - the simplest way of cooking personal POI for your trip. Only text editor needed. But, to avoid mistakes, any spreadsheet recommended.
The first line in the CSV file must be field names. Good choice is a "number","name","description","type","link","latitude","longitude"
Latitude and longitude may be in degrees, minutes and seconds, 61°04.7’N for example, or in decimal degrees. A real example of using CSV to store information about ports and piers on Lake Saimaa in Finland - SaimaaPOI. File with geospatial photolinks on CSV format - is a good example too.
Place your CSV to route directory on the server as it directory described in params.php. Avoid setting file names in route same as names in tracks directory.

Creating and edit a route

Creating a route
Open Handle route tab to navigational plotting feature. You can create and edit a route and waypoints on the local device, and/or save it to server to route directory.
This feature includes a base gpx route editing tool. You can edit any gpx route from the server in the same way as local route, and save it under the same or new name. Displaying edited routes update automatically on all connected devices.
Good case for use – navigational plotting by the navigator in a dry and warm booth for the steersman on the rain and wind.
But it is only a base gpx route editor. Gpx <metadata> not supported, and point <extensions> (GARMIN like it) not supported too. Be careful to edit and save exists gpx.
Also be careful with danger of unauthorized edit routes from guests and childrens. Disable the auto-update routes via params.php.

For route planning, it is useful to find coordinates by geographical name or postal address, if there is an Internet connection, of course. And vice versa – getting the nearest address for the screen centre. Use the input field for it.

Exchange coordinates

To get current position to clipboard to share it via other apps - tap on Position on Dashboard tab.
Also, tap on POI name on point’s popup to get a position of this point.
To get coordinates of any point - open Handle route tab. Coordinates of crosshair will be in the input text field.
To fly map by coordinates type they of any format to this field and press button.

Weather forecast

Weather forecast
If there is an Internet connection you can get the weather forecast from Thomas Krüger Weather Service.

Display AIS info

AIS info
The GaladrielMap displayed AIS data via gpsdPROXY from gpsd or directly from Signal K. The gpsd may need additional set up to get AIS flow from AIC transmitters, but usually no need for additional set up to get data from the AIS receiver.
Displaying AIS data is disabled by default, so you must enable it by uncomment string with $aisServerURI variable in params.php. To temporarily disable displaying AIS data use switch in Settings menu.
As displaying AIS data from gpsd need gpsdPROXY, you MUST use gpsdPROXY as position data service. Set up $gpsdHost and $gpsdPort variables in params.php to this.

Collision detection

collision indicate

The GaladrielMap shows information on possible collisions calculated by the gpsdPROXY. Potentially dangerous objects are highlighted and their direction is indicated by an arrow.
Do not rely too much on the collision detection system. Remember that no information issued or not issued by the collision detection system can be the basis for the actions or inaction of the navigator. Be careful.

netAIS support

The netAIS is the local service to exchange position information inside of a private group via internet.
GaladrielMap displayed full netAIS info, include text messages.
For example, three members of the same private group see each other on its screens.

A Man OverBoard

A Man OverBoard
Sets marker, stretches the line to and indicates distance and direction to MOB just by open tab.
Tap to MOB button opens MOB tab and start MOB mode. Track logging turned on, positions the MOB markers saved to the server. You may add new markers and dragging markers to a new position. Tap to marker to select it for stretches the direction line to. Tap on indication of MOB position copies it to clipboard.
MOB information spreading to all connected devices and may edit from any of this.
To finalize MOB mode tap to the dot left of the “Terminate” button first.


dashboard.php - the separate app to display some instruments attached to gpsd, on weak (and/or old) devices, such as e-ink readers, for example.
Instruments from Signal K not displayed.
Dashboard velocity
Dashboard heading

Live demo

The screen image optimized to different screen resolutions and should look good from little to big screens. Displayed velocity, depth and true and magnetic heading. You can use two or more devices to display different info. At the border of the screen is always visible the mark with general direction.
The Dashboard allows you to set a visual and sound signal for dangerous events, such as shallow or speed.
Set alarm events
Set up your browser to allow sound signal.
The signal settings are local for every showing device, and it is triggered only if the device work. Be careful!
If the course alarm is set, the set and current direction are displayed at the border of the screen as triangle and dash marks:
Course alarm marks
When deviating from the course the visual and sound alarm fired: Course alarm

The presence of the touch screen is assumed, and mode is switched by a tap to the next data type button on the screen.
For some devices with JavaScript you may set up some hardware keys to switch mode, magnetic or true course and opening alarm menu. Use Settings button button on bottom of alarm menu to set up it. Default keys is:

No fanciful javascript, no fanciful css.
Highly recommended to use gpsdPROXY if you want to see data other them velocity.

The GaladrielCache Loader

Control Loader
Choose a region by specifying tile numbers by hand in the panel or by tap on tile number on the map. After tap the Ok button to start loader.
All displayed maps will be loaded from the current zoom to the maximum zoom. The loader runs on the server, so it autonomous and robust. Loader restart after server reboot and it will work until it finishes.
For see of loaded tiles use coverage switch.

Work on OpenWRT

On powerful computers (Raspbery Pi, yes) on OpenWRT installation and startup of GaladrielMap are performed in the same way as on common Linux.
On routers usually need custom firmware if the capacity of the built-in drive is insufficient. For example, MT7620A based router OpenWRT firmware for run GaladrielMap.

Work on VenusOS

The GaladrielMap mostly can work in VenusOS v2.80~38 or above. Or get data from it in LAN. To do this, you need:

opkg update  
opkg install php-cli  




The forum will be more lively if you make a donation via PayPal at or at ЮMoney

On paid

Personal consulting

Available Raspberry Pi bootable image with Raspbian, OpenWRT or VenusOS. Image include GaladrielMap with GaladrielCache and netAIS (except VenusOS, this not have workable netAIS) and ready to use. You can also order burn image to SD card the capacity you need. Contact

It is possible to order WiFi router/internet access point with OpenWRT (such as MT7620A based router or other) with fully configured and ready to use GaladrielMap. Contact