Making Better Maps with Tangram on Android

One of the four symbiotic hearts of the Mapzen Android SDK is the rendering engine that paints maps, markers, and routes onto a screen. The rendering engine has the job of visually communicating the deluge of data that a map contains about any part of the world, and doing it quickly and efficiently so that it’s delightful to use. This is a hard problem, but one that’s essential to a good mapping experience.

In the Mapzen Android SDK we chose to use our home-grown cross-platform map renderer, tangram-es. There are three main reasons that tangram-es was the best fit for our needs (and maybe yours too). First, it’s entirely open-source, which is important to the Mapzen commitment to an open mapping ecosystem. Second, it is relatively agnostic to the format and contents of the map data you use, so you’re not locked into Mapzen’s vector tiles. Third, it has a ludicrously flexible styling system that lets us make some very handsome and effective cartography.

Bubble-wrap cartography in Cairo

With tangram-es we have a unique set of cartographic tools, including a text layout and rendering engine that we’ve built from the ground up to produce high-quality text handling the many different features of many scripts, even those with text-shaping (like Hindi), right-to-left layout (like Hebrew), or both (like Arabic).

Bubble-wrap cartography in Cairo

Flexibility is great, but it’s like a double-edged sword — or at least like a really sharp cheese grater that makes you nervous when you use it. Sometimes you don’t need precise control over every aspect of a map: you just want it to work and look good. The Mapzen SDK has you covered so you can focus on the cool stuff that you’re doing in the rest of your app. Our expert cartography team has put together a global set of vector tiles and a comprehensive map style that are both available automatically when you use the SDK. We also provide handy bits like an automatic current location marker (this uses LOST, our location provider, which you’ll hear more about soon!).

Getting a map view into your app with the Mapzen Android SDK is straightforward and should be familiar if you’ve used other mapping SDKs. We’ve documented it all here:

Maybe you’re the type of developer who likes really sharp swords and cheese graters. You might prefer to have full control over all the details of the renering engine. Fortunately, the full array of tangram-es features is at your fingertips when you use the Mapzen Android SDK. Using MapzenMap$getMapController() you can access the tangram-es instance that powers the graphics in the SDK.

If you’re interested in using tangram-es on Android by itself, it’s easily accessible through Gradle as a Maven dependency. In your build.gradle file, just add compile "com.mapzen.tangram:tangram:$tangram_version" to the dependencies section of your project with the latest tangram-es version (check Maven Central).

There’s a lot more to say about map rendering, but this is just one of the tools you get when you use the Mapzen Android SDK. Stay tuned for the rest of this week to hear about our search, routing, and location tools!