

Maps on Android - mmg
https://engblog.nextdoor.com/2015/06/25/maps-on-android/

======
lnanek2
The Google Maps API for Android is one of the rare SDKs that continually gets
worse over time. In the Android beta it actually had more features like
driving directions, but the classes were moved off into undocumented classes,
then made unreachable completely driving people to use JS APIs or competitors
like Skobbler. It's pretty clear Google isn't eating their own dog food with
this and that it's just a back water that has nothing to do with their own
Maps app. Kind of a shame because they could be making every mapping app on
their entire platform better with a good SDK, making their entire platform
much better, instead of only helping their one app.

~~~
cryptoz
Yes, this is my experience exactly with PressureNet[1]. The SDK is terrible.
And they know this too, because I just found the android-maps-utils library on
GitHub [2], written by someone on the Google Maps Android team. It's a library
of additional, critical features that the Maps SDK should have built in, and
it's made by Google! So why aren't these features in the SDK?

Example critical feature: Place text on a map. Supported method of doing so is
to create Bitmaps on the fly using the drawText() method to compose your
dynamic image. Ridiculous. So this new library supports simple features like
that, but why isn't it baked into the SDK? Argh.

[1]:
[https://play.google.com/store/apps/details?id=ca.cumulonimbu...](https://play.google.com/store/apps/details?id=ca.cumulonimbus.barometernetwork)

[2]: [https://github.com/googlemaps/android-maps-
utils](https://github.com/googlemaps/android-maps-utils)

~~~
chrisbroadfoot
Author of said library here. I still work for Google, but I'm not on the Maps
team anymore :)

Agree that some of the functionality in the util library should be in the base
library, or the util library linked to from the Maps documentation. For
example, all of the spherical math stuff.

However, I'm not happy with how some of the API turned out. The clustering
library is quite complex. I think it's fairly well designed, but overly
flexible. I'd re-do quite a few things, given another chance. It's always hard
to get those kinds of APIs right the first time. You don't get to re-do things
like that once they're in the official SDK. That API needs to be supported
approximately forever.

~~~
mmg
Is there a reason why so much functionality is not exposed?

~~~
chrisbroadfoot
Not sure what you mean specifically, but here's some of my thoughts (note that
these do not represent those of the product team)...

* Technical reasons. All calls to Android Maps API happen via an IPC (inter-process, not intra-process, actually), so they are generally slow. That could be bad for things that should be fast to compute like everything in SphericalUtil and PolyUtil.

* It's hard to design a nice API for Clustering. Having it open-source means Google doesn't have to guarantee support for that API according to the ToS (iirc, >1 year)

* Open source library code demonstrates use of the API. You could think of it as additional sample code.

* There's some value in having open source code, generally. A lot of the stuff could be useful in other settings - for example, you could port a lot of the math code to other languages.

