Skip to content
GRENDELMAN.NET
  • Home
  • Photos
  • Projects & Pages
    • Projects
    • Files
    • Humor
    • Bookmarks
  • Login

Trackserver v4.0 released

Posted on: Thursday 22 February 2018 /
Categories: GPS and mapping, Nerd Stuff, Programming

After another year of slow development, Trackserver v4.0 was released today. If you don’t know what trackserver is, you can read about it on its dedicated page on this website.

I will update this post later with some more in-depth information and some nice screenshots. For now, I’m afraid I will have to keep it down to the changelog, which you can find below. Where v3.0 was a big update on the front-end, the changes in v4.0 are much more in the back-end. Most of the work has been done in the WordPress admin, a little work was done in client / protocol support for live tracking (geofencing!) and a few minor improvements on the presentation side. Only one new shortcode parameter this time, and no real changes to existing ones.

Version 4.0 is the first version to feature a tangible contribution from someone other than myself. Thanks must go to Dainius Kaupaitis, who contributed a Lithuanian translation.

Here are the changes, plain and simple:

Added

  • A track editor in the WP admin, based on Leaflet.Editable. It allows you to move and delete track points and split tracks.
  • Bulk action for viewing multiple tracks at once in the admin. Editing them also works.
  • Geofencing support, allowing you to hide or drop location updates within certain areas.
  • A proxy for external KML and GPX tracks, to work around CORS restrictions.
  • ‘maxage’ shortcode parameter to impose time-based limit on live tracks.
  • OwnTracks HTTP support, locations request handling only for now.
  • Bulk action for downloading tracks as GPX.
  • A {distance} tag for infobar template, for total track distance in meters.
  • Information about live tracking URLs and howto’s for mobile apps on the user’s Trackserver profile.
  • Information on how to use live tracking in OsmAnd.
  • Lithuanian translation, thanks to Dainius Kaupaitis.
  • PHP coding style checks and automated testing with TravisCI.

Changed

  • Make the ‘infobar’ shortcode attribute accept a string, to override the template set in the user profile.
  • Show a popup on the map with an internationalized message when there are no tracks to display.
  • When a (live) track that is currently shown on the map is no longer present in the server response, show a nice popup, suggesting a page reload.
  • Limit the TrackMe ‘gettriplist’ command to the 25 latest tracks, serve them in reverse order.
  • Increase WP-admin ‘View track’ modal window size to 1024×768.
  • Updated Polyline encoder from Eric McConville to v1.3.
  • Updated Leaflet to version 1.3.1.
  • Updated Leaflet-fullscreen to version 1.0.2.

Fixed

  • In JavaScript, store track information from the server more reliably.
  • Improve HTTP responses around authentication failure.
  • Recalculate the total track distance after merging multiple tracks.
  • Easier access to Leaflet map object from 3rd party JavaScript (issue #9).
  • Handle localized decimal numbers from SendLocation (issue #12).
  • Some minor JavaScript and PHP issues.
  • Many many many PHP coding style fixes.

Panoramas Chamrousse

Posted on: Sunday 18 February 2018 /
Categories: Photography

Last week, I made these two panoramas in Chamrousse, France. For high-resolution pictures, click here. May not work on mobile devices.

Chamrousse 1700, Arselle lift

 

La Croix, 2250m

 

(360×180 degrees panoramas shot with Google Camera on Android, no tripod, displayed with Pannellum)

Tags: pannellum

Dierenrijk

Posted on: Wednesday 22 November 2017 /
Categories: Photography

In juli 2017 bezocht ik met mijn zoontje Dierenrijk en maakte daar wat foto’s van de dieren. Vandaag deel ik ze met jou!

20170709102418_IMG_1904.JPG

2017-07-09 10:24:18
© 2017 Martijn Grendelman
20170709102547_IMG_1907.JPG

2017-07-09 10:25:47
© 2017 Martijn Grendelman
20170709102707_IMG_1909.JPG

2017-07-09 10:27:07
© 2017 Martijn Grendelman
20170709102719_IMG_1910.JPG

2017-07-09 10:27:19
© 2017 Martijn Grendelman
20170709102749_IMG_1911.JPG

2017-07-09 10:27:49
© 2017 Martijn Grendelman
20170709102829_IMG_1913.JPG

2017-07-09 10:28:29
© 2017 Martijn Grendelman
20170709102840_IMG_1914.JPG

2017-07-09 10:28:40
© 2017 Martijn Grendelman
20170709102942_IMG_1916.JPG

2017-07-09 10:29:42
© 2017 Martijn Grendelman
20170709103223_IMG_1917.JPG

2017-07-09 10:32:23
© 2017 Martijn Grendelman
20170709103246_IMG_1918.JPG

2017-07-09 10:32:46
© 2017 Martijn Grendelman
20170709103639_IMG_1920.JPG

2017-07-09 10:36:39
© 2017 Martijn Grendelman
20170709105802_IMG_1923.JPG

2017-07-09 10:58:02
© 2017 Martijn Grendelman
20170709110813_IMG_1924.JPG

2017-07-09 11:08:13
© 2017 Martijn Grendelman
20170709110845_IMG_1926.JPG

2017-07-09 11:08:45
© 2017 Martijn Grendelman
20170709110852_IMG_1927.JPG

2017-07-09 11:08:52
© 2017 Martijn Grendelman
20170709110910_IMG_1928.JPG

2017-07-09 11:09:10
© 2017 Martijn Grendelman
20170709113024_IMG_1932.JPG

2017-07-09 11:30:24
© 2017 Martijn Grendelman
20170709113240_IMG_1933.JPG

2017-07-09 11:32:40
© 2017 Martijn Grendelman
20170709114053_IMG_1935.JPG

2017-07-09 11:40:53
© 2017 Martijn Grendelman
20170709114226_IMG_1936.JPG

2017-07-09 11:42:26
© 2017 Martijn Grendelman
20170709114428_IMG_1937.JPG

2017-07-09 11:44:28
© 2017 Martijn Grendelman
20170709115016_IMG_1938.JPG

2017-07-09 11:50:16
© 2017 Martijn Grendelman
20170709115034_IMG_1939.JPG

2017-07-09 11:50:34
© 2017 Martijn Grendelman
20170709115729_IMG_1941.JPG

2017-07-09 11:57:29
© 2017 Martijn Grendelman
20170709115749_IMG_1942.JPG

2017-07-09 11:57:49
© 2017 Martijn Grendelman
20170709115801_IMG_1943.JPG

2017-07-09 11:58:01
© 2017 Martijn Grendelman
20170709120043_IMG_1944.JPG

2017-07-09 12:00:43
© 2017 Martijn Grendelman
20170709120153_IMG_1945.JPG

2017-07-09 12:01:53
© 2017 Martijn Grendelman
20170709120231_IMG_1948.JPG

2017-07-09 12:02:31
© 2017 Martijn Grendelman
20170709120238_IMG_1949.JPG

2017-07-09 12:02:38
© 2017 Martijn Grendelman
20170709120454_IMG_1951.JPG

2017-07-09 12:04:54
© 2017 Martijn Grendelman
20170709120508_IMG_1952.JPG

2017-07-09 12:05:08
© 2017 Martijn Grendelman
20170709120647_IMG_1954.JPG

2017-07-09 12:06:47
© 2017 Martijn Grendelman
20170709121327_IMG_1956.JPG

2017-07-09 12:13:27
© 2017 Martijn Grendelman
20170709121912_IMG_1959.JPG

2017-07-09 12:19:12
© 2017 Martijn Grendelman
20170709121923_IMG_1960.JPG

2017-07-09 12:19:23
© 2017 Martijn Grendelman
20170709121935_IMG_1961.JPG

2017-07-09 12:19:35
© 2017 Martijn Grendelman

Schwarzwald panoramas

Posted on: Tuesday 8 August 2017 /
Categories: Photography

For high-resolution pictures, click here. May not work on mobile devices.

Ravennaschlucht

 

St. Bartholomäuskerk in Ettenheim

 

(360×180 degrees panoramas shot with Google Camera on Android, no tripod, displayed with Pannellum)

Tags: pannellum

Trackserver v3.0 released

Posted on: Monday 27 February 2017 /
Categories: GPS and mapping, Nerd Stuff, Programming

Almost 14 months after the last big update, Trackserver v3.0 was released today. Since this is quite a big update, with lots of new features and improvements mainly on the presentation side, I thought I’d spend another blog post on it. If you don’t know what Trackserver is, you can read my initial blog post on it, and the update on v2.0 in December 2015. I will present some demos at the end of this post to give you a better idea.

First I will sum up some of the smaller changes. I will get to the big ones later.

  • Leaflet was updated from 0.7.7 to v1.0.3. This brings in all the great work that the creators of Leaflet have done for their 1.0 release in September 2016. For Trackserver, this mainly means performance improvements, not to mention the mere joy of having up-to-date dependencies 🙂
  • Our own hacked version of Leaflet-omnivore was synchronized with version 0.3.4.
  • The PNG images that served as markers to indicate the start and the end of a track have been replaced by L.CircleMarker objects. These objects were already used for ‘points’ style tracks that were added in v2.2 and now also for the normal markers.
  • The infobar that’s available on live maps gained some extra tags: {userid}, {userlogin} and {displayname}, only the last of which is somewhat interesting, I guess…
  • Bugfixes!

All the tracks

Perhaps the biggest change is in the communication between the server side of Trackserver and the JavaScript that is responsible for creating the maps and drawing the tracks. Trackserver has since long distinguished between 3 basic types of tracks:

  1. Static tracks from the Trackserver database, referred to by their ID
  2. Live tracks from the Trackserver database, referred to by the word ‘live’
  3. External tracks in GPX or KML format, referred to by their URL

It was possible to mix these types, but in very limited ways. On top of that, each track, regardless of the type, was downloaded separately, one HTTP request per track. For maps with a lot of tracks, that wasn’t the best design, performance-wise. Both these shortcomings led to a new scheme for getting tracks from Trackserver.

  • First of all, it is now possible to mix all types of tracks in unlimited numbers. Just specify track=a,b,c user=@,x,y,z gpx="URL1 URL2" kml=URL3 and you get them all in one map. The ‘@’ in the user attribute, by the way, is a shortcut for your own username, so user=@ becomes a replacement for track=live, and the former is preferred as of Trackserver 3.0.
  • All the tracks that need to be downloaded from Trackserver are downloaded in a single HTTP request.
  • You can show multiple users’ live tracks in a single map. The live update feature can only ‘follow’ one of them, but the red markers that mark the current locations can be clicked to start following that particular track. The infobar will display the info for the track that is currently followed. On page load, the map will follow the first user that is listed in the user attribute.
  • The new track loading mechanism makes use of JavaScript promises, which are somewhat of a novelty (Chrome >= 49, Firefox >= 50, Edge >= 14, Safari >= 10, all except Chrome released late 2016. No version of MSIE supports them). A polyfill for this is included and loaded automatically to support older browsers. There are multiple Promise polyfills to choose from on the web, but I went for this one, by Taylor Hakes.

Don’t forget: if you want to display GPX or KML files, you are bound to the limitations of CORS.

Shortcode attributes

The [tsmap] shortcode gained some attributes for more control over the maps and how the tracks are displayed:

    • As explained above, the user attibute is now used to specify one or more users’ live maps. You need the ‘trackserver_publish’ capability to publish other people’s tracks. This capability is granted to administrators and editors by default.
    • The live attribute can be used to force enable or disable live-updates. For example, this can be used to turn any track (even an externally hosted GPX file!) into a live track.
    • The zoom attribute can be used for some control on the initial zoom factor when the track is first drawn. This is most useful with maps that have live tracks, because Trackserver would normally zoom in on the latest position in the track, rendering other tracks invisible without zooming out first. For live maps, the argument to the zoom attribute is absolute: what you set is what you get. For maps that have no live tracks, the behaviour is a bit different. By default, Trackserver chooses the zoom factor that makes the best fit for all tracks combined. In this case, the zoom attribute serves as an upper limit, a maximum zoom level, so you can use it to zoom out (but not in) the initial view.

Tracks with style

Trackserver already had some options to style your tracks: markers, color, weight, opacity and (since v2.2) points. However, these style options were per-map, rather than per-track. You would have all markers, or no markers at all. You could have really fat, purple lines for your tracks, but you would have them for all tracks.

Not any longer.

All the styling options now support comma-separated lists of values. Multiple values in such a list will be applied to the specified tracks in order. For example:

[tsmap track=1,2 color=red,#8400ff weight=1 points=n,y]

will draw two tracks on the map: ID 1 in a really thin red line and ID 2 in a collection of purpleish points. I think you get the idea. If less values than tracks are given, the last value is applied to all remaining tracks, so track=1,2,3,4,5 color=red,blue will give you one red track (ID 1) and four blue ones (IDs 2-5).

There is one thing to keep in mind though, when you specify multiple values. While track order will be preserved within each track type, different track types are evaluated in a specific order, and styling values are applied in that order too. The order is:

  1. Static tracks (track=a,b,c)
  2. Live user tracks (user=x,y,z)
  3. GPX tracks (gpx=…)
  4. KML tracks (kml=…)

Example: [tsmap gpx=/url/for/file.gpx user=jim track=10,99 color=red,blue,green,yellow]

In this case, the GPX track will be yellow, Jim’s live track will be green and tracks 10 and 99 will be red and blue respectively.

GPX downloads

Trackserver has a new shortcode: [tslink], perhaps not the most intuitive name. This shortcode produces a link, with which the specified tracks can be downloaded as a GPX file. Other formats are on the horizon, please open a feature request issue on Github if you need a specific format. [tslink] is used almost the same as [tsmap], except that it lacks all the styling attributes.

[tslink track=12,87,525 user=patrick]

will give you a link to a dynamically generated GPX file, containing tracks with IDs 12, 87 and 525, as well as Patrick’s latest track. There is also a class attribute that can be used for styling the resulting <a> element, and a format attribute whose only valid value is ‘gpx’ at this time.

What do you think?

If you use Trackserver, I would LOVE to know about it!! If you have problems with it, please open a support request or an issue in Github. If you are happy with it, please leave a review. And if you absolutely love it, please consider a small donation to support development. It will be much appreciated!

Demo time

A bigger collection of demos can be found on this dedicated demo page, but here are just a couple of them to give you an idea:

[tsmap user=trackserver1]:


[tsmap track=564,575,656,657,658,625,627,628,629,622,623,624,619,618,620,621,647,630,646,648,653,655 color=black,blue,red,green,#8400ff weight=2 continuous=y opacity=1]


1 2 3 … 27 »

Today's motto

There is a crack, a crack in everything. That’s how the light gets in.

— L. Cohen

Categories

Recent Posts

  • Trackserver v4.0 released
  • Panoramas Chamrousse
  • Dierenrijk
  • Schwarzwald panoramas
  • Trackserver v3.0 released

Meta

  • Register
  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

Tags

aeroquad android arduino backports cat debian Digikam dirty denims garmin geotagging Google GPS gpsbabel gpx KDE kernel linux lowlands map maps multicopter Natty octocopter oruxmaps osmand pannellum phishing photography pi policykit quadcopter raspberry raspberry pi rpm software spam taggert tracking trackme twitter twitter fail whale Ubuntu viking vlc Zümo

Copyright GRENDELMAN.NET 2021 | Theme by Theme in Progress | Proudly powered by WordPress