This a server-based chart plotter navigation software for pleasure crafts 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.
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.
The GaladrielMap created with use a lot of famous projects, so don't forget to install dependenses.
- Online or offline user-defined maps
- Positioning via gpsd
- Tracking
- Display routes and POIs files in gpx, kml and csv format
- Creating and edit a route localy and save it to the server in gpx format
- Exchange coordinates via clipboard
- Weather forecast from Thomas Krüger Weather Service
- Display AIS info
- netAIS support
- A Man OverBoard feature
- Optimised for E-Ink screens Dashboard
- Control the GaladrielCache Loader
- English or Russian interface, dependent of browser language settings
Linux. Modern browsers include mobile.
Full feature live demo. Sometimes there floating a virtual sailboat.
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 php support. Just copy app, dependences and set paths.
Paths and other are set and describe in params.php
All you need to install, including dependences, are in emergencykit/.
You may download full pack -- more 4MB, or without vector tiles support pack -- less them 1MB.
- Leaflet in leaflet/ directory
- Coordinate Parser in coordinate-parserPATCHED/ directory
- L.TileLayer.Mercator as L.TileLayer.Mercator/src/L.TileLayer.Mercator.js
- Leaflet.Editable in Leaflet.Editable/ directory
- Leaflet.RotatedMarker as Leaflet.RotatedMarker/leaflet.rotatedMarker.js
- Leaflet Measure Path in leaflet-measure-path/ directory
- leaflet-sidebar-v2 in leaflet-sidebar-v2/ directory
- mapbox-gl-js in mapbox-gl-js/dist/ directory
- mapbox-gl-leaflet as mapbox-gl-leaflet/leaflet-mapbox-gl.js
- supercluster as supercluster/supercluster.js
- gpsdAISd in gpsdAISd/ directory
Create a local copy of dependences and/or edit index.php
- leaflet-omnivore for leaflet-omnivore. This patched to show markers and non well-formed gpx files.
- Metrize Icons by Alessio Atzeni for icons.
- Typicons by Stephen Hutchings for icons.
- Map Icons Collection for icons.
- On/Off FlipSwitch
- leaflet-tracksymbol which became the basis for display AIS data
- openmaptiles for Open Font Glyphs for GL Styles
- GitHub MAPBOX project for navigation ui resources
- OpenMapTiles for Mapbox GL basemap style
- leaflet-ais-tracksymbol for ideas
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.
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
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.
Map always sets to current position. This behavior can be temporarily disabled on the menu. Following the cursor is disabled if
or
menu are open.
GaladrielMap use gpxlogger
app from gpsd-clients packet to logging track on your server. Control gpxlogger
are in tab.
GaladrielMap displaying 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
described in gpsd documentation. You may use any other server-side logger for tracking in gpx format, set up it in params.php.
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 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.
Open tab to navigational plotting feature. You can create and edit a route 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.
To get current position to clipboard to share it via other apps - tap on Position on tab.
Also, tap on POI name on point's popup to get a position of this point.
To get coordinates of any point - open 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.
If there is an Internet connection you can get the weather forecast from Thomas Krüger Weather Service.
GaladrielMap displayed AIS data via gpsd. 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.
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.
Sets marker, stretches the line to and indicates distance and direction to MOB just by open tab.
Tap to 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 if it is in your board network, on weak (and/or old) devices, such as E-ink readers, for example. Displayed velocity, depth and true and magnetic heading.
The Dashboard allows you to set a signal for dangerous events, such as shallow or speed. Set up your browser to allow sound signal.
No fanciful javascript, no fanciful css.
Sets region, start loader, watch the progress. 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.
You can get support for GaladrielMap and GaladrielCahe for a beer via PayPal or YandexMoney at [email protected]