Wednesday, August 1, 2012

WhirlyGlobe Component: Announcement

I'm pleased to announce the WhirlyGlobe Component, an easy to use wrapper on top of WhirlyGlobe.

For users who may not be familiar with WhirlyGlobe, here's the summary.
WhirlyGlobe is a 3D globe rendering toolkit for iPad and iPhone.  It lets you put labels, markers, and vectors on top of a 3D interactive globe with a base layer of pageable image data.

Who It's For & What It Is

The Component is for people who wanted to use WhirlyGlobe, but had trouble compiling it, getting it to run, or dealing with the threading.  You know, most everyone.

WhirlyGlobe Component is most of the interesting functionality without all the stuff that drove people crazy.  It's all Objective C, there are no weird template headers to include, and you can safely ignore threading issues.  Don't get me wrong, all that's still in there, I'm just hiding it.

Where To Get It

I'm putting the WhirlyGlobe Component into beta right now.  You can get the latest version off WhirlyGlobe's github download section.

There are two main pieces in that download:

  • WhirlyGlobeComponent.framework
  • WhirlyGlobeComponentTester

The Tester is my test app.  It's self documenting (Ha!  I kill me).  Just load it up and check out TestViewController.m.  All the important logic is in there.

Using The Framework

It's much easier to include the WhirlyGlobe Component framework in your own project.  That's the whole point.

When setting up a new project, here's all you have to do.
  • Drag WhirlyGlobeComponent.framework into your project view.
  • Add the following standard Apple frameworks that WhirlyGlobe needs.
    • OpenGLES
    • QuartzCore
    • libsqlite3
    • libstdc++
  • Point the Header Search Paths at the WhirlyGlobeComponent.framework/Headers directory.
  • Add -all_load to the Other Linker Flags.  You'll get a missing selector without this.

To actually create a WhirlyGlobeViewController and use it, look at TestViewController.m in the WhirlyGlobeComponentTester app.


At the moment I'm supporting a variety of base image layers, both remote and local, paged and not.  I'm also supporting markers and labels in both 2D and 3D modes.  Selection is working, as is UIView overlay.

The only big feature missing is vector data.  I'm contemplating how best to include that in an intuitive way.  Barring a little testing, that's the last feature before release.  In the mean time, it works great, give it a try.