All custom configuation is stored in window.owntracks.config
,
which is a regular JavaScript object - so you can use template strings, spread syntax,
comments and other JS features.
Some of the application state is synced to the URL's query parameters. If a parameter exists in the URL query, it takes precedence over the configured value - otherwise the configured value will be used and appended to the URL query.
Start with this:
window.owntracks = window.owntracks || {};
window.owntracks.config = {};
WARNING: if your configuration contains private data (most commonly your tile server access key), make sure to protect access to it properly, e.g. with basic authentication.
api
endDateTime
filters
ignorePingLocation
locale
map
onLocationChange
primaryColor
router
selectedDevice
selectedUser
showDistanceTravelled
startDateTime
verbose
Base URL for the recorder's HTTP and WebSocket API. Keep CORS in mind.
- Type:
String
- Default: current protocol and host
- Examples:
// API requests will be made to https://owntracks.example.com/api/0/... window.owntracks.config = { api: { baseUrl: "https://owntracks.example.com", }, };
// API requests will be made to https://example.com/owntracks/api/0/... window.owntracks.config = { api: { baseUrl: "https://example.com/owntracks/", }, };
Options for API requests (made with fetch()
). See fetch()
docs on MDN for details.
You can use this for example to send custom HTTP headers or to include cookies in the request.
- Type:
Object
- Default:
{}
- Example:
// Include credentials (e.g. cookies) window.owntracks.config = { api: { fetchOptions: { credentials: "include", }, }, };
Initial end date and time (browser timezone) for fetched data.
- Type:
Date
- Default: today, 23:59:59
- Example:
// Data will be fetched up to 1970-01-01 window.owntracks.config = { endDateTime: new Date(1970, 1, 1), };
Minimum accuracy in meters for location points to be rendered & included in the travelled distance.
This filter is disabled by default as accuracies can vary across devices an locations, but you're encouraged to set it as it can be a simple way to remove outliers and vastly improve the travelled distance calculation.
- Type:
Number
ornull
- Default:
null
- Example:
// Don't include location points with an accuracy exceeding 100 meters window.owntracks.config = { filters: { minAccuracy: 100, }, };
Remove the ping/ping
location from the fetched data. This is useful when using the
owntracks/recorder
Docker image which has it enabled for health checks by default.
- Type:
Boolean
- Default:
true
- Example:
// Don't ignore ping/ping location. Not sure why you'd do this :) window.owntracks.config = { ignorePingLocation: false, };
The locale to use for the user interface, this affects the language and date/time formats.
Available languages:
cs-CZ
(Standard Czech)da-DK
(Standard Danish)de-DE
(Standard German)en-GB
(British English)en-US
(American English)es-ES
(Castilian Spanish)fr-FR
(Standard French)sk-SK
(Standard Slovak)tr-TR
(Standard Turkish)
Using a locale with non-existent translations is possible and will affect date/time formats, but
use en-US
for translations.
- Type:
String
- Default:
"en-US"
Attribution for map tiles.
- Type:
String
(may contain HTML) - Default:
"© <a href="https://osm.org/copyright">OpenStreetMap</a> contributors"
- Example:
// Make sure to add proper attribution! window.owntracks.config = { map: { attribution: "Map tiles © MyTileServerProvider", }, };
Location accuracy indicator configuation. color
and fillColor
default to
primaryColor
if null
. See Vue2Leaflet l-circle
documentation
for all possible values.
- Type:
Object
- Default:
{ color: null, fillColor: null, fillOpacity: 0.2 }
Location point marker configuation. color
defaults to primaryColor
if null
. See
Vue2Leaflet l-circle-marker
documentation
for all possible values.
- Type:
Object
- Default:
{ color: null, fillColor: "#fff", fillOpacity: 1, radius: 4 }
Whether to show scale control or not.
- Type:
Boolean
- Default:
true
Whether to show an imperial scale (ft) or not.
- Type:
Boolean
- Default:
true
Maximum width of the scale control in pixels.
- Type:
Number
- Default:
200
Whether to show an metric scale (m) or not.
- Type:
Boolean
- Default:
true
Scale control position on the map. See Leaflet control position documentation for all possible values.
- Type:
String
- Default:
"bottomleft"
Whether to show zoom control or not.
- Type:
Boolean
- Default:
true
Zoom control position on the map. See Leaflet control position documentation for all possible values.
- Type:
String
- Default:
"topleft"
Heatmap blur radius.
- Type:
Number
- Default:
15
Mapping of values between 0 and 1 to different colors. Defaults to simpleheat
's default gradient
if null
.
- Type:
Object
ornull
- Default:
null
Heatmap max data value.
- Type:
Number
- Default:
20
Heatmap point radius.
- Type:
Number
- Default:
25
Initial visibility of the heatmap layer.
- Type:
Boolean
- Default:
false
Initial visibility of the last locations layer.
- Type:
Boolean
- Default:
true
Initial visibility of the line layer.
- Type:
Boolean
- Default:
true
Initial visibility of the POI layer.
- Type:
Boolean
- Default:
true
Initial visibility of the location points layer.
- Type:
Boolean
- Default:
false
This is being used to fetch tiles in different resolutions - set to the highest value the configured tileserver supports.
- Type:
Number
- Default:
19
Maximum distance (in meters) between points for them to be part of the the same line.
This avoids straight lines going across the map when there's a ceartain distance between
two points (which often indicates that they're not related). Set to null
to disable
splitting into separate lines.
- Type:
Number
ornull
- Default:
null
- Example:
// Don't connect points with a distance of more than 1km window.owntracks.config = { map: { maxPointDistance: 1000, }, };
Allow zooming closer than the tile server supports, which will result in (slightly)
blurry tiles on higher zoom levels. Set to the same value as map.maxNativeZoom
to disable.
- Type:
Number
- Default:
21
POI marker configuration. See Vue2Leaflet l-circle-marker
documentation
for all possible values.
- Type:
Object
- Default:
{ color: "red", fillColor: "red", fillOpacity: 0.2, radius: 12 }
Location point marker configuration. color
defaults to primaryColor
if null
. See
Vue2Leaflet l-polyline
documentation
for all possible values.
- Type:
Object
- Default:
{ color: null, fillColor: "transparent" }
Size of the tiles in pixels returned by the tile server. Can be used together with
map.zoomOffset
to configure bigger tile sizes.
- Type:
Number
- Default:
256
Tile server URL. For more information see Leaflet tile layer documentation and this Wikipedia article.
- Type:
String
- Default:
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
- Example:
// Use dark HDPI tiles from Mapbox window.owntracks.config = { map: { url: "https://api.mapbox.com/styles/v1/mapbox/dark-v10/tiles/{z}/{x}/{y}@2x?access_token=xxxxxxxxxxxxxxxx", }, };
Offset the zoom level to account for different tile sizes. For example tiles with a size of 512x512 need an offset of -1 and for 1024x1024 an offset of -2.
- Type:
Number
- Default:
0
Whether to re-fit the map's content into view or not when a location update is received.
This can be useful if you're showing live locations and don't want them to "leave" the map.
- Type:
Boolean
- Default:
false
Whether to reload the location history (of selected date range) or not when a location update is received.
- Type:
Boolean
- Default:
false
Primary color for the user interface (navigation bar and various map elements).
- Type:
String
(CSS<color>
) - Default:
"#3f51b5"
(primary color from the OwnTracks Android app) - Example:
// Set the UI's primary color to 'rebeccapurple' window.owntracks.config = { primaryColor: "rebeccapurple", };
Base path of the application deployment.
- Type:
String
- Default:
"/"
- Example:
// Frontend will be reachable at https://example.com/owntracks window.owntracks.config = { router: { basePath: "/owntracks", }, };
Initial selected device. All devices will be shown by default if null
. Will be ignored
if selectedUser
is null
.
Only data for the selected user/device will be fetched, so you can use this to limit the amount of data fetched after page load.
- Type:
String
ornull
- Default:
null
- Example:
// Select the device 'phone' from user 'foo' by default window.owntracks.config = { selectedUser: "foo", selectedDevice: "phone", };
Initial selected user. All users will be shown by default if null
.
Only data for the selected user/device will be fetched, so you can use this to limit the amount of data fetched after page load.
- Type:
String
ornull
- Default:
null
- Example:
// Select all devices from user 'foo' by default window.owntracks.config = { selectedUser: "foo", };
Whether to calculate and show the travelled distance of the last fetched data in the
header bar. maxPointDistance
is being takein into account, if a distance between two
subsequent points is greater than maxPointDistance
, it will not contibute to the
calculated travelled distance.
This also includes a calculation of elevation gain / loss.
- Type:
Boolean
- Default:
true
Initial start date and time (browser timezone) for fetched data.
- Type:
Date
- Default: one month ago, 00:00:00
- Example:
// Data will be fetched from the first day of the current month const startDateTime = new Date(); startDateTime.setHours(0, 0, 0, 0); startDateTime.setDate(1); window.owntracks.config = { startDateTime, };
Whether to enable verbose mode or not.
- Type:
Boolean
- Default:
false