\input texinfo @c -*- texinfo -*-
@c %**start of header
@setfilename foxtrotgps.info
@include version.texi
@settitle FoxtrotGPS @value{VERSION}
@iftex
@c Use CUD-compatible colors <http://jfly.iam.u-tokyo.ac.jp/color/#pallet>:
@def @urlcolor {0.80 0.40 0.0}
@def @linkcolor {0.80 0.40 0.0}
@end iftex
@c %**end of header

@copying
This manual is for FoxtrotGPS (version @value{VERSION}, @value{UPDATED}).

@ifinfo
@dircategory Mapping
@direntry
* foxtrotgps: (foxtrotgps). GTK+ mapping and GPS application
@end direntry
@end ifinfo

@ifhtml
@image{cc-by-sa_small}
@end ifhtml
@iftex
@image{cc-by-sa}
@end iftex
This document is licensed under a @url{https://creativecommons.org/licenses/by-sa/3.0/,, Creative Commons Attribution-@/ShareAlike 3.0 Unported License}.
@ifnothtml
To view a copy of this license, visit
@url{https://creativecommons.org/@/licenses/@/by-sa/3.0/}
or send a letter to:
@quotation
Creative Commons, 444 Castro Street, Suite 900,
Mountain View, California, 94041, USA
@end quotation
@end ifnothtml
@end copying

@titlepage
@title FoxtrotGPS
@subtitle GTK+ mapping and GPS application
@vskip 0pt plus 1filll
@center @image{foxtrotgps-logo, 3in}
@author The FoxtrotGPS team
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage

@contents

@ifnottex
@node Top
@top FoxtrotGPS

@insertcopying
@end ifnottex

@menu
* Overview::
@detailmenu
* Keyboard Shortcuts::
* Geotagging Photos::
* POI Icons::
* Command-line options::
@end detailmenu

* HowTo::
@detailmenu
* Cached Maps::
* Logging Tracks::
* Routing::
@end detailmenu

* Bugs::
* More Info::
@end menu

@node Overview
@chapter Overview
FoxtrotGPS is a GTK+ based mapping and GPS application. It's typically
used to show a moving map showing your position in real time. It's
useful as a navigation tool, and as a track logging (e.g. for OpenStreetMap)
and trip planning tool.

By default, FoxtrotGPS uses maps from OpenStreetMap, but may use a
range of other maps, some in experimental mode.

@ifnotinfo
@center @image{screenshots/main-window, 3in}
@end ifnotinfo

Clicking anywhere on the map pops up a menu of common operations,
allowing such things as:

@itemize @bullet
@item identifying the exact coordinates of that spot
@item distances to another spot
@item setting way points
@item downloading map data in bulk
@end itemize

Click and drag the map to pan. As you do so, FoxtrotGPS will download
the necessary map data and display it. That map data is cached
(usually in @file{~/Maps}) and reused when required.

There are also a number of keyboard shortcuts defined
(@pxref{Keyboard Shortcuts}).

FoxtrotGPS also has some features that require other software to be
installed (@pxref{Geotagging Photos}) and other features that
can be enhanced by other software (@pxref{POI Icons}).

@menu
* Connect a GPS::
* Keyboard Shortcuts::
* Geotagging Photos::
* POI Icons::
* Command-line options::
@end menu

@page

@node Connect a GPS
@section Connect a GPS
Many devices already have a GPS built in but if yours does not or you
want to have it in a better position to `see the sky' then an external
GPS is required. FoxtrotGPS uses @url{http://catb.org/gpsd/, gpsd} to
handle the variety of GPS hardware available, it's well documented and
readily available wherever FoxtrotGPS is likely to be used. Actual
GPS hardware options include:

@table @b
@item Handheld GPS
Typically used in bush walking, hiking etc. Connected via a serial or
USB cable, many newer laptops don't have serial ports anymore so a
USB-to-serial adapter may be needed. If you already have a hand-held, this
is a reasonable solution; you will need it on the car's dash, and might
need to stop it sliding around. Reception might not be great
especially in difficult conditions but you will probably be OK most of
the time.

@item GPS Mice
All mice have a pretty good sense of direction but some carefully bred
mice can be trained to convert that knowledge into the NMEA sentences
that GPSD expects.

A @url{https://en.wikipedia.org/wiki/@/GPS_navigation_device#GPS_modules,
GPS Mouse} might be a better solution in many cases. Reasonably cheap,
powered from the laptop they have the advantage of being suitable to
sit on the roof of your car making for better reception.

@end table

@node Keyboard Shortcuts
@section Keyboard Shortcuts
There are a number of keyboard shortcuts for common operations:

@table @asis
@item @key{Left}, @key{Right}, @key{Up}, @key{Down}
pan West, East, North, or South respectively

@item @kbd{I}, @kbd{O}
zoom in, out

@item @kbd{A}
toggle autocenter (follows GPS fix)

@item @kbd{1}-@kbd{8}
select which map to use

@item @kbd{M}
show/hide the info/control panel

@item @kbd{Ctrl+T}
load track

@item @kbd{R}
get route

@item @kbd{Ctrl+P}
geocode photos (@pxref{Geotagging Photos})

@item @key{F11}
toggle fullscreen
@end table

@node Geotagging Photos
@section Geotagging Photos
FoxtrotGPS can be used to geotag photographs that were taken while
logging a GPS track, and can show icons on the map indicating
where the photographs were taken; this is done by correlating
timestamps in JPEG EXIF data with timestamps in the GPS track,
and the following additional packages must also be installed
for use at run-time in order to make use of this feature:

@itemize
@item @url{https://github.com/freefoote/gpscorrelate, gpscorrelate}
@item @url{http://www.sentex.net/~mwandel/jhead/, jhead}
@end itemize

@node POI Icons
@section POI Icons
FoxtrotGPS can load distinct icons for different POIs from the directory
@file{~/.foxtrotgps/poi-icons/}; and, if you have the `@command{mkvisualid}' command
from libvisualid installed, FoxtrotGPS can even generate distinctive icons
automatically. For more on libvisualid, see
@url{https://disambiguate.me/libvisualid/, its website}.

@node Command-line options
@section Command-line options

@table @code
@item --fullscreen
Start in fullscreen mode

@item --version
Print the program version and exit
@end table

@node HowTo
@chapter HowTo
@menu
* Cached Maps::
* Logging Tracks::
* Routing::
@end menu

@node Cached Maps
@section Pre Load or Refresh the Cached Maps

FoxtrotGPS is quite smart when downloading maps. As you browse to an
area or change zoom level if the appropriate map tiles are in the
cache, they will be used. If not, FoxtrotGPS will attempt to download
them, if it fails (because, for example, you are off line), it does so
silently and tries to scale what ever tiles it does have. This
sometimes means you'll have blurry maps.

The solution is to download what you need before you go off line, just
browsing is one way but that gets you only the current zoom
level. Right clicking and selecting ``Map Download'' is often more
useful.

@ifnotinfo
@center @image{screenshots/map-download, 2in}
@end ifnotinfo

It's important to note that the download applies to the zoom level
immediately below the one you are currently on, so go up a level
before starting. It's sometimes useful to bring the window borders in a
little to restrict the total download (and save some time and
bandwidth), you don't have to download in full screen mode! Watch the
little progress message to the bottom left: when it drops back to just speed
and similar information, the download is done.

@node Logging Tracks
@section Log Tracks for OpenStreetMap
For most people, the most useful maps in FoxtrotGPS are from Open
Street Map (OSM). This is an open project to map the whole world and
most of its content is contributed by people recording information and
then contributing it to OSM. If you are using FoxtrotGPS in any sort
of mobile mode, you are probably ready to do your bit for this
worthwhile project. Please consider!

OSM needs all sorts of data added, we will look here at perhaps the
mainstream activity, recording a road and adding it to OSM's
database. This process has a couple of clear steps:

@enumerate
@item Record the track.
@item Download the area from OSM
@item Label the recorded track and add it to the downloaded area.
@item Upload the `changeset' to OSM.
@end enumerate

@ifnotinfo
@center @image{screenshots/tracking, 4in}
@end ifnotinfo

The first step, recording, is where FoxtrotGPS comes in. Releases of
FoxtrotGPS after 1.1.1 have a useful icon on the main screen (left
side) to start track logging; with older versions it's necessary to click
the top left ``Show Info'' icon to display the Control Panel, and possibly
scroll it left or right until you see the ``Enable Track Logging'' tick
box. In either case, start recording at the start of the road, stop at
the end. Remember your GPS will be several metres out so accuracy
greater than that is not essential.

FoxtrotGPS saves its logs in GPX format (with an extension introduced
by Garmin for some auxiliary data). These logs can be converted
to OSM and other formats using the widely-available
@url{https://www.gpsbabel.org/, gpsbabel utility}.@footnote{Prior
to version 1.1.0, FoxtrotGPS used its own log format; in case you
have any logs in this format, there are scripts included with FoxtrotGPS
that can convert those logs to GPX format, or to OSM format directly.}

After converting logs to OSM format, they will be importable into
tools like @url{https://josm.openstreetmap.de/, JOSM}.
But before you convert, make things a bit easier for yourself and
rename the road. Perhaps keep the date and use the road name and condition,
e.g.: @file{20121107_Jones_Street_track_gr3.gpx}.

The remaining stages are probably best documented on
@url{https://www.openstreetmap.org/, the OSM website}, but do remember to
mark your roads as ``source=survey'', the best source of OSM data.

@node Routing
@section Routing
FoxtrotGPS allows you to plan a route in a few different ways. First,
there is route finding, which finds a route from point A to point
B. This is done by using an online web service, which knows how to get
from A to B. Second, there is route planning, which allows you to plan
a route through a number of points. This route is then transferred to a
separate navigation system (e.g. in a car) to guide you through the
points.

@menu
* Route Finding::
* Route Planning::
@end menu

@node Route Finding
@subsection Route Finding
Route finding extends FoxtrotGPS to be a simple navigation system. It
takes two points and computes a route between the points.
@ifnotinfo
Here you see an example of such a route:

@center @image{screenshots/found-route, 4in}
@end ifnotinfo

To use that feature, you have to click anywhere on the map and select
the menu entry ``@clicksequence{route finding @click{} get route}''. It
will open a small dialog allowing you to
@ifnotinfo
select both points:

@center @image{screenshots/get-route, 3in}
@end ifnotinfo
@ifinfo
select both points.
@end ifinfo

Click on the ``Pick'' button right beside the text entries to select a
point on the map. Alternatively you can enter the GPS coordinates into
the text entries.

After clicking on ``OK'' you will see the resulting route on the map.

@quotation Note
You need an internet connection to access the web service, which
computes the route.
@end quotation

Currently there is no turn by turn navigation telling you to go left or right, if you are approaching a crossing. You have to use a GPS device to show your location on the map and look at your current position to know where to go next.

@node Route Planning
@subsection Route Planning

   Route planning is different to route finding because you will use
FoxtrotGPS to plan a route and transfer that route to another system
for navigation. This could be a navigation system installed in a car
or on a motor bike. You do not need an internet connection for this
kind of planning.

@quotation Note
If you download the appropriate tiles before your journey, then you
are able to plan or change your route on the trip without any internet
connection.
@end quotation

You use FoxtrotGPS to set a number of routepoints on the map. Together
they form the route to travel, but without the exact route to
follow. If you like to make a trip from point ``A'' over ``B'' and ``C'' to
``D'', then set these 4 routepoints.
@ifnotinfo
Here is an example:

@center @image{screenshots/route-planning, 4in}
@end ifnotinfo

Afterwards transfer these routepoints to your navigation system and ask
it to compute a route through all these routepoints. Then you get turn
by turn navigation from the navigation system, but you use FoxtrotGPS
for easy and comfortable planning.

Routepoints can be saved in GPX or TomTom file format@footnote{The
gpsbabel program can be used to convert to many more different file
formats.} for use by a navigation system. Here is the above example as
TomTom (ITN) file format:

@example
@group
915240|4872867|WP1|0
915438|4872786|WP2|0
914980|4872469|WP3|0
915309|4872313|WP4|0
915693|4872355|WP5|0
@end group
@end example

To plan a route click on the map for the first routepoint and select
``@clicksequence{route-planning @click{} add routepoint}''. Then click on
the next routepoint and select ``@clicksequence{route-planning @click{}
add routepoint}'' again. Repeat this for as many routepoints as you like.

At any time you can drag an existing routepoint to another location by
clicking on it and holding the button down. Move it to another place
and release the mouse button.

Clicking on an existing routepoint offers a menu to delete that routepoint
or insert another routepoint before it.

The route can be saved by clicking anywhere on the map and selecting
``@clicksequence{route-planning @click{} save route}''.

@quotation Note
@itemize @bullet
@item
Do not set your routepoints on crossings. Instead, set them on the road
between crossings. Why? If the GPS position of the crossing is not
very accurate, then your routepoint is beside the real crossing. This
will force your navigation system to make a turn to reach your
routepoint and then ask you to turn around.

@item
Humans normally choose cities as routepoints. E.g. travelling from Rome
to Berlin normally goes over Munich. If you set a routepoint to the
middle of Munich, then you force your route to go through the center
of Munich, which is normally crowded and best avoided. A better
strategy is to set the routepoints between the cities on a straight road
without any crossings where you definitively must come through. This
is also good for small villages, otherwise you will sometimes be
directed to your routepoint, which is often not the best way to go
through that village.

@item
Setting many routepoints forces the navigation system to stick closely
to your route. However, if there is an `uninteresting' part on the
route, then let the navigation system decide on its own by not setting
any routepoints.
@end itemize
@end quotation

@node Bugs
@appendix Bugs
@itemize @bullet
@item
FoxtrotGPS includes a URL for Google Satellite imagery in its
default list of map repositories for demonstration and testing purposes;
Google periodically change their URL schemes, which reduces these
to @emph{non-functional} demos of repository pattern syntax.
In some cases, repository URLs that break in this way cannot be fixed
automatically when FoxtrotGPS is upgraded, and must be fixed manually
by the user.
@end itemize

@node More Info
@appendix More Info
@menu
* Related Tools::
* Homepage::
* Author::
@end menu

@node Related Tools
@heading Related Tools

@itemize @bullet
@item convert2gpx(1)
@item convert2osm(1)
@end itemize

@node Homepage
@heading Homepage
More information about FoxtrotGPS can be found online at
@url{https://www.foxtrotgps.org/, its website}.

@node Author
@heading Author
FoxtrotGPS is a community developed fork from tangoGPS lead by
@email{rozzin@@geekspace.com, Joshua Judson Rosen}. tangoGPS was
written by @email{marcus.bauer@@gmail.com, Marcus Bauer}.

@bye
