Monday, December 9, 2013

WhirlyGlobe-Maply For Android

For those of you with a short attention span.  The Android port is on.  Now for the details.

Yes, it will look exactly like this.

WhirlyGlobe-Maply is in great shape on iOS.  With the recent release of 2.2, I'm pretty happy with the architecture and functionality.

The toolkit has matured from a lightweight interactive globe to a serious geospatial display toolkit.  It's suitable for large globe based applications and interactive flat maps.  I have some pretty reliable clients in aviation, geography, and map display.

That's great and I can see this going on indefinitely, but there's one obvious thing that must happen fairly soon.  I need to port to Android

Why Android?


We can debate the pros and cons of Android vs. iOS endlessly.  It doesn't really matter and I don't really care.  I need to port to Android because big clients want me to port to Android.  No one wants to get stuck on iOS.

Most of my clients aren't selling their apps anyway, they're selling services.  To them, it's a matter of cost.  The iOS version is a given, but then how many customers are on Android and how much will it cost to get there?

There are other reasons.  Once the Android port works it opens the door for other ports.  What about the Mac?  PC?  Windows Phone?  How about some weird custom in-car navigation system?  I'm focused on mobile, but I'll take money for any of those ports.

Clients


Once I started asking around for Android money it became clear how this was going down.  I needed one big client to pay for the biggest chunk of it.  I'd toss in some of my own overhead money and then get the rest from a diverse set of clients.

Now I have that big client on board.  Negotiating deals for functionality that doesn't exist yet is always tricky, at least for a small project like mine.  But we did it, WhirlyGlobe-Maply is growing up!

I'm focusing on what that first customer needs so there will be plenty of gaps after the initial port.  Everything depends on the core rendering engine, naturally, so porting the rest of it will be much easier.

The initial version will be ready in late winter.  "So..." you may be thinking, "can I get it?"

Open Source + Private Beta


I'm very happy to announce that WhirlyGlobe-Maply 3.0 for iOS and Android will (still) be open source, distributed under the Apache 2.0 license.

That's nice, but I need money to finish porting everything else.  So here's how that's going down.  It's open source, but the toolkit will be in a private beta for a few months.  How long?  I'm not sure yet.  You want access to it right now?  Pay for some functionality.

Make no mistake, this thing is going to be usable in 2-3 months, depending on what you need.  Porting the rest of what you need will be easy.  So cough up some dough and off you go.

After I've reached a certain threshold of working functionality, I'll release the toolkit to everyone and we'll go back to normal.

Thursday, December 5, 2013

Maply 2.2

I'm pleased to announce the release of Maply 2.2.

Maply is a 2D and 3D map rendering toolkit for iPad and iPhone based on OpenGL ES 2.0.  It lets you put labels, markers, vectors, and shapes on top of an interactive map with one or more base layers of pageable image data.

Check out the video for a quick tour.


Maply is actually part of the WhirlyGlobe-Maply component.  The library handles both a 3D globe and a 2D/3D map with different entry points.

Go check out this page for details on how to get the library and use it.

WhirlyGlobe 2.2

I'm pleased to announce the release of WhirlyGlobe 2.2.

WhirlyGlobe is a 3D globe rendering toolkit for iPad and iPhone based on OpenGL ES 2.0.  It lets you put labels, markers, vectors, and shapes on top of a 3D interactive globe with one or more base layers of pageable image data.

Check out the video for a quick tour.



WhirlyGlobe presents a nice, simple Objective-C interface and uses standard MVC constructs such as view controllers and delegates.  It's very easy to integrate into your own app.

Where To Get It

The github repository is the best place.  The master branch is on 2.2.  You'll want to check out the readme, but basically it goes like this.

  • git clone https://github.com/mousebird/WhirlyGlobe.git WhirlyGlobe-Maply
  • cd WhirlyGlobe-Maply
  • git submodule init
  • git submodule update
  • Open the WhirlyGlobeComponentTester in Xcode
All the example data is in one of the submodules, so it takes a while.

There's also a binary distribution.  Download it and open the WhirlyGlobeComponentTester example.


Using The Framework - GitHub

It's pretty easy to use WhirlyGlobe in your own project.  If you're using WhirlyGlobe as a submodule, it's like so:

  • Set up a brand new project for your app with git enabled.
  • cd to the root directory of the project
  • mkdir libs
  • git submodule add https://github.com/mousebird/WhirlyGlobe.git libs/WhirlyGlobe-Maply
  • git submodule init
  • git submodule update
  • cd libs/WhirlyGlobe-Maply
  • git submodule init
  • git submodule update
One of WhirlyGlobe's submodules contains all the source data, so that'll take a while.  You only have to do it once.

Then in your Xcode project, do the following:
  • Go to Build Phases and open "Link Binary With Libraries".
  • Hit +
  • Select "Add Other"
  • Navigate to libs/WhirlyGlobeSrc/WhirlyGlobe-MaplyComponent/
  • Select WhirlyGlobe-MaplyComponent.xcodeproj
  • Hit + again
  • Select libWhirlyGlobe-MaplyComponent.a
  • Add a few other libraries you'll need
    • libc++
    • CoreLocation
    • libz
    • libxml2
    • libsqlite3
  • In Build Settings find "Header Search Paths"
  • Add the path "$(SRCROOT)/libs/WhirlyGlobe-Maply/WhirlyGlobeSrc/WhirlyGlobe-MaplyComponent/include/"
You should now be able to pull in WhirlyGlobeComponent.h and compile.

Using The Framework - Binary Distribution


If you're using the binary distribution instead of github, there are even fewer steps.
  • Set up a brand new project for your app.
  • Go to Build Phases and open "Link Binary With Libraries".
  • Hit +
  • Select Add Other
  • Navigate to WhirlyGlobeMaplyComponent.framework in the binary distribution and select it.
  • Hit + again
  • Select libWhirlyGlobe-MaplyComponent.a
  • Add a few other libraries you'll need
    • libc++
    • CoreLocation
    • libz
    • libxml2
    • libsqlite3
  • In Build Settings find "Header Search Paths"
  • Add the path to "$(binary dist path)/WhirlyGlobeMaplyComponent.framework/Headers".  You fill in the binary dist path.
You should now be able to pull in WhirlyGlobeComponent.h and compile.

Documentation

The full set of reference documentation is now available.  That's documentation for each of the Objective-C classes.  The crazy C++ internals are not documented there, so think twice before using them.

To see what's possible, consult the WhirlyGlobeComponentTester app which is included both in git and the binary distribution.  TestViewController.m is the best place to start.  Getting a simple globe up and running is surprisingly easy.