You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _src/posts/mra-beeline.md
+18-18Lines changed: 18 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
1
---
2
-
title: How I used a MyRouteApp gpx with my Beeline moto II
2
+
title: How I used a MyRouteApp GPX with my Beeline moto II
3
3
date: 2025-05-28
4
4
---
5
5
6
6
<detailsname="TLDR">
7
7
<summary>In a hurry? Click here for a TLDR</summary>
8
-
<p>Testing out my new Beeline Moto II motorbike navigation, I ran into some compatibility issues with my routes created with the MyRouteApp. Upon inspecting both files I noticed a difference in the gpx file structure. Since a gpx is defined in XML I created small tool using JavaScript and XSLT to convert the MyRouteApp file to a Beeline compatible file. You can find the tool <ahref="/utils/MyRouteApp-to-beeline"target = "_self">here</a></p>
8
+
<p>While testing out my new Beeline Moto II motorbike navigation, I ran into some compatibility issues with my routes created with MyRouteApp. Namely, losing the turn-by-turn navigation while going off track. My short roadside frustration turned into a deep dive into GPX files and how to integrate the MyRouteApp format with my Beeline. Upon inspecting both files, I noticed a difference in the GPX file structure. Since a GPX is defined in XML, I decided to make a tool in vanilla JavaScript and XSL that will transform the file for me. And since there are other users with the same issue, I thought it would be nice to share my solution and make it available to anyone that can benefit from it. You can find the tool <ahref="/utils/MyRouteApp-to-beeline"target = "_self">here</a></p>
9
9
</details>
10
10
11
11
### Intro
@@ -20,7 +20,7 @@ I make it a sport to create a twisty route with nice elevations and new viewpoin
20
20
But, I wanted a more minimalistic device in my cockpit and I liked the idea of having my phone in my pocket instead of on my bike in case of an emergency.
21
21
So after some *"very deep research"* on YouTube and Google, I naturally found (or was influenced towards...) the Beeline Moto II.
22
22
23
-
Fast forward to unboxing and using the Beeline. I was __super hyped__. I exported my gpx file from MyRouteApp and hit the road. And all went surprisingly well.
23
+
Fast forward to unboxing and using the Beeline. I was __super hyped__. I exported my GPX file from MyRouteApp and hit the road. And all went surprisingly well.
24
24
25
25
26
26
### Problem
@@ -35,21 +35,21 @@ Fast forward to unboxing and using the Beeline. I was __super hyped__. I exporte
35
35
36
36
On my way home my inner problem solver was already working. *Did I export my file wrong? Did I forget to check a box on importing?*
37
37
38
-
Soon I learned that other users had similar issues combining MyRouteApp and Beeline, and that their forum topics hit a dead end. They noted that their route seemed to be converted to a track, and only had a start- and end-point. I also learned that it was impossible to import a Beeline gpx in the MyRouteApp. I tried a couple of things on the MyRouteApp end without success. Then on the Beeline support page I found an [article](https://support.beeline.co/en/articles/10570038-importing-and-exporting-gpx-routes) on importing and exporting a gpx with this note:
38
+
Soon I learned that other users had similar issues combining MyRouteApp and Beeline, and that their forum topics hit a dead end. They noted that their route seemed to be converted to a track, and only had a start- and end-point. I also learned that it was impossible to import a Beeline GPX in the MyRouteApp. I tried a couple of things on the MyRouteApp end without success. Then on the Beeline support page I found an [article](https://support.beeline.co/en/articles/10570038-importing-and-exporting-GPX-routes) on importing and exporting a GPX with this note:
39
39
40
40
<blockquote>Please note: you can only edit GPX-imported routes within the Beeline app if you are using the "Waypoints only" import mode. You can learn more about that mode in the article listed above.
41
41
<footer>
42
42
<cite>— Beeline support</cite>
43
43
</footer>
44
44
</blockquote>
45
45
46
-
__Waypoints only import mode? I didn't see that option at all!__ But surely my gpx had waypoints? During the creation of my route I added 30 or so...
46
+
__Waypoints only import mode? I didn't see that option at all!__ But surely my GPX had waypoints? During the creation of my route I added 30 or so...
47
47
48
48
You might be thinking: _Why aren't you using the Beeline app anyway?_ While the Beeline app comes with a route creation functionality, I find the feature set of MyRouteApp superior. I want to skip dirt roads, maximize twisty roads, maximize elevation, toggle different points of interest along the way like petrol stations etc.
49
49
50
-
Carrying on with my problem, I created a small test route in the Beeline app and exported a gpx file. Since the gpx file is actually a xml file, I shouldn't have any trouble figuring out what the differences are.
50
+
Carrying on with my problem, I created a small test route in the Beeline app and exported a GPX file. Since the GPX file is actually a XML file, I shouldn't have any trouble figuring out what the differences are.
51
51
52
-
This is a snippet of the Beeline gpx export without the xml declaration and namespaces:
52
+
This is a snippet of the Beeline GPX export without the XML declaration and namespaces:
53
53
```
54
54
.....
55
55
<!-- The route waypoints -->
@@ -67,7 +67,7 @@ This is a snippet of the Beeline gpx export without the xml declaration and name
67
67
.....
68
68
```
69
69
70
-
Alright, now let's have a look at the MyRouteApp gpx that I'm importing:
70
+
Alright, now let's have a look at the MyRouteApp GPX that I'm importing:
71
71
72
72
```
73
73
.....
@@ -93,10 +93,10 @@ Alright, now let's have a look at the MyRouteApp gpx that I'm importing:
93
93
```
94
94
95
95
A few things are going on here:
96
-
- The Beeline gpx has waypoint `<wpt>` nodes while the MyRouteApp has not.
97
-
- The MyRouteApp gpx provides more information in the route segment `<rte>`.
98
-
- The MyRouteApp gpx has a track segment `<trk>`.
99
-
- The Beeline gpx`<rte>` segment suspiciously looks a lot like the MyRouteApp `<trkseg>` because the coordinates are very close to each-other.
96
+
- The Beeline GPX has waypoint `<wpt>` nodes while the MyRouteApp has not.
97
+
- The MyRouteApp GPX provides more information in the route segment `<rte>`.
98
+
- The MyRouteApp GPX has a track segment `<trk>`.
99
+
- The Beeline GPX`<rte>` segment suspiciously looks a lot like the MyRouteApp `<trkseg>` because the coordinates are very close to each-other.
100
100
101
101
Both seem to have a different interpretation of the [GPX 1.1 Schema Documentation](http://www.topografix.com/GPX/1/1/#type_wptType). Looking at the definitions I note 3 things:
102
102
-`wptType` wpt represents a waypoint, point of interest, or named feature on a map.
@@ -107,13 +107,13 @@ Given the definitions and examples above. I find that the Beeline app should be
107
107
108
108
As a good user, I obviously raised a ticket with Beeline, providing as much details as possible. I was then gracefully thanked for my suggestions and informed that my feedback was forwarded up the chain. Great! But knowing that technical feedback like this often gets dismissed as subjective interpretation rather than standards compliance, I knew I had to work on a solution in the meantime.
109
109
### Solution
110
-
Knowing the differences between the formats, the workaround was relatively straightforward: I _only_ had to transform the MyRouteApp gpx to a Beeline gpx. To make my MyRouteApp gpx compatible with the Beeline app I decided to:
110
+
Knowing the differences between the formats, the workaround was relatively straightforward: I _only_ had to transform the MyRouteApp GPX to a Beeline GPX. To make my MyRouteApp GPX compatible with the Beeline app I decided to:
111
111
- transform the MyRouteApp `<rtept>` nodes to `<wpt>` nodes.
112
112
- transform the MyRouteApp `<trkseg>` to a `<rte>`.
113
113
114
114
My first test file was hacked together using some good old copy, paste search and replaces.
115
115
116
-
__Et voila!__ Upon importing my newly created gpx I was greeted by another option: _"Points de cheminement uniquem..."_.
116
+
__Et voila!__ Upon importing my newly created GPX I was greeted by another option: _"Points de cheminement uniquem..."_.
117
117
Which translates to the "Waypoints only import mode" mentioned by Beeline above.
118
118
<img
119
119
src="/assets/images/mra-beeline-screenshot.jpeg"
@@ -134,13 +134,13 @@ This methods imports the waypoints added in the MyRouteApp but _will re-calculat
134
134
/>
135
135
136
136
### Automated solution
137
-
Obviously I wasn't planning on manually editing gpx files every time I wanted to use one of my routes.
137
+
Obviously I wasn't planning on manually editing GPX files every time I wanted to use one of my routes.
138
138
So I decided to make a tool that will transform the file for me. And since there are other users with the same issue, I thought it would be nice to share my solution and make it available to anyone that can benefit from it. The solution is simple:
139
-
- A small webform takes a gpx file as input and let's the user download the transformed result.
140
-
- The transformation is done by a script written in JavaScript that executes a XSLT (eXtensible Stylesheet Language Transformations). For those unfamiliar but curious: Check out this [Introduction](https://www.w3schools.com/xml/xsl_intro.asp) on XSLT.
139
+
- A small webform takes a GPX file as input and let's the user download the transformed result.
140
+
- The transformation is done by a script written in JavaScript that executes a XSLT (eXtensible Stylesheet Language Transformations). For those unfamiliar but curious: Check out this [Introduction](https://www.w3schools.com/XML/xsl_intro.asp) on XSLT.
141
141
- This all runs within the users browser. Which means I only have to host the static files and don't need worry about running a service.
142
142
143
143
You can find the result [here](https://data-integration.dev/utils/MyRouteApp-to-beeline)
144
144
145
145
### Thats it!
146
-
My short road side frustration turned into a deep dive into gpx files and how to integrate the MyRouteApp format with my Beeline. While I hope that Beeline will eventually improve their compatibility, in the meantime my tool will provide a practical solution. If you're facing similar issues, give the tool a try and let me know how it works for your routes. *Happy riding!*
146
+
My short road side frustration turned into a deep dive into GPX files and how to integrate the MyRouteApp format with my Beeline. While I hope that Beeline will eventually improve their compatibility, in the meantime my tool will provide a practical solution. If you're facing similar issues, give the tool a try and let me know how it works for your routes. *Happy riding!*
0 commit comments