Monday, February 2, 2009

Ocean, Time Machine, and Touring: New KML Extensions for Google Earth 5.0

You've probably already read about this week's release of Google Earth 5.0 and its exciting new features, including Historical Imagery, Touring, Ocean, and Mars. As is usually the case for new features in Earth, we wanted to add representations for some of them to KML. In the past this was done by simply adding new elements to the KML specification. But that's no longer an option for us, since KML is no longer controlled by Google, having been released as an open standard by the Open Geospatial Consortium.

So what's an application provider to do? Fortunately, both Google and the OGC had the foresight to anticipate that innovation would continue to drive the standard forward, so OGC KML includes a standardized mechanism that enables any group to extend KML within their own XML namespace. Google Earth 5.0 uses this extension mechanism to add to KML in a standards-compliant way. We've also added some new documentation to guide you in understanding these new KML constructs:

  • First, something mentioned no where else, Google Earth now supports close to the full range of HTML and JavaScript in the description balloon! This is something that developers have been asking for, and we were able to change the HTML rendering engine to include it. For more details, check out the KML Reference for the description element.
  • We added a new Developer Guide article on Touring. The KML representation of touring is much more expressive than the simple record button in Google Earth -- KML tour authors have very precise control over the camera, the time slider, and even 3D object animation.
  • We added another Developer Guide article on altitudeMode, which explains among other things the new ability to place Features below the water surface.
  • We've updated the Time and Animation article to take into account touring and time machine. In particular, KML authors can now control the time slider, both inside and outside of a tour.
  • We updated our KML reference to include entries on all the of the new extension elements. The new elements are carefully called out in the documentation as being part of Google's KML extension namespace, to distinguish them from the core OGC KML elements.
  • And finally, we updated libkml to version 0.9. libkml is a powerful open source library for use with applications that want to parse, generate and operate on KML. The new version provides support for the extensions, as well as Update/Delete.

For those who are interested in precise XML validation of the new elements, please see Google's new KML 2.2 extensions XSD, which is the formal standards-compliant description of their syntax.

As always, you can find out more information or ask questions in the KML Developer Forum.