Garmin ConnectIQ Data Field showing race checkpoints

I’ve recently built a ConnectIQ watch data field that shows information about checkpoints during an activity. It is built for the Fenix 3 for use on a single field screen of an activity and shows the name of the next checkpoint, distance to go, time until cut-off and average pace required to get there within that time.

Here’s a screen grab from the simulator:

This came about after experiencing that in the middle of the night, many hours into a race, it’s quite easy to get mixed up, especially if you’ve been lost previously so you need to keep a delta in your head of distance on watch versus distance on course to compare with the checkpoint distances you have written down.

The operation is very basic. It holds the lat/lon of every checkpoint, distance between them and their cut-off times. It has no idea of the course you are following, just the expected distance to the next checkpoint. It checks if you are within 200m of the checkpoint, and if you are then switches to the following one, resetting the accumulated distance to zero and comparing this against the distance to the next CP. Additionally it looks one checkpoint further in case you happen to miss one. Also, as it’s not aware of the actual course it can go wrong, e.g. if you get lost and add on a few extra miles then it’ll misreport the distance to the next CP until you get there, after which it’ll get back in sync.

The other major problem is that I currently have no way of setting up the checkpoints other than by modifying the code and loading the updated data field to the watch. I’m yet to find a way of getting this kind of data onto the watch in a user-friendly way. Of course this is fine for me as I’m the only user but clearly means that the data field is of no use to anyone else unless they are comfortable with Eclipse and the ConnectIQ SDK.

The source is available on GitHub if you wish to customise this field for your own race:

The code is based on a very useful article on MCBadger’s blog about the Haversine formula, which was what got me thinking about it in the first place.

Leave a Reply