[HN Gopher] Maplibre: community-driven Mapbox GL fork
       ___________________________________________________________________
        
       Maplibre: community-driven Mapbox GL fork
        
       Author : klokan
       Score  : 242 points
       Date   : 2021-06-23 15:30 UTC (7 hours ago)
        
 (HTM) web link (maplibre.org)
 (TXT) w3m dump (maplibre.org)
        
       | DrBenCarson wrote:
       | Forgive me if obvious--where are you pulling the underlying data
       | from? Is the data itself OS licensed?
        
         | tuukkah wrote:
         | OpenStreetMap in the form of OpenMapTiles:
         | https://openmaptiles.org/
        
           | z77dj3kl wrote:
           | Doesn't need to be OMT though. That's just the de facto free
           | & open source tile generator from OSM data.
        
         | codetrotter wrote:
         | OpenStreetMaps probably.
         | 
         | Mapbox uses data from OSM among others when they create their
         | tiles. https://docs.mapbox.com/help/getting-started/mapbox-
         | data/#co...
        
           | Freak_NL wrote:
           | OpenStreetMap* (no s at the end).
        
             | codetrotter wrote:
             | Sorry :p It's ironic because I had a friend once--well we
             | shared kitchen and bathroom in the student housing,
             | flatmates of sorts--that used to refer to Google Maps as
             | "Google Map" and I never corrected her because I just found
             | that adorable for whatever reason. Lol.
        
               | unknown_error wrote:
               | Good thing it's all digital. Unfolding one big Google Map
               | would take a looooooong time...
        
         | westnordost wrote:
         | Where the SDK pulls its data from is not hardcoded.
         | 
         | The SDK is just a library, used to render vector map tiles,
         | usually in the MVT-format: https://docs.mapbox.com/vector-
         | tiles/specification/
         | 
         | Most maps rendered with such an SDK are based on OpenStreetMap
         | data.
        
         | lukeqsee wrote:
         | As others stated, this demo dataset is pretty simple. I believe
         | it's only using Natural Earth data
         | (https://www.naturalearthdata.com/). The primary focus is on
         | the rendering library.
        
       | andrewljohnson wrote:
       | This needs really solid Metal support or it won't be adopted on
       | mobile.
        
         | arsome wrote:
         | Last I checked there's no WebMetal.
        
           | RandallBrown wrote:
           | Does there need to be?
           | 
           | https://github.com/maplibre/maplibre-gl-native
        
       | kennydude wrote:
       | The smoothness on the demo (at least on my machine) is very nice.
       | Good work :)
        
       | klokan wrote:
       | Open-source mapping libraries for developers using JavaScript,
       | Android, iOS and more...
        
       | ldng wrote:
       | Same acceleration bug with Firefox under Linux that makes me
       | hates Mapbox GL with passion ... Makes quite a lot of website
       | unbearably unusable ...
       | 
       | Would you please provide a way for the user to deactivate that
       | terrible idea ? Thanks.
        
         | mourner wrote:
         | Can you please report this on our issue queue? From a cursory
         | search, it doesn't look like anyone complained about scroll
         | zoom on Firefox under Linux before. We'd be happy to fix this
         | after hearing more details. https://github.com/mapbox/mapbox-
         | gl-js/issues
        
       | lukeqsee wrote:
       | I'm one of the folks behind the fork (and part of the initial
       | steering committee). Happy to answer any questions!
        
         | unknown_error wrote:
         | I've struggled to understand the relationship between Mapbox,
         | Mapbox Studio, Mapbox GL, OpenStreetMap, and other libraries
         | like OpenLayers or Leaflet.
         | 
         | Could you please explain (in brief) the mapping "ecosystem" as
         | it were, and where Maplibre fits into the picture?
        
           | huy-nguyen wrote:
           | Rough overview:
           | 
           | Leaflet: fairly simple open source mapping library. Canvas-
           | based. The original Mapbox (called MapboxJS) is based on
           | this.
           | 
           | Openlayers: open source mapping library that's more capable
           | (e.g many different protections) but also more complex. Can
           | render to Canvas or SVG.
           | 
           | Openstreetmap: public and free source of mapping data. Mapbox
           | uses this as a default data source.
           | 
           | MapboxGL: completely new implementation of a mapping library
           | written in WebGL (should perform better). MapboxGL changed
           | its license recently, prompting the creation of the libremap
           | fork.
        
           | lukeqsee wrote:
           | Good question! There's a lot of Map<thing>s and it's very
           | unclear how they all fit together without prior experience.
           | 
           | OpenStreetMap (OSM) is a community-driven, fully open and
           | usable data library. It has usable data for almost the entire
           | world for everything from cities, roads, houses, parks,
           | country borders, and work. _It 's a database of everything
           | you need to make map._ They also have a website that renders
           | that map, but it's not commercially usable.
           | 
           | Mapbox is one of the first companies to take OSM's dataset
           | and commercialize it. Along the way they created a _lot_ of
           | the wildly used mapping libraries, including renders, data
           | formats, and styling tools.
           | 
           | Mapbox Studio is one of Mapbox's proprietary tools for
           | working with maps in their ecosystem.
           | 
           | Mapbox GL is a suite of renderers, originally entirely open
           | source, developed by Mapbox with the community to render map
           | data (from many different sources).
           | 
           | MapLibre GL is a community-driven _fork_ of the Mapbox GL
           | suite, after Mapbox closed the licenses to require payment if
           | you use the latest versions.
           | 
           | OpenLayers and Leaflet are both alternative, open source
           | renderers with various levels of capabilities. Interestingly,
           | the creator of Leaflet now works for Mapbox (if my facts are
           | correct and current).
        
             | apendleton wrote:
             | Yeah, the bit about the developer of Leaflet is accurate.
             | One thing I'd expand on: the first iteration of web mapping
             | was all built on raster maps, where the map was rendered in
             | advance, server-side, and a simple client downloaded tiles
             | to the client to build a slippy map. Leaflet was an open
             | source library that did that task well.
             | 
             | The commercial players have mostly abandoned this approach,
             | though, in favor of technologies that render on the client.
             | They're more performant (tiles are smaller), and necessary
             | if you want, say, to be able to rotate your map and still
             | have all the labels be upright and not collide, or
             | show/hide individual geographic features dynamically in
             | response to user input, or apply perspective/tilt as you
             | would for a heads-up display in a car, etc.
             | 
             | Mapbox GL was Mapbox building that (as already exists for
             | Google Maps, Apple Maps, etc.). At a very high level, it
             | and Leaflet serve a similar purpose, but are technically
             | very different from one another.
             | 
             | (full disclosure: former Mapbox employee, still a
             | shareholder)
        
               | la_fayette wrote:
               | Isn't it the case that pre-rendered tiles are more
               | performant for the mobile user? Continously rendering the
               | tiles on a smartphone is draining more battery? I would
               | guess?
        
               | astrange wrote:
               | It's true that raster tiles are easier to draw, but
               | CPU/GPU is rarely the limit for performance even on
               | (modern) mobile devices, network access then disk access
               | then memory usage is. And using the network is one of the
               | largest sources of power use. Vector tiles are smaller
               | downloads, therefore they are more performant.
               | 
               | Wall time CPU profiling is just not that useful anymore
               | and yet it's the only thing most people ever think about
               | for some reason.
        
               | afavour wrote:
               | Definitely true. In my experience it's less to do with
               | battery and more that the client-side rendering process
               | is so intense. Particularly because of the single-
               | threaded nature of JS: a GL-based map on a web page makes
               | the whole thing drag on a low-specced phone.
               | 
               | These days Chrome and Firefox have the OffscreenCanvas
               | API that would let you do all that rendering in a
               | different thread, but last I looked MapBox GL didn't
               | support it. Not sure if that's changed with libre.
        
               | [deleted]
        
               | kevinventullo wrote:
               | Yeah, pre-rendered tiles are typically more performant on
               | any device. It's basically downloading and displaying a
               | png. In my experience, download times were not the
               | bottleneck for vector tiles, but rather all the on-device
               | rendering. This is especially true when you consider that
               | most of the time, the tiles are already cached on your
               | device.
               | 
               | I believe the reason most companies moved to vector had
               | more to do with the other stuff gp mentioned: ability to
               | rotate, dynamically show/hide features, etc.
        
               | apendleton wrote:
               | If you never change what you display, that might well end
               | up being true, but if changing display state (you want to
               | highlight or shade or hide a feature, for example) that
               | would likely require downloading whole new tiles for
               | raster but could be a pretty trivial mutation of the
               | current local state that doesn't require a full re-render
               | from scratch. You probably also don't need to download as
               | much on zoom; there _are_ tiles for different zoom levels
               | with vector tiles because tiles get really large when
               | zoomed way out otherwise, mostly full of features or
               | detail you can 't see or wouldn't show, but you might not
               | need as many, and can overzoom a given tile and have it
               | still look nice with relatively few artifacts. All of
               | which is to say: it depends.
        
               | lukeqsee wrote:
               | Yes, for sure. Good expansion points.
        
             | unknown_error wrote:
             | Got it. Thanks a lot for the clear explanation!!
        
             | kabes wrote:
             | Leaflet started because openlayers was very clunky. But
             | since the major rewrite of openlayers v3 it's become a
             | great choice and the author of leaflet has stated here on
             | hackernews hat it's probably what you should use these days
        
             | kristov wrote:
             | Great explanation, thanks!
        
             | mindcrime wrote:
             | I feel like I half-remember something I saw here on HN a
             | couple of years ago, about some mapping related startup
             | going out of business, and open sourcing some interesting
             | tidbits. Do you (or anyone else) happen to remember that,
             | or know what I'm talking about?
             | 
             | Sorry for being so vague, that's just all I remember of the
             | whole deal. I probably bookmarked the link, but I'll
             | probably never find it again now.
             | 
             | Edit: it may have been MapZen that I was thinking about.
             | 
             | https://www.mapzen.com/blog/shutdown/
        
               | lukeqsee wrote:
               | Mapzen is probably the one you're thinking of. A lot of
               | their projects got rolled into various foundations (e.g.,
               | Linux Foundation).
        
           | tuukkah wrote:
           | A big difference moving from OpenLayers and Leaflet to
           | MapLibre GL is that you can use vector tiles and style them
           | in the browser as opposed to rendering PNG files on the
           | server. Converting OpenStreetMap to vector tiles is
           | implemented by OpenMapTiles and they also have some open map
           | styles.
        
             | kabes wrote:
             | no, openlayers supports vector tiles out-of-the-box and
             | leaflet with a plugin
        
               | karussell wrote:
               | You can use vector tiles with openlayers but they draw it
               | on the canvas and not via web GL i.e. it is slower.
        
           | tppiotrowski wrote:
           | Leaflet - developed to work with PNG image map tiles
           | 
           | Mapbox GL/Maplibre - works with vector tiles which are
           | similar in format to an SVG
           | 
           | I believe this plugin[1] is a hybrid approach which allows
           | Leaflet to load vector tiles on a plain 2D map with no map
           | tilt or rotation
           | 
           | [1] https://github.com/mapbox/mapbox-gl-leaflet
        
         | loulouxiv wrote:
         | What would it take to display a map in a style as close as
         | possible to the one used on openstreetmap.org ?
        
           | kylebarron wrote:
           | It would take someone designing the same style in the vector
           | format. This [0] is the closest I've seen to a vector port of
           | the default OSM style. Demo [1]
           | 
           | [0]: https://github.com/baremaps/openstreetmap-vecto
           | 
           | [1]: https://www.baremaps.com/assets/demo.html
        
             | loulouxiv wrote:
             | In the Github issue linked by z77dj3kl I found a link to
             | this vector port by ESRI : http://esri.maps.arcgis.com/apps
             | /View/index.html?appid=d6b18... Closed source but very
             | impressive
        
           | lukeqsee wrote:
           | A few things:
           | 
           | - A data source for vector tiles; there's a lot of options:
           | https://stadiamaps.com (my company), https://maptiler.com/ &
           | https://jawg.io (other core contributing companies), among
           | others.
           | 
           | - A style that matches. I'm not aware of an open source style
           | that closely mirrors OSM's style using MapLibre GL Styles
           | (also forked from Mapbox). OSM Bright is pretty close:
           | https://github.com/mapbox/osm-bright /
           | https://github.com/openmaptiles/osm-bright-gl-style.
        
           | z77dj3kl wrote:
           | The OSM style is here:
           | https://github.com/gravitystorm/openstreetmap-carto
           | 
           | There is an issue about converting it to vector:
           | https://github.com/gravitystorm/openstreetmap-
           | carto/issues/3...
           | 
           | Doesn't seem like there's any current vector versions of that
           | style, but you could make one yourself using Maputnik or
           | similar; you'd probably want to start with OpenMapTiles and
           | maybe even one of the pre-existing styles for OMT like OSM
           | bright.
        
         | twelvechairs wrote:
         | Im curious as to integration with DeckGL which seems to be the
         | emerging standard for 3d maps and also for interactivity. Do
         | you know if maplibre will work the same with it as mapboxgl
         | does?
        
           | kylebarron wrote:
           | Yes. deck.gl has two ways of interfacing with Mapbox GL,
           | either where deck.gl is a layer on top of Mapbox GL (with a
           | separate WebGL context) or by sharing the same WebGL context.
           | Sharing the same WebGL context allows e.g. Mapbox's 3D
           | buildings to "pop" above deck.gl or to put Mapbox's labels
           | above deck.gl layers. Those docs are here [0].
           | 
           | Either way, the recommended way of connecting deck.gl with
           | Mapbox is through React Map GL. Those docs describe how to
           | use Maplibre GL here [1] and here [2].
           | 
           | [0]: https://deck.gl/docs/get-started/using-with-map#using-
           | deckgl...
           | 
           | [1]: https://visgl.github.io/react-map-gl/docs/get-
           | started/mapbox...
           | 
           | [2]: https://visgl.github.io/react-map-gl/docs/get-
           | started/get-st...
        
           | lukeqsee wrote:
           | I'm not sure as to specifics (as I haven't tried this), but
           | if DeckGL worked with 1.x Mapbox GL JS, it should just work
           | with MapLibre, with a few potential minor adjustments (e.g.,
           | nomenclature). Can't promise it though.
        
             | billygoat wrote:
             | I can verify this: I upgraded my Deck.gl project from
             | MapBox to MapLibre recently, and it was a simple matter of
             | renaming some imports.
             | 
             | This works absolutely seamlessly.
             | 
             | I'm using Vue instead of the React integration and that's
             | also working without any issues.
        
         | unknown_error wrote:
         | I noticed that Mapbox Studio has a way of creating & exporting
         | styles (kinda like stylesheets but for maps). Do you know if
         | those styles can be imported into a libre renderer like
         | Maplibre, or if a similar tool/ecosystem exists for creating &
         | sharing open-source map styles? Like if I wanted all roads to
         | be rainbow-colored and rivers to be green.
         | 
         | In Mapbox Studio, the features all seem to be semantically
         | tagged (e.g. this is a road of type X, a POI of type Y) and it
         | makes styling a cinch. I know OSM has its own set of tags for
         | features. Are these compatible (not sure if Mapbox Studio is
         | using OSM data underneath)? Is there an established standard
         | for this type of thing?
         | 
         | (ps TY again for answering my other question so thoroughly)
        
           | lukeqsee wrote:
           | https://maputnik.github.io is similar to Mapbox Studio, but
           | isn't going to give you all you mentioned.
           | 
           | All vector tile sources use tags in various ways, so Maputnik
           | (and the resulting styles) do as well. There isn't a standard
           | tagging schema (and all MVT sources tend to differ slightly),
           | but OSM's tagging is often influential on the resulting
           | schema.
        
             | unknown_error wrote:
             | That's exactly what I was hoping for. Thank you again!
        
         | billfruit wrote:
         | Does it support rendering of rasters? What about support on
         | Desktop platforms?
        
           | z77dj3kl wrote:
           | Yes, you can render raster layers (tile sources).
           | 
           | https://docs.mapbox.com/mapbox-gl-js/example/map-tiles/
        
             | tuukkah wrote:
             | And here's the forked version of that example:
             | https://maplibre.org/maplibre-gl-js-docs/example/map-tiles/
        
           | lukeqsee wrote:
           | MapLibre GL Native supports server-side raster rendering via
           | tileserver-gl or a custom server implementation (my company
           | does this).
           | 
           | Desktop support should be possible with some extra work with
           | Native, but I'm not certain, for instance, if the QT bindings
           | are fully working yet.
        
             | mnutt wrote:
             | My understanding is that mapbox-gl-native dropped node
             | binding support prior to the fork; the code is still there
             | but the build system can't build it. I'm hoping to help
             | maplibre bring it back up to a working state.
        
         | fatnoah wrote:
         | The site mentions "additional functionality" vs. Mapbox Native.
         | Is that additional functionality listed somewhere? (Apologies
         | if it is and I missed it)
        
           | lukeqsee wrote:
           | Metal support (coming soon) and MBTiles support (released
           | AFAIK) are two things I know of, but I defer to the Releases
           | page for specifics beyond that:
           | https://github.com/maplibre/maplibre-gl-native/releases.
        
             | fatnoah wrote:
             | Thanks!
        
         | TOMDM wrote:
         | Maybe not the best place for this, but hey it's a question.
         | 
         | When adding clusters vs points to a map, filtering points is
         | really simple, but I haven't found a simple way to filter
         | clusters outside of filtering a data source and reapplying it
         | to the clusters.
         | 
         | If there a better way of doing this?
        
       | [deleted]
        
       | [deleted]
        
       | westnordost wrote:
       | If it is true that Apple will soon drop OpenGL and only support
       | Metal:
       | 
       | Will the SDK also work on iOS and Mac then, i.e. has Metal
       | support?
        
         | lukeqsee wrote:
         | There is active development on a Metal-supporting version, yes!
         | 
         | https://github.com/maplibre/maplibre-gl-native/tree/metal-su...
         | is the branch and https://github.com/maplibre/maplibre-gl-
         | native/issues?q=is%3... are associated issues.
        
         | sulewicz wrote:
         | Yes, we have a beta build of the SDK with Metal support
         | (https://github.com/maplibre/maplibre-gl-native/tree/metal-
         | su..., https://github.com/maplibre/maplibre-gl-
         | native/releases/tag/...). There are some minor issues we are
         | addressing in the new release. Contributors and brave souls
         | willing to try out the build are more than welcome :).
        
       ___________________________________________________________________
       (page generated 2021-06-23 23:00 UTC)