Wednesday, November 13, 2013

WhirlyGlobe-Maply 2.2 Beta4

Busy, busy, busy.  So here's the next WhirlyGlobe-Maply 2.2 beta.

That's animating, trust me.

I probably should have shipped the last one and moved on to version 2.3.  But I didn't.  I was busy integrating with a few client projects and that shook out a lot of bugs.  The user community was pretty active as well, finding bugs and minor gaps in functionality.  The result is beta4, which I quite like.

Updates to Beta4

There were many, many bug fixes.  We shook out a lot of problems and I added a whole bunch of new functionality.

  • 2D Maps
    • These work more smoothly in general.
    • When displaying a tile source that's in the same coordinate system as the viewer, we skip all the complicated screen space calculation logic.  This makes the loading look better.
    • For that case (simple flat map, basically) you can now ask "what zoom level are we at?"  That question only makes sense for a flat map.
    • The display supports coordinate systems other than spherical mercator.  Only one other is available, but in the future... more.
    • Rotation is now working thanks to a pull request.
  • Quad Image Paging Layer
    • Image paging now lives in its own thread and synchronizes with the frame draw boundaries.  This is very fast.
    • More knobs for controlling animation.
    • Many bug fixes to animation.  This deserves its own blog post.
    • Handles empty tiles better.  Now you can have a tile source that only provides levels 10-12, say, and it'll work.
    • Better error reporting including feedback at the tile source for failed loads.
    • Support for asynchronous loading if that's how you swing.
  • WhirlyGlobeViewController / MaplyViewController
    • You can now ask the control how high you should be to see a given bounding box.  This is nice for centering on data.
    • There are delegate methods for didStartMoving and didStopMoving.  These are useful for reacting to where the user is looking.  Be careful, they're on the main thread.
    • I support images on various high level objects, like stickers or markers.  The toolkit reference counted those when converting to OpenGL ES textures.  Now you can nail those down in the format you want with the settings you want and avoid creation/deletion thrashing.
    • Stickers support multiple images which they will happily pass to custom shaders.
    • Filled vectors now support textures.  [You should be saying "Oooooo" right now.]
    • Shader support has been there for a while, but now it tracks updates and forces redraws more consistently.
    • You can pass an image to a shader where it'll use it to do... whatever you write your shader to do.
    • Billboards are... hard to explain.  Useful if you know what they're for.


You've got a couple different options for getting WhirlyGlobe-Maply 2.2 (beta4):
Don't forget about the documentation.  It took long enough to write, so read it.

The Future

This is more or less it for 2.2, I think.  Maybe a few bug fixes if anything heinous turns up.

I've absorbed 2.3 into the last beta, so next up is probably 3.0.  That'll be a while.


  1. Maply / Whirlyglobe is fantastic, and getting better and better. I'm a big fan of the vector paging system. Great work and much thanks, Steve!

    1. Thanks! Are you working from the source tree or the binary distribution? I'm about to turn beta4 into the release version if no one ran into trouble.

    2. I am working on version b6d2b37fc6 from the development branch currently, from Oct 28. I have some minor differences that I patch, so I don't update the submodule very often, but I may do so again soon.