OpenStreetMap User's Diaries
How I used AI to map the Dublin Port Tunnel
Introduction
Sometimes, we set out to solve one problem and arrive at a bunch of even greater discoveries along the way. This story starts with my curiosity about whether you can get a “GPS” track log underground - like in a tunnel or underground car park. GPS is our go-to tool for mapping most things that we can’t see on aerial imagery, but what can we do in places where GPS signals cannot be
Introduction
Sometimes, we set out to solve one problem and arrive at a bunch of even greater discoveries along the way. This story starts with my curiosity about whether you can get a “GPS” track log underground - like in a tunnel or underground car park. GPS is our go-to tool for mapping most things that we can’t see on aerial imagery, but what can we do in places where GPS signals cannot be received? In the course of my investigation, I uncovered a few even more interesting insights:
- Even if you can code, it’s impressive what an off-the-cuff LLM prompt can build for you
- The openstreetmap.org site UI would work very differently had it been built in the smartphone era
- Capturing rich mapping data from stock vehicles with no extra hardware is feasible
- With relatively little effort, we can improve the effectiveness of GPS track log capture for OSM mapping
Oh, and I did manage to get that underground track log, but more on that anon…
Motivation: the desire to improve tunnel mapping
Mapping underground features in OSM can be challenging. Sometimes we are lucky - a tunnel or covered roadway may be a straight line between two known points on the surface. Perhaps the tunnel was built using cut-and-cover and we were able to establish the geometry during construction. But sometimes, we just have an underground linear feature with bends in it. We know where each end dives underground, but GPS signals cannot be received underground, so our traditional mapping approaches won’t help us.
Road tunnels, of course, are designed for vehicles, and many modern vehicles have moving map displays as part of a navigation system. When in a tunnel, many even show a plausible vehicle position that updates. Without GPS. How do they do that? They could simply infer movement along the mapped path of the road based on distance travelled. But they may also use more sophisticated dead-reckoning inferring direction from sensors. I have such a car. I wanted to find out.
The Equipment
My car is a Tesla Model 3. Even by modern standards, its cockpit is very high-tech, with many parts of the car’s controls managed in software via a large touch screen. But there is no way to run my own software to access and record vehicle position. Well… not directly.
What the car does have is a web browser. And web pages can request location information via JavaScript. If I crafted a suitable web page, would it be able to access full-precision position data equivalent to what the car’s own navigation system uses? Just as importantly, on a platform with no user-accessible storage system, could I somehow get that position data to a place where I could use it for mapping purposes? Before committing to any actual work, I considered various options, many of them as unhinged as a Cybertruck:
- Display co-ordinates on screen, video-record the output and use OCR to save it
- Try using copy and paste to grab the displayed co-ordinates and use web mail to send it to myself
- Deploy a lightweight server component to accept the uploaded data (spoiler: this was the key to success)
The Proof of Concept
I had to convince myself that plausible location information would be delivered by the car, and not just low-precision generalised data. I knew that the browser could access some kind of location data, since I’d used web sites that had maps to locate charging stations. I also knew that the car’s own navigation tech seemed to be able to estimate underground position. To avoid pointless effort, I needed confidence that the same level of precision would reach the browser. As an OSMer, my test tool of choice was clear - www.openstreetmap.org. Our own slippy map has a moving map mode that I had already used many times on a smartphone. I could simply drive around with the map active in the car’s browser. If the location marker tracked my movements well, precision was probably high. If it continued to track them in, say, an underground car park, then we had a path to success.
There’s not much to say about that road test - it validated the premise. The map marker accurately tracked my location and continued to do so underground. I would later have to exclude the possibility that the underground position might be inferred with assistance from the car’s own onboard maps, but this was enough validation to invest effort to find a way to record a track log. But the role of the OSM slippy map in this test foreshadows some later events in this story.
How do I get a web page that can do what I need? Well, I’m a clever chap who made his career building stuff using web technology, so I did what any self-respecting industry veteran in 2025 would do: I took a chance on an LLM being able to build it for me. I fed the following prompt into ChatGPT:
Can you provide code to implement capture and storage of a GPS track log, in GPX format, from a web browser running on a GPS-equipped computing device, such as a mobile phone or modern motor car. Ideally, during capture, the user's location would be displayed on an interactive map based on OpenStreetMap data and the track log already collected should be displayed superimposed on that map.
(The more observant among you will spot that I missed a question mark in the main request. The shame…)
This generated a pretty short single HTML file. I loaded it into a browser on my laptop for initial validation. It displayed a mostly blank page and threw two console errors. So much for vibe coding? In fact, the truth was a lot more positive. The errors arose because of two referenced Leaflet files, one JavaScript, one CSS, for which incorrect checksums had been hallucinated. I removed the checks (I said I was a professional), and… It worked. Immediately.

I had a full page OSM map. I had a button to start logging. Pressing it centred the map on my home location and displayed a marker. Remember, this was on a laptop, so the marker couldn’t actually move anywhere - the constant position was whichever one the browser was able to infer from my IP address alone. But: the “Download GPX” button that the LLM had thoughtfully provided did push a GPX file into my Downloads folder and JOSM could display the single point it contained.
I hadn’t written a single line of code, other than to remove the checksum tests. On reflection, I could probably have just asked ChatGPT to remove those for me.
I was impressed. I needed to road-test it. I also needed to tell somebody how clever this all was. The person I told was Stereo, and he participated in a bunch of the (slight) refinement that was to follow, in particular, through hosting the prototype on his web space so that the car (remember, no access to local storage) could actually open the page and record stuff.

Road Test
Once the vibe-coded HTML file was web-accessible, I hopped in the car, entered the URL of the tool, pressed “Record” and drove. Not far, and I didn’t seek out any underground challenges at this point either. Remember, we hadn’t yet rigged up anything to get the recorded data out of the browser. This test was all about proving that the car would accumulate a track log and be able to obtain real, useful co-ordinates from real GPS satellites. But everything checked out:
- The marker moved
- A good clean track log was displayed (in blue, good choice!)
- Actually, a SUPERBLY clean track log. Driving up one side of the road and then back down, you could tell which side of the road you were on. Seems like cars have good GPS chipsets and antennae.
- The “Download” button worked, sort of: I got a raw display of the GPX content. I photographed some of it and we were able to verify its correctness.



We didn’t do a lot else to this - Stereo rigged up a server component to allow for upload of the data. He also added a very few ergonomic tweaks to the display. I road-tested it a bunch more in my area to make sure that the resulting GPX files were good (they were). It was time to go underground! I took one more quick trip to a local supermarket with underground parking to make sure that all of this still worked underground and everything looked good. We were ready for the big test.

Dublin Port Tunnel
The Dublin Port Tunnel connects the M50 and M1 motorways to Dublin Port. Because the port is right in the city centre, essentially all HGV traffic entering or leaving the port used to clog up key city centre roads. The building of the tunnel allowed for a comprehensive truck ban in the central area. There are two parallel bores, each 4.5km long and carrying two lanes of traffic. Each bore contains two gentle curves, describing a slight S-shape. On either end, a section was built cut-and-cover, and these sections were therefore mapped accurately from aerial imagery during construction. The precise nature of the curves in the bored sections was mapped as best we could, inferred mainly from crude knowledge of the surface locations of ventilation shafts.
So if you could get a track log underground, that would be better, wouldn’t it?
I took the car out one evening to find out. There is a toll on the tunnel, so repetitive tests could get pricey. Evening rates are lower. I fired up the browser and logged the entire journey along the M50 from Blanchardstown to make sure the GPS was warmed up. I drove through the southbound bore, surfaced, uploaded my work in case of a browser crash (put a pin in that…) and then logged the northbound bore.

I got a track log for the entire journey. While driving through the southbound bore, I could see my recorded position diverge noticeably from what was on the map, more or less as I reached the second curve. In theory, that might have been correct, but, as I entered the cut-and-cover section, it was clear that this was not the case. Once out of the tunnel, the position jumped back to reality. The northbound log was much more plausible, with only a minimal adjustment on emergence from the tunnel. What should we conclude?
- Underground mapping certainly works, especially over distances that are much shorter than 4.5km
- The positions reported by this particular car are not assisted (and therefore not contaminated) by on-board mapping data
- The dead-reckoning used by the car degrades with distance from the last known GPS position
- Single track logs are probably not trustworthy over this distance
- Multiple track logs may allow for the emergence of a plausible averaged path
- Because this instance involves twin bores believed to maintain constant distance from each other, logging in both directions may allow the earlier, more accurate logs from one direction to be used to correct the less accurate later parts of the logs from the other direction.
What this means for vehicle mapping
So far, this web-based tool has been tested in my Tesla and in a Volvo XC90. Testing in a variety of other vehicles would be necessary in order to draw comprehensive conclusions, but so far I can say:
- At least some vehicles obtain useful location information, even underground
- At least some vehicles expose that location information to their system browser
- At least some vehicles can use web-based logging tools to yield GPX track logs
- At least some vehicles (the Volvo) cannot use web-based logging tools as they block browser usage during driving (there are some indications that this may be an Android Automotive constraint)
- In-vehicle browsers may crash or context shifts in the car-UI may switch away from them, say, when shifting into reverse. On resuming the browser, logged data may not be retained. Experimentation is therefore needed around browser Local Storage or perhaps periodic pushing to a server.
The prototype is great, and, when I map a new road, or an underground car park, or do any other kind of vehicle-based mapping, I use it for real, usually as my only logger. I’d love to share it with other mappers, but the data upload mechanism is crude and won’t scale to that. The tool would need to be refined to keep things manageable, especially in terms of keeping track (heh!) of which track logs belong to which user and maintaining privacy when desired. But that brings me neatly to some important reflections on the right way to implement a tool like this. Because it turns out that most of what we need is already present in a very familiar place.
Reflections on OpenStreetMap.org
I noted above that my use of the OSM slippy map as a first validation was a foreshadowing event. In my validation run, I drove around with my live position displayed on the OSM map but wasn’t able to record a track log because openstreetmap.org doesn’t do that. Then I had an LLM build me a standalone tool centred on an OSM map that just happens to look almost exactly the same and used that to record the track log I wanted. Finally, if I wanted to add my track log to my repository of OSM track logs, I could go back to openstreetmap.org and upload that file.
If that comes across to you as a cumbersome workflow, then you’ve reached the same conclusion I did. Almost all of what I needed to solve my problem is functionality already present on OpenStreetMap.org. Much of it represents core mapper workflows present since the earliest days of the project. The only real difference is context – the context that, nowadays, lots of end-user devices have both web browsers and GPS – and a few missing links that result accidentally from that context.
Feature comparison
Feature
osm.org
My Prototype
Full-page slippy map display
y
y
Live marker for current position
y
y
Breadcrumb display of recent track log
n
y
Recording of user track log
Use external tool
y
Adding track log to OSM GPX Database
Accepts file from ext tool
Creates file, submit manually
Seen through this lens, my prototype ceases to seem like a novel proposition and looks more like a missing link in the toolset mappers have been using for as long as we can remember. We have the tools to upload a GPS track log, but only from a file. And we have the ability to display our live position on the slippy map. What we lack is the means to record where we have been while we display that live position. Even though it is increasingly likely that any track log captured by a mapper was recorded on a smartphone on which the mapper had probably also been using the slippy map with live position displayed.
A stunning functionality gap? Yes, but only if viewed with fresh eyes in 2026. I’ve been an OSM mapper for about 20 years, so I’m used to the idea that these apparently complementary features do not connect. The tools we use to manage track logs were built in a pre-smartphone era, when the devices that had proper web browsers at first didn’t have GPS at all and then gradually started to have really crappy GPS that you wouldn’t want to use for mapping. Add to that the fact that most stuff I need to map these days can readily be traced from aerial imagery, so whenever I do need to use GPS data, I mostly don’t bother to upload the track log to OSM anyway. In some ways, the track log repository isn’t the core feature it used to be 20 years ago. But if it’s no longer so relevant, this is in part because its upload UI still expects to be processing data as a file that came from a standalone device rather than as a sequence of points that were captured on the exact same device being used for the upload.
We should fix that. Partly for my own selfish reasons - I’d love a tidier way to do my vehicle mapping and I’d like to let others do the same - but mostly because it would give us a much saner workflow story to explain to new mappers. Let me caricature how you might explain a GPX-based mapping scenario to a new OSMer who grew up in a smartphone-centric world:
- You are out and about and you wonder whether the map is up-to-date at your location
- You open up openstreetmap.org in your phone’s browser and have it display your live location
- As you walk around, you realise that the footpath you’ve been on isn’t mapped. You should fix that.
- Switch away from your browser and launch a third-party tool that can record track logs. Start recording.
- Walk back along that bit of footpath - we weren’t paying attention the first time you walked along it.
- Depending on the software you’re using, it may or may not show you an OSM base map or any map at all. If it shows an OSM map, it may be badly out of date.
- Walked all the way along? Stop recording and work out how to get a GPX file out of the tool you just used. Hopefully your app can output one. If you’re unlucky, you might need to export it to your PC later. Maybe you even need to fish it out of the cloud somewhere.
- Go back to openstreetmap.org and use the GPX upload feature - you’ll need to point it at that file, wherever the app put it on your phone’s file system.
It’s not very nice, is it? Wouldn’t this be better?
- You are out and about and you wonder whether the map is up-to-date at your location
- You open up openstreetmap.org in your phone’s browser and have it display your live location
- As you walk around, you realise that the footpath you’ve been on isn’t mapped. It’s easy to spot, because the track log overlaid on the map doesn’t coincide with any existing map feature. You should fix that.
- Keep walking until you have covered all of what you wanted to capture. Hit the “Save” button.
- You will be able to name the trace (a suggested default will be offered based on your location). Choose what visibility settings should apply to the trace and press “Upload”.
I like this! What do we need to build?
If you made it this far, you’ve probably understood that I’m advocating that we extend the openstreetmap.org feature set to accommodate direct device-to-OSM capture of GPS track logs. Although the use case that brought me to this conclusion was vehicle-based mapping, we should expect that smartphones would be the main devices capturing data in this way.
As for the changes themselves, they are pleasingly contained to the point of likely being invisible to anybody not setting out to use them:
The key additions to current functionality are:
- Addition of an overlaid display of track log in moving-map mode
- Recorded points must be buffered at least in the browser (see below) prior to upload
- Decision: should this display be contingent on entering a “record” mode? If so, a button to activate this would be required, but this button would likely not appear until actually in moving-map mode.
- Addition of a “Save” or “Upload” option available whenever the track log is active
- Actual uploading can reuse the existing GPX upload system
- Decision: should it be possible for the user to name the track and configure visibility before track completion? This could be practical in cases where we provide a server component to progressively upload in order to work around browser brittleness (see below).
Technical challenges
- Recording of track log: no system impact to openstreetmap.org, if data kept by browser until time for upload
- Upload of track log: same process as exists already
- Risk of data loss during recording: brittleness due to browsers crashing or forgetting captured points due to context-switch
- A real issue for cars
- Modern smartphones are probably more robust, but background logging is still unlikely to occur
- Possible solutions:
- Do nothing: position this as an experimental feature, caveat mappor. It would still be useful for many purposes
- Periodically flush recorded data to browser local storage (subject to the whims of individual browser implementations)
- Periodically flush recorded data to server-based buffer (system load impact, so probably only reasonable after user has entered an actual “recording” mode)
Sometimes, we set out to solve one problem and arrive at a bunch of even greater discoveries along the way. This story starts with my curiosity about whether you can get a “GPS” track log underground - like in a tunnel or underground car park. GPS is our go-to tool for mapping most things that we can’t see on aerial imagery, but what can we do in places where GPS signals cannot be
Introduction
Sometimes, we set out to solve one problem and arrive at a bunch of even greater discoveries along the way. This story starts with my curiosity about whether you can get a “GPS” track log underground - like in a tunnel or underground car park. GPS is our go-to tool for mapping most things that we can’t see on aerial imagery, but what can we do in places where GPS signals cannot be received? In the course of my investigation, I uncovered a few even more interesting insights:
- Even if you can code, it’s impressive what an off-the-cuff LLM prompt can build for you
- The openstreetmap.org site UI would work very differently had it been built in the smartphone era
- Capturing rich mapping data from stock vehicles with no extra hardware is feasible
- With relatively little effort, we can improve the effectiveness of GPS track log capture for OSM mapping
Oh, and I did manage to get that underground track log, but more on that anon…
Motivation: the desire to improve tunnel mapping
Mapping underground features in OSM can be challenging. Sometimes we are lucky - a tunnel or covered roadway may be a straight line between two known points on the surface. Perhaps the tunnel was built using cut-and-cover and we were able to establish the geometry during construction. But sometimes, we just have an underground linear feature with bends in it. We know where each end dives underground, but GPS signals cannot be received underground, so our traditional mapping approaches won’t help us.
Road tunnels, of course, are designed for vehicles, and many modern vehicles have moving map displays as part of a navigation system. When in a tunnel, many even show a plausible vehicle position that updates. Without GPS. How do they do that? They could simply infer movement along the mapped path of the road based on distance travelled. But they may also use more sophisticated dead-reckoning inferring direction from sensors. I have such a car. I wanted to find out.
The Equipment
My car is a Tesla Model 3. Even by modern standards, its cockpit is very high-tech, with many parts of the car’s controls managed in software via a large touch screen. But there is no way to run my own software to access and record vehicle position. Well… not directly.
What the car does have is a web browser. And web pages can request location information via JavaScript. If I crafted a suitable web page, would it be able to access full-precision position data equivalent to what the car’s own navigation system uses? Just as importantly, on a platform with no user-accessible storage system, could I somehow get that position data to a place where I could use it for mapping purposes? Before committing to any actual work, I considered various options, many of them as unhinged as a Cybertruck:
- Display co-ordinates on screen, video-record the output and use OCR to save it
- Try using copy and paste to grab the displayed co-ordinates and use web mail to send it to myself
- Deploy a lightweight server component to accept the uploaded data (spoiler: this was the key to success) The Proof of Concept
I had to convince myself that plausible location information would be delivered by the car, and not just low-precision generalised data. I knew that the browser could access some kind of location data, since I’d used web sites that had maps to locate charging stations. I also knew that the car’s own navigation tech seemed to be able to estimate underground position. To avoid pointless effort, I needed confidence that the same level of precision would reach the browser. As an OSMer, my test tool of choice was clear - www.openstreetmap.org. Our own slippy map has a moving map mode that I had already used many times on a smartphone. I could simply drive around with the map active in the car’s browser. If the location marker tracked my movements well, precision was probably high. If it continued to track them in, say, an underground car park, then we had a path to success.
There’s not much to say about that road test - it validated the premise. The map marker accurately tracked my location and continued to do so underground. I would later have to exclude the possibility that the underground position might be inferred with assistance from the car’s own onboard maps, but this was enough validation to invest effort to find a way to record a track log. But the role of the OSM slippy map in this test foreshadows some later events in this story.
How do I get a web page that can do what I need? Well, I’m a clever chap who made his career building stuff using web technology, so I did what any self-respecting industry veteran in 2025 would do: I took a chance on an LLM being able to build it for me. I fed the following prompt into ChatGPT:
Can you provide code to implement capture and storage of a GPS track log, in GPX format, from a web browser running on a GPS-equipped computing device, such as a mobile phone or modern motor car. Ideally, during capture, the user's location would be displayed on an interactive map based on OpenStreetMap data and the track log already collected should be displayed superimposed on that map.
(The more observant among you will spot that I missed a question mark in the main request. The shame…)
This generated a pretty short single HTML file. I loaded it into a browser on my laptop for initial validation. It displayed a mostly blank page and threw two console errors. So much for vibe coding? In fact, the truth was a lot more positive. The errors arose because of two referenced Leaflet files, one JavaScript, one CSS, for which incorrect checksums had been hallucinated. I removed the checks (I said I was a professional), and… It worked. Immediately.

I had a full page OSM map. I had a button to start logging. Pressing it centred the map on my home location and displayed a marker. Remember, this was on a laptop, so the marker couldn’t actually move anywhere - the constant position was whichever one the browser was able to infer from my IP address alone. But: the “Download GPX” button that the LLM had thoughtfully provided did push a GPX file into my Downloads folder and JOSM could display the single point it contained.
I hadn’t written a single line of code, other than to remove the checksum tests. On reflection, I could probably have just asked ChatGPT to remove those for me.
I was impressed. I needed to road-test it. I also needed to tell somebody how clever this all was. The person I told was Stereo, and he participated in a bunch of the (slight) refinement that was to follow, in particular, through hosting the prototype on his web space so that the car (remember, no access to local storage) could actually open the page and record stuff.

Road Test
Once the vibe-coded HTML file was web-accessible, I hopped in the car, entered the URL of the tool, pressed “Record” and drove. Not far, and I didn’t seek out any underground challenges at this point either. Remember, we hadn’t yet rigged up anything to get the recorded data out of the browser. This test was all about proving that the car would accumulate a track log and be able to obtain real, useful co-ordinates from real GPS satellites. But everything checked out:
- The marker moved
- A good clean track log was displayed (in blue, good choice!)
- Actually, a SUPERBLY clean track log. Driving up one side of the road and then back down, you could tell which side of the road you were on. Seems like cars have good GPS chipsets and antennae.
- The “Download” button worked, sort of: I got a raw display of the GPX content. I photographed some of it and we were able to verify its correctness.



We didn’t do a lot else to this - Stereo rigged up a server component to allow for upload of the data. He also added a very few ergonomic tweaks to the display. I road-tested it a bunch more in my area to make sure that the resulting GPX files were good (they were). It was time to go underground! I took one more quick trip to a local supermarket with underground parking to make sure that all of this still worked underground and everything looked good. We were ready for the big test.

Dublin Port Tunnel
The Dublin Port Tunnel connects the M50 and M1 motorways to Dublin Port. Because the port is right in the city centre, essentially all HGV traffic entering or leaving the port used to clog up key city centre roads. The building of the tunnel allowed for a comprehensive truck ban in the central area. There are two parallel bores, each 4.5km long and carrying two lanes of traffic. Each bore contains two gentle curves, describing a slight S-shape. On either end, a section was built cut-and-cover, and these sections were therefore mapped accurately from aerial imagery during construction. The precise nature of the curves in the bored sections was mapped as best we could, inferred mainly from crude knowledge of the surface locations of ventilation shafts.
So if you could get a track log underground, that would be better, wouldn’t it?
I took the car out one evening to find out. There is a toll on the tunnel, so repetitive tests could get pricey. Evening rates are lower. I fired up the browser and logged the entire journey along the M50 from Blanchardstown to make sure the GPS was warmed up. I drove through the southbound bore, surfaced, uploaded my work in case of a browser crash (put a pin in that…) and then logged the northbound bore.

I got a track log for the entire journey. While driving through the southbound bore, I could see my recorded position diverge noticeably from what was on the map, more or less as I reached the second curve. In theory, that might have been correct, but, as I entered the cut-and-cover section, it was clear that this was not the case. Once out of the tunnel, the position jumped back to reality. The northbound log was much more plausible, with only a minimal adjustment on emergence from the tunnel. What should we conclude?
- Underground mapping certainly works, especially over distances that are much shorter than 4.5km
- The positions reported by this particular car are not assisted (and therefore not contaminated) by on-board mapping data
- The dead-reckoning used by the car degrades with distance from the last known GPS position
- Single track logs are probably not trustworthy over this distance
- Multiple track logs may allow for the emergence of a plausible averaged path
- Because this instance involves twin bores believed to maintain constant distance from each other, logging in both directions may allow the earlier, more accurate logs from one direction to be used to correct the less accurate later parts of the logs from the other direction.
What this means for vehicle mapping
So far, this web-based tool has been tested in my Tesla and in a Volvo XC90. Testing in a variety of other vehicles would be necessary in order to draw comprehensive conclusions, but so far I can say:
- At least some vehicles obtain useful location information, even underground
- At least some vehicles expose that location information to their system browser
- At least some vehicles can use web-based logging tools to yield GPX track logs
- At least some vehicles (the Volvo) cannot use web-based logging tools as they block browser usage during driving (there are some indications that this may be an Android Automotive constraint)
- In-vehicle browsers may crash or context shifts in the car-UI may switch away from them, say, when shifting into reverse. On resuming the browser, logged data may not be retained. Experimentation is therefore needed around browser Local Storage or perhaps periodic pushing to a server.
The prototype is great, and, when I map a new road, or an underground car park, or do any other kind of vehicle-based mapping, I use it for real, usually as my only logger. I’d love to share it with other mappers, but the data upload mechanism is crude and won’t scale to that. The tool would need to be refined to keep things manageable, especially in terms of keeping track (heh!) of which track logs belong to which user and maintaining privacy when desired. But that brings me neatly to some important reflections on the right way to implement a tool like this. Because it turns out that most of what we need is already present in a very familiar place.
Reflections on OpenStreetMap.org
I noted above that my use of the OSM slippy map as a first validation was a foreshadowing event. In my validation run, I drove around with my live position displayed on the OSM map but wasn’t able to record a track log because openstreetmap.org doesn’t do that. Then I had an LLM build me a standalone tool centred on an OSM map that just happens to look almost exactly the same and used that to record the track log I wanted. Finally, if I wanted to add my track log to my repository of OSM track logs, I could go back to openstreetmap.org and upload that file.
If that comes across to you as a cumbersome workflow, then you’ve reached the same conclusion I did. Almost all of what I needed to solve my problem is functionality already present on OpenStreetMap.org. Much of it represents core mapper workflows present since the earliest days of the project. The only real difference is context – the context that, nowadays, lots of end-user devices have both web browsers and GPS – and a few missing links that result accidentally from that context.
Feature comparison
| Feature | osm.org | My Prototype |
|---|---|---|
| Full-page slippy map display | y | y |
| Live marker for current position | y | y |
| Breadcrumb display of recent track log | n | y |
| Recording of user track log | Use external tool | y |
| Adding track log to OSM GPX Database | Accepts file from ext tool | Creates file, submit manually |
Seen through this lens, my prototype ceases to seem like a novel proposition and looks more like a missing link in the toolset mappers have been using for as long as we can remember. We have the tools to upload a GPS track log, but only from a file. And we have the ability to display our live position on the slippy map. What we lack is the means to record where we have been while we display that live position. Even though it is increasingly likely that any track log captured by a mapper was recorded on a smartphone on which the mapper had probably also been using the slippy map with live position displayed.
A stunning functionality gap? Yes, but only if viewed with fresh eyes in 2026. I’ve been an OSM mapper for about 20 years, so I’m used to the idea that these apparently complementary features do not connect. The tools we use to manage track logs were built in a pre-smartphone era, when the devices that had proper web browsers at first didn’t have GPS at all and then gradually started to have really crappy GPS that you wouldn’t want to use for mapping. Add to that the fact that most stuff I need to map these days can readily be traced from aerial imagery, so whenever I do need to use GPS data, I mostly don’t bother to upload the track log to OSM anyway. In some ways, the track log repository isn’t the core feature it used to be 20 years ago. But if it’s no longer so relevant, this is in part because its upload UI still expects to be processing data as a file that came from a standalone device rather than as a sequence of points that were captured on the exact same device being used for the upload.
We should fix that. Partly for my own selfish reasons - I’d love a tidier way to do my vehicle mapping and I’d like to let others do the same - but mostly because it would give us a much saner workflow story to explain to new mappers. Let me caricature how you might explain a GPX-based mapping scenario to a new OSMer who grew up in a smartphone-centric world:
- You are out and about and you wonder whether the map is up-to-date at your location
- You open up openstreetmap.org in your phone’s browser and have it display your live location
- As you walk around, you realise that the footpath you’ve been on isn’t mapped. You should fix that.
- Switch away from your browser and launch a third-party tool that can record track logs. Start recording.
- Walk back along that bit of footpath - we weren’t paying attention the first time you walked along it.
- Depending on the software you’re using, it may or may not show you an OSM base map or any map at all. If it shows an OSM map, it may be badly out of date.
- Walked all the way along? Stop recording and work out how to get a GPX file out of the tool you just used. Hopefully your app can output one. If you’re unlucky, you might need to export it to your PC later. Maybe you even need to fish it out of the cloud somewhere.
- Go back to openstreetmap.org and use the GPX upload feature - you’ll need to point it at that file, wherever the app put it on your phone’s file system.
It’s not very nice, is it? Wouldn’t this be better?
- You are out and about and you wonder whether the map is up-to-date at your location
- You open up openstreetmap.org in your phone’s browser and have it display your live location
- As you walk around, you realise that the footpath you’ve been on isn’t mapped. It’s easy to spot, because the track log overlaid on the map doesn’t coincide with any existing map feature. You should fix that.
- Keep walking until you have covered all of what you wanted to capture. Hit the “Save” button.
- You will be able to name the trace (a suggested default will be offered based on your location). Choose what visibility settings should apply to the trace and press “Upload”.
I like this! What do we need to build?
If you made it this far, you’ve probably understood that I’m advocating that we extend the openstreetmap.org feature set to accommodate direct device-to-OSM capture of GPS track logs. Although the use case that brought me to this conclusion was vehicle-based mapping, we should expect that smartphones would be the main devices capturing data in this way.
As for the changes themselves, they are pleasingly contained to the point of likely being invisible to anybody not setting out to use them:
The key additions to current functionality are:
- Addition of an overlaid display of track log in moving-map mode
- Recorded points must be buffered at least in the browser (see below) prior to upload
- Decision: should this display be contingent on entering a “record” mode? If so, a button to activate this would be required, but this button would likely not appear until actually in moving-map mode.
- Addition of a “Save” or “Upload” option available whenever the track log is active
- Actual uploading can reuse the existing GPX upload system
- Decision: should it be possible for the user to name the track and configure visibility before track completion? This could be practical in cases where we provide a server component to progressively upload in order to work around browser brittleness (see below).
Technical challenges
- Recording of track log: no system impact to openstreetmap.org, if data kept by browser until time for upload
- Upload of track log: same process as exists already
- Risk of data loss during recording: brittleness due to browsers crashing or forgetting captured points due to context-switch
- A real issue for cars
- Modern smartphones are probably more robust, but background logging is still unlikely to occur
- Possible solutions:
- Do nothing: position this as an experimental feature, caveat mappor. It would still be useful for many purposes
- Periodically flush recorded data to browser local storage (subject to the whims of individual browser implementations)
- Periodically flush recorded data to server-based buffer (system load impact, so probably only reasonable after user has entered an actual “recording” mode)
OpenStreetMap Blogs























