Mapzen's Vector Tile service — better, stronger, faster


A lot has changed since we launched the Mapzen Vector Tiles service last year, including updated documentation. I’d like to give you a quick update on recent changes and what’s about to land.

Not familiar with vector tiles? The Mapzen vector tile service provides worldwide basemap coverage sourced from OpenStreetMap and other open data projects, updated daily as a free & shared service.

Data is organized into several thematic layers, e.g. buildings, pois, and water. Each layer includes a simplified view of OpenStreetMap data for easier consumption, with common tags often condensed into a single kind property.

As we work towards a v1.0 release this year we’d love to hear your feedback on the Mapzen Vector Tile service – please say (If you are at the State of the Map US in Seattle in July 23-25th, we can talk about it in person!)

Updated documentation

We’ve published updated documentation, including sections for data sources and attribution, name localization, geometry types, data updates, general changelog, and full layer reference with map previews and lists of property keys and their values.

Faster, fresher tiles

Starting last week, customers in the western United States, Europe, and Asia should see faster tile load times, and data updates from OpenStreetMap now appear in Mapzen tiles on a more frequent basis.

New tile data

Now at version v0.7, we’ve had 6 major updates to Mapzen Vector Tiles since we released the service last year. Here are some highlights!


Boundaries: Fences, city walls, and other barriers have been added to the boundaries layer. (above) the San Francisco Zoo.


Buildings: Name label positions (deduplicated across tiles) and addresses have been added to the buildings layer.


Mapzen calculates a landuse_kind values for buildings by intercutting them with the landuse layer to determine if they are over parks, hospitals, universities or other landuse features. Use this property to modify the visual appearance of buildings over these features. For instance, light grey buildings look great in general, but aren’t legible over most landuse colors unless they are darkened (or colorized to match landuse styling).


Landuse: The landuse layer also includes new label placement points (deduplicated across tiles), and many more landuse kinds including beaches.


Neighbourhoods: Starting at zoom 12 neighbourhood and macrohood features are added from Who’s On First to the places layer.


POIs: We now support over 200 points of interest in the pois layer, and most have custom sprite icons.

Different kinds of POIs are included in tiles based on zoom, but we promote some features up a few zooms in each kind based on their building (or landuse) areas. For instance, a big university might be visible at zoom 12, but a small (or no area) university might only be visible at zoom 15.

Transit stations include a tile_kind_rank (as detailed in Matt’s station relations post) and indicate which transit routes service the station.


Roads: We are including more transportation features in the roads layer, and road names are now abbreviated. Directionals like North and Northeast are replaced with N and NE, and common street suffixes like Avenue and Street change to Ave. and St.. For low- and mid-zooms, some properties, like is_tunnel, are dropped.

Mapzen calculates the landuse_kind values for roads by intercutting them with the landuse layer to determine if a road segment is over parks, hospitals, universities or other landuse features. While light grey minor roads look great in general, they aren’t legible over most landuse colors unless they are darkened. As with buildings, you can use this property to modify the visual appearance of roads over these features.


Aerialways Gondola, cable car, chair lifts, and other aerialways were added a while back.


Ski pistes: More interested in hitting the slopes? Head for the black diamonds.


Piers start showing up at zoom 13+ with a kind value of pier.


Railroads: New details for yard, transit, and spur.


Transit: The transit layer includes line features from OpenStreetMap, which start appearing at zoom 6+ for trains and railways. Then subway, light rail, and tram are added at zoom 10+. Platform polygons are added at zoom 14+.


Water: The water layer includes new label placement points (deduplicated across tiles).

Upcoming changes that may affect your map

Mapzen plans to release v0.8 of the Vector Tiles Service on March 8th. This milestone has been focused on improving server and client performance. Some of those changes went live last week, and the final data changes are being staged now.

  1. Significantly more points of interest (POIs) and boundaries will appear at zooms 16 and 17 than before.
  2. New sort_key values will be provided to order landuse and road features that are incompatible with the earlier sort_key values.

Overstuffing zoom 16 & 17 tiles

The upcoming v0.8 vector tiles release will include data changes to zoom 16 tiles that will significantly increase the quantity of pois layer features and includes a minor change to the boundaries layer, which affects the overall balance of the map. This gives map designers more control over what shows up when, and it improves client and server performance.

Features previously limited to zoom 17 and 18 tiles only (including hotels, ATMs, bus stops, and parking lots) will now be visible starting at zoom 16. Zoom 17 tiles will be 99% the same as before (with a couple of zoom 18 features added in), and zoom 18 tiles will be exactly the same as before.

If you are not currently showing pois or fence boundaries on any of your maps, this change doesn’t affect you. If you are, then it’s a 16 line fix in a Tangram scene file to do the filtering client side to continue the old customer experience. Paired with this change, we will provide the recommended min_zoom on all features in the pois layer so you’ll still know the recommended zoom to show each feature.

This change allows client mapping libraries like Tangram to stop requesting vector tiles after zoom 16, improving client-side map drawing performance at zooms 17+. Higher zoom level tiles will continue to be supported though.

Changes to sort_key values

The v0.8 release will include data changes to sort_key values for landuse and roads features at all zoom levels (and implied sort_key values for features in other layers). These new sort_key values are incompatible with earlier sort_key values, particularly if you’ve manually set a z-index order for features in the water, boundaries, or other layers that depends on landuse and roads feature orders.

Up until now, we have packed landuse features into 5 non-unique sort_key values. While this worked for 2D (top down) map views, it sometimes introduced z-fighting in tilted 3D views (like parking lots over shopping mall landuse polygons). Similarly, road tunnels sometimes sorted below water (instead of being transparent above water), and we didn’t allow enough gaps in the range to insert other features like buildings between tunnels and surface streets. The new sort_key values provide over 10x the range as before, ensuring that each feature class (or kind) has its own GL turf.

If you are not currently ordering landuse or roads using Mapzen’s sort_key convenience values, this change doesn’t affect you. If you are, then please contact us for a migration strategy.

Again, as we work towards a v1.0 release we’d love to hear your feedback about Mapzen’s Vector Tiles service. Please say!