I think you're out of luck, there is no third option. I cannot claim this with 100% certainty, but I'm at the moment doing an extensive research about vector tiling, and in short MapBox vector tiles are optimized for presentation for their own rendering engine. So while open, it is more or less proprietary - and from this perspective it is probably best to stick closely to MapBox libraries (stability and quality when dealing with these vector tiles).
So I'd say it's best to stick with vt-geojson. But I think you could also open a feature request on Github. This sounds like a useful feature.
Until Mapbox supports other projections https://github.com/mapbox/mapbox-gl-js/issues/3184 this is going to involve lying about the projection in the metadata source file so that you essentially stick a map with a different projection on the Web Mercator Mapbox map.
If you download coastline from http://www.naturalearthdata.com/downloads/10m-physical-vectors/10m-coastline/ then convert this to GeoJSON in a polar projection (EPSG:3413 which is a projected coordinate system in meters) with:
ogr2ogr -f GeoJSON -t_srs 'EPSG:3413' ne_10m_coastline.epsg3413.geojson ne_10m_coastline.shp
Then fake the coordinate reference definition so it thinks this is EPSG:3857 (web mercator, a projected coordinate system in meters) without actually changing any of the numbers:
ogr2ogr -f GeoJSON -a_srs 'EPSG:3857' ne_10m_coastline.asrs_epsg3857.geojson ne_10m_coastline.epsg3413.geojson
Finally we need to re-project that back to WGS84 since that's what GeoJSON files should be in and it's what Mapbox expects.
ogr2ogr -f GeoJSON -t_srs 'EPSG:4326' ne_10m_coastline.fake_polar.geojson ne_10m_coastline.asrs_epsg3857.geojson
Then in Mapbox https://jsbin.com/junemibegi/edit?html,output
There are a few issues since the source data extends beyond the bounds which our polar projection EPSG:3413 supports, but we could either use a different projection or trim out data to not go so far south.
This works because our polar projection is in meters and centered at 0,0, which is also the case for the projection we used in the -a_srs paramater - web mercator, and the extend of the polar projection used is roughly the same scale but a bit less than web mercator, so our polar map fits into the world.
Best Answer
From the example you linked to, there is a directions layer on the map.
The directions layer extends a leaflet LayerGroup, which from the leaflet documentation, has a function called
toGeoJSON
. So I would recommend trying something like: