I'm getting excited about Google I/O May 28th & 29th in San Francisco. The reason I'm excited is that many of you will be there too, and it will be a great chance to meet. Google I/O is like the Google Developer Day we had last year, which in turn was based on Google Geo Developer Day, which we had two years ago. This year, there will be a whole track on Maps & Geo, including KML, Maps, and Mapplets. There will, of course, be other tracks, AJAX, APIs & Tools, Social, and Mobile. Both Pamela and I will be there, along with all the Google Geo stars.
The event won’t be limited to just Google APIs and developer tools. There is a lot of knowledge about web development in general at Google, and we’d like to share that expertise so that all applications on the web get better. And of course, we're focusing a lot on Open Source tools, like the new libkml (more about that in a later post).
Over the two days of Google I/O, Google engineers and other leading software developers will share their knowledge in breakout sessions, hands-on Code Labs, and Q&A Fireside Chats. That's your chance to sit down with Google engineers and ask all the questions you've ever wanted to, as well as meet each other.
Visit the Google I/O website to learn more and register. Space is limited, so be sure to make plans to attend now.
And after Google I/O, we'll be doing other developer days all over the world, so if you can't make it to SF, hopefully you can make it to one closer to you.
Valery Hronusov has created a cool visual interface for his Text to Image service. This service allows you to easily create a text image, control its color, add shadow effects, and then place it on directly a map. It outputs to KML, Maps API JavaScript code, or just a plain URL to an image. This is really useful to creating, for instance, road labels or text based ScreenOverlays. All you have to do is copy the output into your own code. The interface is pretty simple:

Here's a sample of the KML output:
<GroundOverlay>
...
<Icon>
<href>http://text2image.ning.com/TextToImage.php?text=San+Francisco%2C+here+we+come%21&LabelType=2&FontSize=24&casing=asis&alignment=1&font=arial&fontStyle=bold&LabelLocation=topleft&dX=11&dY=0&FontColor=00ff00f9&ShadowColor=00000000&depth=3&effect=0&LabelHeight=35&LabelWidth=438&IconHeight=18&IconName=http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png</href>
</Icon>
Here's a sample of the JavaScript code it creates:
var pointCenter = new GLatLng(37.775196,-122.419204);
var map = new GMap2(document.getElementById("map"));
map.setCenter(pointCenter, 10);
var pointSW = new GLatLng(37.741743,-122.470044);
var pointNE = new GLatLng(37.786659,-122.272387);
var groundOverlay = new GGroundOverlay(
"http://text2image.ning.com/TextToImage.php?text=San+Francisco%2C+here+we+come%21&LabelType=2&FontSize=24&casing=asis&alignment=1&font=arial&fontStyle=bold&LabelLocation=topleft&dX=11&dY=0&FontColor=00ff00f9&ShadowColor=00000000&depth=3&effect=0&LabelHeight=35&LabelWidth=438&IconHeight=18&IconName=http://maps.google.com/mapfiles/kml/shapes/shaded_dot.png",
new GLatLngBounds(pointSW, pointNE));
map.addOverlay(groundOverlay);
And here's what it looks like:
The Google Geo APIs are all about building powerful tools to share geo information with the world. We've been really interested in seeing the way that KML has been used all across the web to express geographic content, and today we're very excited to announce that the Open Geospatial Consortium has announced its acceptance of KML 2.2 as an official OGC Standard. That means that KML is not just a Google Earth standard, it's not even just a Google standard. It is now an official standard for presenting geographic data. Read more about this great news on the LatLong blog.
The Google Geo APIs are all about building powerful tools to share geo information with the world. We've been really interested in seeing the way that KML has been used all across the web to express geographic content, and today we're very excited to announce that the Open Geospatial Consortium has announced its acceptance of KML 2.2 as an official OGC Standard. That means that KML is not just a Google Earth standard, it's not even just a Google standard. It is now an official standard for presenting geographic data. Read more about this great news on the LatLong blog.
Google Developer Days 2008, a set of one-day developer events, are back and will take place in locations around the world. We've designed these events for developers with strong coding backgrounds, so that we can discuss our APIs, developer tools and applications.
We'll host Google Developer Days in these locations:
At Google Developer Day, our Maps and KML engineers will share their inside knowledge on our developer tools and APIs, including the Google Maps API and KML. In many locations we'll do deep dives into code and conduct hands-on codelabs. If you come to Yokohama and Mexico City, say hi to me and Pamela Fox.
We've posted detailed information for our early dates and will be adding more information for other locations soon. If you're a developer, we encourage you to sign-up for a Google Developer Day at a nearby location. I hope to see you there.
I’m Matt Brown, a kml developer and designer at concept3D in Boulder, Colorado.
Google Earth has provided a new group of developers with the opportunity to build virtual ‘geowebsites’ specific to vertical markets. Armageddon Pills, a travel book by John Higham, combines this power of Google Earth and a printed book to illustrate the tale of one family’s journey around the globe in 52 weeks.
After creating numerous kml files, he asked us (concept3d) to create a browser look and feel while in Google Earth. We attempted to simplify the Google Earth experience for a broader audience, focusing on its on-screen and balloon navigation systems.
When opening the file, you will find a main menu, or in this case the table of contents, of on-screen buttons. This menu is broken down into chapter groupings that contain sub-menus of icons related to the book. This allows the reader to find ‘where they are’ in the book, and gives them the ability to ‘read’ the kml from start to finish. Each balloon along the traveled path offers an interesting snippet and sometimes a photo or video associated with their locations. Navigation arrows were added to each balloon to allow the information to be chronologically documented and experienced by the end user, and a “home” button to get back to the main menu. Additionally, there are “menu” placemarks scattered around the globe that will help you find the main menu if you are lost in space.
Google has released version 0.2 of libkml, an open source library for serializing and deserializing KML files. libkml now uses a memory management scheme based on "smart pointers", and has deprecated the use of SCons. On Linux and Mac OS X it now use the traditional automake, and on Windows Microsoft Visual Studio. The "smart pointer" scheme presently restricts support for some alternate language bindings, so libkml 0.2 can only be called from C++, Java, and Python. Version 0.1 also supported PHP, Perl, and Ruby, and is still available in the subversion repository if you're interested. We plan on restoring the those bindings as soon as we can.
Check out the User Guide, and particularly the future development list.
Here's an example of what the code looks like:// createkml.cc // This program uses the KmlFactory to create a Point Placemark and // prints the resultant KML on standard output. #include#include #include "kml/dom.h" // libkml types are in the kmldom namespace using kmldom::CoordinatesPtr; using kmldom::KmlPtr; using kmldom::KmlFactory; using kmldom::PlacemarkPtr; using kmldom::PointPtr; int main() { // Get the factory singleton to create KML elements. KmlFactory* factory = KmlFactory::GetFactory(); // Create . CoordinatesPtr coordinates = factory->CreateCoordinates(); // Create -122.0816695,37.42052549 coordinates->add_point2(-122.0816695,37.42052549); // Create and give it . PointPtr point = factory->CreatePoint(); point->set_coordinates(coordinates); // Create and give it a and the . PlacemarkPtr placemark = factory->CreatePlacemark(); placemark->set_name("Cool Statue"); placemark->set_geometry(point); // Create and give it . KmlPtr kml = factory->CreateKml(); kml->set_feature(placemark); // Serialize to XML std::string xml = kmldom::SerializePretty(kml); // Print to stdout std::cout < < xml; }
The engineers who worked on it put a lot of thought into making it fast and light weight. However, it is an alpha release. We really would love to have comments and feedback on it, both in the KML Developer Support forum and in the libkml issue tracker.