Of the six Android apps I’ve published this year, 5 have required a tiled map view component that wasn’t appropriate for the standard Google MapView or OSMDroid… I needed not only a lot more customization than is currently available with either of those, but they were at higher detail-levels than is possible for accurate GPS positioning (they were facility maps – interiors of museums, botanical gardens, etc). My iOS counterpart uses CATiledLayer, and provided some hints as to how that component worked – I used the basic idea, but combined it with some additional “map-centric” functionality, to the net result is a little like a hybrid of CATiledLayer and com.google.android.maps.MapView.

There are a couple other attempts out there, like this one and this paid version, but again I needed more control. Further, AFAICT there’s no attempt in the former to manager bitmap memory, which is a killer for me (the dreaded “bitmap size exceeds VM budget” OOME), and the latter didn’t provide animation or “regular” pinching (you can pinch, but it just jumps to the next level).

I ended up writing my own, and have revised and optimized it after each implementation. We’ve tested directly on 8 devices we have locally, without problems, and have several thousand users across the various apps. Still, I’m sure there’s room for improvement, so forks (or any other input) are very welcome. I’m having disagreements with git right now so haven’t added a library jar yet, but it’s pure java so should be easy to compile. Works on 2.2+.

The github page is here, and docs are here.