Yesterday’s update to Google Maps was certainly no slouch for new features; it came packing some great improvements for cyclists, new voice commands during navigation, and a few other interface tweaks. In addition to these public changes, there are also two brand new features buried within the code which are not active yet, but they may point to some exciting stuff on the horizon.

Teardown

"I Am Here"

Google Maps is pretty good at figuring out where we've gone; between GPS, Wi-Fi, and even things like BLE-based iBeacons, it's possible to pinpoint our locations just about everywhere, even inside of buildings. Still, there are times that even the latest technology can get confused, and that's where we can lend a hand. Google is working on a new interface that will allow users to clearly declare their presence at specific stores, monuments, or just about anything else Google has in its database.

<string name="IAMHERE_ADD_A_PLACE">Add %s as a new place</string>
<string name="IAMHERE_INTERNAL_ONLY">*internal dogfood only*</string>
<string name="IAMHERE_ARE_YOU_AT">Are you at</string>
<string name="IAMHERE_OR_ARE_YOU_AT">Or are you at</string>
<string name="IAMHERE_ARE_YOU_AT_PLAIN">Are you at</string>
<string name="IAMHERE_NOW_AT">Now at %s</string>
<string name="IAMHERE_NOW_AT_PLAIN">Now at</string>
<string name="IAMHERE_VIEW_MORE">More</string>
<string name="IAMHERE_EXPLORE_NEARBY">Explore nearby</string>
<string name="IAMHERE_NOT_AT_THIS_PLACE">Not at this place?</string>
<string name="IAMHERE_WHERE_ARE_YOU">Where are you?</string>
<string name="IAMHERE_SOMEWHERE_ELSE">Somewhere else?</string>
<string name="IAMHERE_REPORT_BLUE_DOT_PROBLEMS">Report blue dot issues</string>

 

<plurals name="IAMHERE_YOUVE_TAKEN_PHOTO_HERE">
<item quantity="other">"You've taken %d photos here"</item>
<item quantity="one">"You've taken %d photo here"</item>
<item quantity="two">"You've taken %d photos here"</item>
<item quantity="few">"You've taken %d photos here"</item>
<item quantity="many">"You've taken %d photos here"</item>
</plurals>

These strings point to a fairly straight-forward interface that covers the basic interaction of showing a user where Maps thinks they are, but offering ways to change locations as needed. Aside from some fairly insignificant bits, there aren't any dedicated layout files or images among the resources, and it's clear that the interface is constructed by code. There are also a few pre-loaded locations, but they could be meant either as filler for a user tutorial or -more likely- just for testing.

At this time, "I Am Here" is only available to Google employees and testers (note the dogfood string), so the public hasn't been invited to the party yet, but the code looks mostly complete.

The thing we've got to wonder is how this will be used. It's possible this functionality will become a simple check-in feature like we've already got in Google+. Alternatively, on a more speculative front, this might become a component for the Nearby feature we've spoken about in the past. Perhaps it could be used for helping two parties find each other in an otherwise large or complicated setting. I'm not sure about anybody else, but I would have loved some digital assistance a few weeks ago when I was meeting a small group of people at a very large mall.

Developer Gallery

While digging through the apk, I came across a lot of new code in a folder named "devgallery." Most of the class names and variables are obfuscated, so there's relatively little to go on, but two class names remained intact: GalleryConfigurationFragment and DeveloperGalleryFragment.

There are no unique resources of any kind referenced by this code, not even strings – they've all been hard-coded. In fact, all of the interface elements are constructed entirely in code, including custom handling of different resolutions and pixel densities. It’s not really clear if this has been done because the feature is still in early development, if it's necessary to account for dynamic content, or maybe the developers are just trying to make this code less obvious to prying eyes (cough)(cough).

Among the several hard-coded strings, many of which are obviously filler, I notice an obscene number of typos, misspellings, and even a couple amusing word substitutions. I sincerely doubt the author of this code meant for the text to be taken seriously, and probably wanted his or her fellow Googlers to get a couple of laughs. Naturally, I had to honor the contribution by sharing the joke. (Note: I left out a few strings that were too innocuous to to be meaningful. Bolded words deserved a tad more attention.)

"Some notice text"
"Some incident text"
"Some more incident text"
"Some elevation profile accent"
"Some elevation profile descent"
"Some travel mode label"
"Hello world"
"Some content description"
"via US-101 N and some other street with a long name"
"15 min without traffic which is not the case"
"content desctiption"
"5:14 - 6:00 PM"

There are also sample strings for different locations, which happen to include identical directions:

"Google West Campus", "0.5 mi (11 min)", "35 towards 36 SB Downtown Mountain View"
"Church El Camino", "0.5 mi (11 min)", "35 towards 36 SB Downtown Mountain View"
"Tokyo Metro", "0.5 mi (11 min)", "35 towards 36 SB Downtown Mountain View"
"Castro", "0.5 mi (11 min)", "35 towards 36 SB Downtown Mountain View"

Some of the longer filler (lorem ipsum) strings also contain embedded tags like this:

"<getTitle()> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt"

These are the embed tags present in the text, so far:

  • getTitle()
  • getDetails()
  • getSnippetText()
  • getReviewerInfoText()
  • getReview()
  • getLabel()
  • getButtonOneText()
  • getButtonTwoText()

Naturally, there are several labels and sample info to fill up the interface for testing purposes:

"Text: "
"Description: "
"Food", "22","Decor", "20","Service", "18", "Cost", "$29"
"10:27 from San Antonia & Middlefield"
"5 min"
"$2.00"
"Every 60 min"
"transit"
"28 min"
"9.3 miles"
"22 min"
"4.0"
"(426) u2022 "
"$$"
"+25"
"5"
"User Rating"
"At least"
"Any", "2.0", "3.0", "4.0"
"43 saved places"
"Write a review"
"SAVE"
"NAVIGATE"

Finally, I noticed a hard-coded link to the Metropolitan Transportation Authority for the New York area (http://www.mta.info).

Of the few interfaces that are built from code, only one was entirely obvious. It creates a series of radio button groups offering options related to layout configurations.

  • Small, Normal, Large, Huge
  • Short text, Long text
  • LTR, RTL
  • ldpi, mdpi, hdpi, xhdpi, xxhdpi

So, what does all of this add up to? There’s not enough solid evidence to be positive, but with a name like "Developer Gallery," the presence of a layout config screen, and some of these other bits, it’s not hard to make a guess. This sounds like an interface for picking 3rd-party extensions.

If you're wondering why you might want this, just think about the potential of injecting custom features directly into Maps and Navigation. Currently, developers have to embed a map in their own apps to overlay graphics or run their own code. This is fine if you only want the features of one app at a time, but there may be benefits to having multiple apps working in tandem. Additionally, 3rd-party apps can't embed navigation, so some kind of hook for apps to improve on that experience would also be welcome.

Of course, this is deeply in the territory of speculation. There have been a few quietly circulating rumors that Google was finally willing to open up Maps to customization, but there have never been any credible details. Without more information, it's too early to be certain that this isn't something entirely different. We will just have to wait for future versions of Maps to shed some more light on this one.

Wrap-Up

That's it for this Teardown. The stuff we're seeing here probably raises more questions than it answers, but it's awesome to see some big stuff popping up so soon after Google I/O. Keep an eye out and we'll have more for you soon!