diff --git a/docs/html/guide/topics/location/geo/mapkey.jd b/docs/html/guide/topics/location/geo/mapkey.jd
deleted file mode 100644
index 9aa824c..0000000
--- a/docs/html/guide/topics/location/geo/mapkey.jd
+++ /dev/null
@@ -1,210 +0,0 @@
-page.title=Obtaining a Maps API Key
-@jd:body
-
-<div class="sidebox"><p>To register for a Maps API Key, read this document and then go to the <a href="http://code.google.com/android/maps-api-signup.html">Android Maps API Key Signup</a> page.</p>
-
-</div>
-
-<p>com.google.android.maps.MapView is a very useful class that lets you easily integrate Google Maps into your application. It provides built-in map downloading, rendering, and caching of Maps tiles, as well as a variety of display options and controls. It provides a wrapper around the Google Maps API that lets your application request and manipulate Google Maps data through class methods, and it lets you work with Maps data as you would other types of Views. </p>
-
-<p>Because MapView gives you access to Google Maps data, you need to register with the Google Maps service and agree to the applicable Terms of Service before your MapView will be able to obtain data from Google Maps. This will apply whether you are developing your application on the emulator or preparing your application for deployment to mobile devices. </p>
-
-<p>Registering for a Maps API Key is simple, free, and has two parts: </p>
-
-<ol>
-<li>Registering the MD5 fingerprint of the certificate that you will use to sign your application. The Maps registration service then provides you a Maps API Key that is associated with your application's signer certificate. </li>
-<li>Adding a reference to the Maps API Key in each MapView, whether declared in XML or instantiated directly from code. You can use the same Maps API Key for any MapView in any Android application, provided that the application is signed with the certificate whose fingerprint you registered with the service. </li>
-</ol>
-
-<p>During registration, you also need to agree to the Maps API Terms of Service, which describe how your application can use the Maps data. In general, the terms of service are permissive and place few restrictions on how you can use the data. For example, the terms allow you to build "friend finder" type applications. </p>
-
-<p>The sections below describe how to obtain your Maps API Key and how to reference it from your MapView elements. </p>
-
-<ul>
-<li><a href="#overview">Overview</a></li>
-<li><a href="#getfingerprint">Getting the MD5 Fingerprint of Your Signing Certificate</a></li>
-<li><a href="#getdebugfingerprint">Getting the MD5 Fingerprint of the SDK Debug Certificate</a></li>
-<li><a href="#registering">Registering the Certificate Fingerprint with the Google Maps Service</a></li>
-<li><a href="#addingkey">Adding the Maps API Key to your Application</a></li>
-<li><a href="#finalsteps">Final Steps to Enable MapView Elements</a></li>
-</ul>
-
-<h2 id="overview">Overview</h2>
-
-<p>MapView objects are views that display Maps tiles downloaded from the Google Maps service. To ensure that applications use Maps data in an appropriate manner, the Google Maps service requires application developers to register with the service, agreeing to the Terms of Service and supplying an MD5 fingerprint of the certificate(s) that they will use to sign applications. For each registered certificate fingerprint, the service then provides the developer with a Maps API Key &mdash; an alphanumeric string that uniquely identifies the certificate and developer registered with the service.  </p>
-
-<p>The Google Maps service also requires that each MapView identify itself to the service using a Maps API Key. Before providing Maps tiles to a MapView, the service checks the Maps API Key supplied by the MapView to ensure that it:</p>
-<ul>
-<li>References a certificate/developer registered with the service, and </li>
-<li>References a certificate that matches the certificate with which the application (containing the MapView) was signed. </li>
-</ul>
-
-<p>Unless both conditions are met, the service does not provide Maps tiles to the MapView. </p>
-
-<p>Each MapView object in your application must reference a Maps API Key. Since the Key is associated with a certificate, all Mapview elements in an application should reference the same Key. Going a step further, all MapView elements in all applications that you sign with the same certificate should reference the same Key. </p>
-
-<p>On the other hand, you can register for multiple Maps API Keys, each being associated with a specific certificate. You would want to do this if, for example, you were developing several independent applications that you will sign using different certificates. In this case, note that all MapView elements in a given application can reference the same Maps API Key, but <em>must</em> reference the Key that is associated with the certificate used to sign the application. </p>
-
-<p>Because MapView elements must refer to a Maps API Key, you need to register your certificate and receive a Key before you can make use of MapView elements in your application. To make it easier for you to get started using MapView elements, you are welcome to register the debug certificate generated by the SDK tools and receive a temporary Maps API Key. The details of how to do that are given below. </p>
-
-<p>When you are preparing to release your application, however, note that you <em>must</em> sign your application with a suitable cryptographic key, rather than the SDK debug key. That means that you will also need to register your application's release certificate with the Google Maps service. After you've done so, you will receive a new Maps API Key that is uniquely associated with your release certificate. To enable the MapView elements in your application to work after release, you must remember to change the Maps API Key for all MapViews in your application so that they refer to the Key associated with your release certificate (rather than your debug certificate). </p>
-
-<p>To summarize, the important points to understand about MapViews and the Maps API Key are: </p>
-
-<ul>
-<li>To display Maps data in a MapView, you need to register for a Maps API Key</li>
-<li>Each Maps API Key is uniquely associated with a specific certificate, based on an MD5 fingerprint of the certificate </li>
-<li>Each MapView must reference a Maps API Key, and the Key referenced must be registered to the certificate used to sign the application</li>
-<li>All MapView elements in an application can reference the same Maps API Key</li>
-<li>You can register multiple certificates under your developer identity</li>
-<li>You can get a temporary Maps API Key based on your debug certificate, but before you publish your application, you must register for a new Key based on your release certificate and update references in your MapViews accordingly</li>
-</ul>
-
-<h2 id="getfingerprint">Getting the MD5 Fingerprint of Your Signing Certificate</h2>
-
-<div class="sidebox">
-For more information about using Keytool and Jarsigner to sign your application, see <a href="{@docRoot}guide/publishing/app-signing.html">Signing Your Applications</a>.
-</div>
-
-<p>To register for a Maps API Key, you need to provide an MD5 fingerprint of the certificate that you will use to sign your application. </p>
-
-<p>Before you visit the registration page, use Keytool to generate the fingerprint of the appropriate certificate. 
-
-<p>First, determine which key you will use to sign your application at release and make sure of the path to the keystore that contains it.</p>
-
-<p>Next, run Keytool with the <code>-list</code> option, against the target keystore and key alias. The table below lists the options you should use.</p>
-
-<table>
-<tr>
-<th>Keytool Option</th>
-<th>Description</th>
-</tr>
-<tr>
-<td><code>-list</code></td><td>Print an MD5 fingerprint of a certificate.</td>
-</tr>
-<tr>
-<td><code>-keystore&nbsp;&lt;keystore-name&gt;.keystore</code></td><td>The name of the keystore containing the target key.</td>
-</tr>
-<tr>
-<td><code>-storepass &lt;password&gt;</code></td><td><p>A password for the
-keystore.</p><p>As a security precaution, do not include this option 
-in your command line unless you are working at a secure computer.
-If not supplied, Keytool prompts you to enter the password. In this 
-way, your password is not stored in your shell history.</p></td>
-</tr>
-<tr>
-<td><code>-alias &lt;alias_name&gt;</code></td><td>The alias for the key for which to generate the MD5 certificate fingerprint.</td>
-</tr>
-<tr>
-<td><code>-keypass &lt;password&gt;</code></td><td><p>The password for the key.</p>
-<p>As a security precaution, do not include this option 
-in your command line unless you are working at a secure computer.
-If not supplied, Keytool prompts you to enter the password. In this 
-way, your password is not stored in your shell history.</p></td>
-</tr>
-</table>
-
-<p>Here's an example of a Keytool command that generates an MD5 certificate fingerprint for the key <code>alias_name</code> in the keystore <code>my-release-key.keystore</code>:</p>
-
-<pre>$ keytool -list -alias alias_name -keystore my-release-key.keystore</pre>
-
-<p>Keytool will prompt you to enter passwords for the keystore and key. As output of the command, Keytool prints the fingerprint to the shell. For example:</p>
-
-<pre>Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98</pre>
-
-<p>Note that, if you happen to forget your Maps API Key, you can repeat the process described above and register the fingerprint again. The server will give you the same key for the specified certificate fingerprint.</p>
-
-<p>Once you have the fingerprint, you can go to the Maps API registration site, described next.</p>
-
-<h2 id="getdebugfingerprint">Getting the MD5 Fingerprint of the SDK Debug Certificate</h2>
-
-<p>While you are developing and debugging your application, you will likely be
-sigining your application in debug mode &mdash; that is, the SDK build tools
-will automatically sign your application using the debug certificate. To let
-your MapView elements properly display Maps data during this period, you should
-obtain a temporary Maps API Key registered to the debug certificate. To do so,
-you first need to get the MD5 fingerprint of the debug certificate. When
-you are ready to release your application, you must register your release
-certificate with the Google Maps service and obtain a new Maps API Key. You must
-then change the MapView elements in your application to reference the new API
-key. </p>
-
-<p>To generate an MD5 fingerprint of the debug certificate, first locate the debug keystore. The location at which the SDK tools create the default debug keystore varies by platform: </p>
-
-<ul>
-<li>Windows Vista: <code>C:\Users\&lt;user&gt;\AppData\Local\Android\debug.keystore</code></li>
-<li>Windows XP: <code>C:\Documents and Settings\&lt;user&gt;\Local Settings\Application&nbsp;Data\Android\debug.keystore</code></li>
-<li>OS X and Linux: <code>~/.android/debug.keystore</code></li>
-</ul>
-
-<p>If you are using Eclipse/ADT and are unsure where the debug keystore is located, you can select <strong>Windows</strong> &gt; <strong>Prefs</strong> &gt; <strong>Android</strong> &gt; <strong>Build</strong> to check the full path, which you can then paste into a file explorer to locate the directory containing the keystore.</p>
-
-<p>Once you have located the keystore, use this Keytool command to get the MD5 fingerprint of the debug certificate:</p>
-
-<pre>$ keytool -list -alias androiddebugkey \
--keystore &lt;path_to_debug_keystore&gt;.keystore \
--storepass android -keypass android</pre>
-
-<h2 id="registering">Registering the Certificate Fingerprint with the Google Maps Service</h2>
-
-<p>When you are ready to register for a Maps API Key, load this page in a browser: </p>
-
-<p><a href="http://code.google.com/android/maps-api-signup.html">http://code.google.com/android/maps-api-signup.html</a></p>
-
-<p>To register for a Maps API Key, follow these steps:</p>
-
-<ol>
-<li>If you don't have a Google account, use the link on the page to set one up. </li>
-<li>Read the Android Maps API Terms of Service carefully. If you agree to the terms, indicate so using the checkbox on the screen. </li>
-<li>Paste the MD5 certificate fingerprint of the certificate that you are registering into the appropriate form field.</li>
-<li>Click "Generate API Key"</li>
-</ol>
-
-<p>The server will handle your request, associating the fingerprint with your developer identity and generating a unique Maps API Key, then returning a results page that gives you your Key string. </p>
-
-<p>To use the Maps API Key string, copy and paste it into your code as described in the next section.</p>
-
-<h2 id="addingkey">Adding the Maps API Key to your Application</h2>
-
-<p>Once you've registered with the Google Maps service and have obtained a Maps API Key, you must add it to your application's MapView objects, so that the Maps server will allow them to download Maps tiles. </p>
-
-<p>For <code>&lt;MapView&gt;</code> elements declared in XML layout files, add the Maps API Key as the value of a special attribute &mdash; <code>android:apiKey</code>. For example: </li>
-
-<pre>&lt;com.google.android.maps.MapView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:enabled="true"
- android:clickable="true"
- android:apiKey="example_Maps_ApiKey_String"
- /&gt;</pre>
-</li>
-
-<p>For MapView objects instantiated directly from code, pass the Maps API Key string as a parameter in the constructor. For example: </p>
-
-<pre>mMapView = new MapView(this, "example_Maps_ApiKey_String");</pre> 
-
-<p>For more information about MapView, see the MapView class Documentation. </p>
-
-<h2 id="finalsteps">Final Steps to Enable MapView Elements</h2>
-
-<p>If you've added the Maps API Key to the MapViews in your application, here are the final steps to enable the MapView elements to run properly:</p>
-
-<ul>
-<li>Make sure that you added a <code>&lt;uses-library&gt;</code> element referencing the external <code>com.google.android.maps</code> library. The element must be a child of the <code>&lt;application&gt;</code> element in the application's manifest. For example: 
-
-<p><pre>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.package.name"&gt;
- ...
- &lt;application android:name="MyApplication" &gt;
-   &lt;uses-library android:name="com.google.android.maps" /&gt;
- ...
- &lt;/application&gt;</pre></p></li>
-
-<li>Sign your application with the certificate that corresponds to the Maps API Key referenced in your MapView elements. </li>
-
-</ul>
-
-<div class="special"><p>Note that, when you are ready to publish your application, you must get a Maps API Key that is based on the certificate that you will use to sign the application for release. You must then change the Maps API Key string referenced by all of your MapView elements, so that they reference the new Key. </p></div>
-
-
-
diff --git a/docs/html/guide/topics/location/index.jd b/docs/html/guide/topics/location/index.jd
index 53f1d29..d7a8ff2 100644
--- a/docs/html/guide/topics/location/index.jd
+++ b/docs/html/guide/topics/location/index.jd
@@ -1,35 +1,43 @@
-page.title=Location
+page.title=Location and Maps
 @jd:body
 
 <div id="qv-wrapper">
 <div id="qv">
 
+  <h2>Location and Maps quickview</h2>
+  <ul>
+    <li>Android provides a location framework that your application can use to determine the device's location and bearing and register for updates.</li>
+    <li>A Google Maps external library is available that lets you display and manage Maps data.</li>
+  </ul>
   <h2>In this document</h2>
   <ol>
-    <li><a href="#location">android.location</a></li>
-    <li><a href="#maps">com.google.android.maps</a></li>
+    <li><a href="#location">Location Services</a></li>
+    <li><a href="#maps">Google Maps External Library</a></li>
+  </ol>
+  <h2>See Also</h2>
+  <ol>
+    <li><a href="http://code.google.com/android/add-ons/google-apis/index.html">Google APIs add-on download&raquo;</a></li>
   </ol>
 </div>
 </div>
 
-<p>The Android SDK includes two packages that provide Android's primary support
-for building location-based services:
-{@link android.location} and {@link-fixme com.google.android.maps}. 
-Please read on below for a brief introduction to each package.</p>
+<p>Location- and maps-based applications and services are compelling for mobile device users. You can build these capabilities into your applications using the classes of the {@link android.location} package and the Google Maps external library. The sections below provide details. </p>
 
-<h2 id="location">android.location</h2>
+<h2 id="location">Location Services</h2>
 
-<p>This package contains several classes related to
-location services in the Android platform. Most importantly, it introduces the 
-{@link android.location.LocationManager}
-service, which provides an API to determine location and bearing if the
-underlying device (if it supports the service). The LocationManager 
-should <strong>not</strong> be
-instantiated directly; rather, a handle to it should be retrieved via
-{@link android.content.Context#getSystemService(String)
-getSystemService(Context.LOCATION_SERVICE)}.</p>
+<p>Android gives your applications access to the location services supported by
+the device through the classes in the <code>android.location</code> package. The
+central component of the location framework is the 
+{@link android.location.LocationManager} system service, which provides an API to
+determine location and bearing if the underlying device (if it supports location
+capabilities). </p>
 
-<p>Once your application has a handle to the LocationManager, your application
+<p>As with other system services, you do not instantiate a LocationManager directly. 
+Rather, you request an LocationManager instance from the system by calling 
+{@link android.content.Context#getSystemService(String) getSystemService(Context.LOCATION_SERVICE)}. 
+The method returns a handle to a new LocationManager instance.</p>
+
+<p>Once your application has a handle to a LocationManager instance, your application 
 will be able to do three things:</p>
 
 <ul>
@@ -42,20 +50,20 @@
     lat/long.</li>
 </ul>
 
-<p>However, during initial development, you may not have access to real 
-data from a real location provider (Network or GPS). So it may be necessary to
-spoof some data for your application, with some mock location data.</p>
+<p>However, during initial development in the emulator, you may not have access to real 
+data from a real location provider (Network or GPS). In that case, it may be necessary to
+spoof some data for your application using a mock location provider.</p>
 
 <p class="note"><strong>Note:</strong> If you've used mock LocationProviders in
-previous versions of the SDK (m3/m5), you can no longer provide canned LocationProviders
+previous versions of the SDK, you can no longer provide canned LocationProviders
 in the /system/etc/location directory. These directories will be wiped during boot-up.
-Please follow the new procedures below.</p>
-
+Please follow the new procedures outlined below.</p>
 
 <h3>Providing Mock Location Data</h3>
 
 <p>When testing your application on the Android emulator, there are a couple different
-ways to send it some spoof location data: with the DDMS tool or the "geo" command.</p>
+ways to send it some mock location data: you can use the DDMS tool or the "geo" command 
+option in the emulator console.</p>
 
 <h4 id="ddms">Using DDMS</h4>
 <p>With the DDMS tool, you can simulate location data a few different ways:</p>
@@ -67,9 +75,9 @@
 <p>For more information on using DDMS to spoof location data, see the 
 <a href="{@docRoot}guide/developing/tools/ddms.html#emulator-control">Using DDMS guide</a>.
 
-<h4 id="geo">Using the "geo" command</h4>
+<h4 id="geo">Using the "geo" command in the emulator console</h4>
 <p>Launch your application in the Android emulator and open a terminal/console in
-your SDK's <code>/tools</code> directory. Now you can use:</p>
+your SDK's <code>/tools</code> directory. Connect to the emulator console. Now you can use:</p>
 <ul><li><code>geo fix</code> to send a fixed geo-location.
 	<p>This command accepts a longitude and latitude in decimal degrees, and
 	an optional altitude in meters. For example:</p>
@@ -82,28 +90,52 @@
     </li>
 </ul>
 
+<p>For information about how to connect to the emulator console, see 
+<a href="{@docRoot}guide/developing/tools/emulator.html#console">Using the Emulator Console</a>.</p>
 
-<h2 id="maps">com.google.android.maps</h2>
+<h2 id="maps">Google Maps External Library</h2>
 
-<p>This package introduces a number of classes related to
-rendering, controlling, and overlaying customized information on your own
-Google Mapified Activity. The most important of which is the 
-{@link-fixme com.google.android.maps.MapView} class, which automagically draws you a 
-basic Google Map when you add a MapView to your layout. Note that, if you 
-want to do so, then your Activity that handles the 
-MapView must extend {@link-fixme com.google.android.maps.MapActivity}. </p>
+<p>To make it easier for you to add powerful mapping capabilities to your
+application, Google provides a Maps external library that includes the
+com.google.android.maps package. The classes of the com.google.android.maps
+package offer built-in downloading, rendering, and caching of Maps tiles, as
+well as a variety of display options and controls. </p>
 
-<p>Also note that you must obtain a MapView API Key from the Google Maps
-service, before your MapView can load maps data. For more information, see 
-<a href="{@docRoot}guide/topics/location/geo/mapkey.html">Obtaining a MapView API Key</a>.</p>
+<p>The key class in the Maps package is
+<code>com.google.android.maps.MapView</code>, a subclass of 
+{@link android.view.ViewGroup ViewGroup}. A MapView displays a map with data obtained
+from the Google Maps service. When the MapView has focus, it will capture
+keypresses and touch gestures to pan and zoom the map automatically, including
+handling network requests for additional maps tiles. It also provides all of the
+UI elements necessary for users to control the map. Your application can also
+use MapView class methods to control the MapView programmatically and draw a
+number of Overlay types on top of the map. </p>
 
-<p>Once you've created a MapView, you'll probably want to use 
-{@link-fixme com.google.android.maps.MapView#getController()} to 
-retrieve a {@link-fixme com.google.android.maps.MapController}, for controlling and 
-animating the map, and {@link-fixme com.google.android.maps.ItemizedOverlay} to
-draw {@link-fixme com.google.android.maps.Overlay}s and other information on the Map.</p>
+<p>In general, the MapView class provides a wrapper around the Google Maps API
+that lets your application manipulate Google Maps data through class methods,
+and it lets you work with Maps data as you would other types of Views.</p>
 
-<p>This is not a standard package in the Android library. In order to use it, you must add the following node to your Android Manifest file, as a child of the 
-<code>&lt;application></code> element:</p>
-<pre>&lt;uses-library android:name="com.google.android.maps" /></pre>
+<p>The Maps external library is not part of the standard Android library, so it
+may not be present on some compliant Android-powered devices (although it is
+likely to be present on most devices). Similarly, the Maps external library is
+not included in the standard Android library provided in the SDK. So that you
+can develop using the classes of the com.google.android.maps package, the Maps
+external library is made available to you as part of the Google APIs add-on for
+the Android SDK. </p>
+
+<p>To learn more about the Maps external library and how to download and use the
+Google APIs add-on, visit</p>
+
+<p style="margin-left:2em;"><a
+href="http://code.google.com/android/add-ons/google-apis">http://code.google.com/android/add-ons/google-apis</a></p>
+
+<p>For your convenience, the Google APIs add-on is also included in the Android
+SDK. <!-- To learn now to use the Maps external library in your application, see
+[[Using External Libraries]].--></p>
+
+<p class="note"><strong>Note:</strong> In order to display Google Maps data in a
+MapView, you must register with the Google Maps service and obtain a Maps API
+Key. For information about how to get a Maps API Key, see <a
+href="http://code.google.com/android/add-ons/google-apis/mapkey.html">Obtaining
+a Maps API Key</a>.</p>
 
diff --git a/docs/html/guide/tutorials/views/hello-mapview.jd b/docs/html/guide/tutorials/views/hello-mapview.jd
index 976b8ab..30b92c4 100644
--- a/docs/html/guide/tutorials/views/hello-mapview.jd
+++ b/docs/html/guide/tutorials/views/hello-mapview.jd
@@ -3,6 +3,32 @@
 parent.link=index.html
 @jd:body
 
+<div class="special">
+<p>This tutorial requires that you have the Google Maps external library
+installed in your SDK environment. By default the Android 1.5 SDK includes the
+Google APIs add-on, which in turn includes the Maps external library. If you
+don't have the Google APIs SDK add-on, you can download it from this
+location:</p>
+
+<p style="margin-left:2em;"><a
+href="http://code.google.com/android/add-ons/google-apis">http://code.google.com/android/add-ons/google-apis</a></p>
+
+<p>The Google APIs add-on requires Android 1.5 SDK or later release. After
+installing the add-on in your SDK, set your project properties to use the build
+target called "Google APIs Add-on". See the instructions for setting a build
+target in <a href="{@docRoot}guide/developing/eclipse-adt.html">Developing in
+Eclipse with ADT</a> or <a
+href="{@docRoot}guide/developing/other-ide.html">Developing in Other IDEs</a>,
+as appropriate for your environment. </p>
+
+<p>You will also need to use the android tool to set up an AVD that uses the
+Google APIs deployment target. See <a
+href="{@docRoot}guide/developing/tools/avd.html">Android Virtual Devices</a> for
+more information. Once you have set up your environment, you will be able to
+build and run the project described in this tutorial</a></p>
+
+</div>
+
 <p>A MapView allows you to create your own map-viewing Activity. 
 First, we'll create a simple Activity that can view and navigate a map. Then we will add some overlay items.</p>
 
diff --git a/docs/html/index.jd b/docs/html/index.jd
index aea2299..cc609a3 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -128,7 +128,7 @@
       'name':"Maps API Key",
       'img':"maps-large.png",
       'title':"Maps API Key",
-      'desc':"<p>If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.</p><p><a href='{@docRoot}guide/topics/location/geo/mapkey.html'>Learn how to get a Maps API Key</a></p>"
+      'desc':"<p>If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.</p><p><a href='{@docRoot}guide/topics/location/index.html'>Learn more...</a></p>"
     },
 
     'market': {
diff --git a/docs/html/maps-api-signup.html b/docs/html/maps-api-signup.html
deleted file mode 100644
index a604b2a..0000000
--- a/docs/html/maps-api-signup.html
+++ /dev/null
@@ -1,369 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-    
-<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
-<title>Sign Up for the Android Maps API - Android Maps API - Google Code</title>
-<link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet"></link>
-<script src="http://code.google.com//js/codesite.pack.01312008.js" type="text/javascript"></script>
-<link rel="search" type="application/opensearchdescription+xml" title="Google Code" href="/osd.xml" />
-
-<!--[if IE]><link rel="stylesheet" type="text/css" href="/css/iehacks.css" /><![endif]-->
-
-
-<script type="text/javascript">
-//<![CDATA[
-
-function CheckForm(form) {
-  if (!form["agreeTerms"].checked) {
-    alert("To get an Android Maps API key, " + 
-        "you must agree to the API terms by checking the checkbox.");
-  } else {
-    var fp = form["fp"].value;
-    if (fp.length < 32) {
-      alert("Please enter the MD5 fingerprint of the certificate you will use to sign your Android Application.");
-      form["fp"].focus();
-    } else {
-      top.location = "http://www.google.com/glm/mmap/a/api?fp=" +
-                     encodeURIComponent(fp);
-    }
-  }
-  return false;
-}
-
-//]]>
-</script>
-  </head>
-
-  <body class="gc-documentation">
-    <div id="gc-container">
-<a name="top"></a>
-<div id="skipto">
-  
-  
-</div>
-<div id="gc-header">
-  <div id="logo"><a href="/">
-  
-     <img src="/images/cleardot.gif" height="1px" width="1px" alt="Google Code Home Page" id="gc-logo-img"/>
-  
-  </a></div>
-  <div id="search">
-    <div id="searchForm" class="searchForm" style="display:none">
-      <form action="" accept-charset="utf-8" class="gsc-search-box" onsubmit="executeGSearch(document.getElementById('gsearchInput').value); return false;">
-        <table class="gsc-search-box" cellpadding="0" cellspacing="0">
-          <tbody>
-            <tr>
-              <td class="gsc-input">
-                <input id="gsearchInput" type="text" name="q" maxlength="2048" class="gsc-input" autocomplete="off" title="Google Code Search" style="width:345px"/>
-              </td>
-              <td class="gsc-search-button">
-                <div id='cs-searchresults' onclick='event.cancelBubble = true;'></div>
-                <input title="Search" id="gsearchButton" class="gsc-search-button" value="Search" type="submit"/>
-              </td>
-            </tr>
-            <tr>
-              <td class="greytext">e.g. "ajax apis" or "open source"</td>
-            </tr>
-          </tbody>
-        </table>
-      </form>
-    </div> <!-- end searchForm -->
-    <div id="searchForm2" class="searchForm2" style="display:block">
-      <form id="cse" action="http://www.google.com/cse">
-        <input type="hidden" name="cref" value="http://code.google.com/cse/googlecode-context.xml" />
-        <input type="text" name="q" maxlength="2048" autocomplete="off" title="Google Code Search" style="width:345px"/>
-        <input type="submit" name="sa" value="Search" title="Search"/><br/>
-        <div class="greytext">e.g. "ajax apis" or "open source"</div>
-      </form>
-    </div> <!-- end searchForm2 -->
-  </div> <!-- end search -->
-</div> <!-- end gc-header -->
-
-
-<div id="codesiteContent">
-
-<a name="gc-topnav-anchor"></a>
-<div id="gc-topnav">
-  <h1>Android Maps API Key Signup</h1>
-  <ul id="docs" class="gc-topnav-tabs">
-    <li id="home_link">
-      <a href="/android/" title="Android Developer Site">Home</a>
-    </li>
-  
-    <li id="docs_link">
-      <a href="/android/toolbox/apis/lbs.html" title="Android Maps API Documentation">Docs</a>
-    </li>
-  
-    <li>
-      <a href="http://googlegeodevelopers.blogspot.com/" title="Official Google Maps API blog">Maps Blog</a>
-    </li>
-  
-    <li>
-      <a href="http://android-developers.blogspot.com/" title="Official Android Developers Blog">Android Blog</a>
-    </li>
-  </ul>
-</div> <!-- end gc-topnav -->
-
-
-<div>
-<!--
-    <div class="g-section g-tpl-170">
-
-      <a name="gc-toc-anchor"></a>  
-      <div class="g-unit g-first" id="gc-toc">
-        <ul>
-          <li>Add some sidebar content?</li>
-        </ul>
-        <div class="line"></div>
-      </div>
--->
-      
-      <a name="gc-pagecontent-anchor"></a>   
-      <div class="g-unit" id="gc-pagecontent">
-        <h1 class="page_title">Sign Up for the Android Maps API</h1>
-
-<p>The Android Maps API lets you embed
-<a href="/android/reference/com/google/android/maps/MapView.html">Google
-Maps</a> in your own Android applications.  A single Maps API key is
-valid for all applications signed by a single certificate.  See
-this <a href="/android/intro/develop-and-debug.html#signing">documentation
-page</a> for more information about application signing.  To get a
-Maps API key for your certificate, you will need to provide its the certificate's
-fingerprint.  This can be obtained using Keytool.  For example, on
-Linux or Mac OSX, you would examine your debug keystore like this:
-<pre class="prettyprint">$ keytool -list -keystore ~/.android/debug.keystore
-...
-Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
-</pre>
-
-<p>If you use different keys for signing development builds and
-release builds, you will need to obtain a separate Maps API key for
-each certificate.  Each key will only work in applications signed by
-the corresponding certificate.</p>
-
-<p>You also need a <a href="http://www.google.com/accounts/">Google Account</a> 
-to get a Maps API key, and your API key will be connected to your Google Account.</p>
-<br/>
-<div id="termsbox" style="margin-left: 2em">
-<textarea rows="15" cols="70" readonly="readonly" onfocus="this.blur()">
-Android Maps APIs Terms of Service 
-
-Last Updated: October 13, 2008
-
-Thanks for your interest in the Android Maps APIs.  The Android Maps APIs are a collection of services (including, but not limited to, the "com.google.android.maps.MapView" and "android.location.Geocoder" classes) that allow you to include maps, geocoding, and other content from Google and its content providers in your Android applications.  The Android Maps APIs explicitly do not include any driving directions data or local search data that may be owned or licensed by Google.   
-
-
-1.  Your relationship with Google.   
-    1.1. Your use of any of the Android Maps APIs (referred to in this document as the "Maps API(s)" or the "Service") is subject to the terms of a legal agreement between you and Google Inc., whose principal place of business is at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States ("Google").  This legal agreement is referred to as the "Terms."
-    1.2. Unless otherwise agreed in writing with Google, the Terms will include the following:  1) the terms and conditions set forth in this document (the "Maps APIs Terms"); 2) the Legal Notices (http://www.google.com/intl/en-us/help/legalnotices_maps.html); and 3) the Privacy Policy (http://www.google.com/privacy.html).  Before you use the Maps APIs, you should read each of the documents comprising the Terms, and print or save a local copy for your records.  
-    1.3. If you use the Maps APIs in conjunction with any other Google products or services, including any other Google API, (collectively, the "Services"), your agreement with Google will also include the terms applicable to those Services. All of these are referred to as the "Additional Terms."  If Additional Terms apply, they will be accessible to you either within or through your use of that Service.  If there is any contradiction between what any Additional Terms say and what the Maps APIs Terms say, then the Maps APIs Terms will take precedence only as it relates to the Maps APIs, and not to any other Services.
-    1.4. Google reserves the right to make changes to the Terms from time to time. When these changes are made, Google will make a new copy of the Terms available at http://code.google.com/android/maps-api-tos.pdf.  You understand and agree that if you use the Service after the date on which the Terms have changed, Google will treat your use as acceptance of the updated Terms.  If a modification is unacceptable to you, you may terminate the agreement by ceasing use of the Maps APIs as well distribution of any applications that use the Maps APIs.
-    1.5. Definitions
-        (a) "Content" means any content provided through the Service, including map and terrain data, photographic imagery, traffic data, or any other content.
-        (b) "Maps API Implementation" means a software application that uses the Maps APIs to obtain and display Content in conjunction with Your Content, according to these Terms.
-        (c)  "Your Content" means any content that you provide in your Maps API Implementation, including data, images, video, or software.  Your Content does not include the Content.
-
-
-2. Accepting the Terms
-    2.1. In order to use the Maps APIs you must agree to the Terms.  You can accept the Terms by: (a) clicking to accept or agree to the Terms, where this option is made available to you by Google in the user interface for the Service; or (b) using the Maps APIs.  In this case, you understand and agree that Google will treat your use of the Maps APIs as acceptance of the Terms from that point onwards.
-    2.2. You may not use the Maps APIs and may not accept the Terms if you are a person barred from using the Service under the laws of the United States or the country in which you are resident or from which you use the Service. 
-    2.3. You represent that you have full power, capacity and authority to accept these Terms.  If you are accepting on behalf of your employer or another entity, you represent that you have full legal authority to bind your employer or such entity to these Terms.  If you don't have the legal authority to bind, please ensure that an authorized person from your entity consents to and accepts these Terms.
-
-
-3. Privacy and Personal Information
-    3.1. For information about Google's data protection practices, please read Google's Privacy Policy at http://www.google.com/privacy.html.  This policy explains how Google treats your personal information and protects your privacy when you use the Service.
-    3.2. You agree to the use of your data in accordance with Google's Privacy Policy.
-
-
-4. Provision of Service by Google
-    4.1. Google has subsidiaries and affiliated legal entities around the world ("Subsidiaries and Affiliates").  Sometimes, these companies will be providing the Service to you on behalf of Google itself.  You acknowledge and agree that Subsidiaries and Affiliates will be entitled to provide the Service to you.
-    4.2. Google is constantly innovating in order to provide the best possible experience for its users.  You acknowledge and agree that the form and nature of the Service that Google provides may change from time to time without prior notice to you.  As part of this continuing innovation, you acknowledge and agree that Google may stop (temporarily or permanently) providing the Service (or any features within the Service) to you or to users generally at Google's sole discretion, without prior notice to you.  Google reserves the right to refuse or discontinue the Service to anyone, and to disable users' access to the Service, including the Maps APIs or any Content, at any time in its sole discretion with or without notice.
-    4.3. You acknowledge and agree that Google may impose or adjust the limit on the number of transactions you may send or receive through the Service; such fixed upper limits may be set by Google at any time, at Google's discretion.  
-    4.4. Google reserves the right to release subsequent versions of the Maps APIs and to require you to obtain and use the most recent version.
-    4.5. The Service currently does not include advertising in the Content.  However, Google reserves the right to include advertising in the Content provided to you through the Service, but will provide you with sixty (60) days notice prior to the commencement of advertising.  Such notice may be provided on relevant Google websites, including but not limited to theÿGoogle Maps API Blog (http://googlemapsapi.blogspot.com) and theÿGoogle Maps API Groupÿ(http://groups.google.com/group/Google-Maps-API) or such successor URLs that Google may designate from time to time.  During that 60 day period, you may terminate your use of the Service, or provide notice of your refusal to accept advertising in accordance with Google's policies and procedures for providing such notice (which Google may make available from time to time in its sole discretion).
-
-
-5. Use of the Service by You
-    5.1. In order to access the Service, you must have a Google Account.  You agree that any information you give to Google in connection with your Google Account or your continued use of the Service will always be accurate, correct and up to date.
-    5.2. After supplying Google with your account information and the MD5 fingerprint for the certificate used to sign your application, and accepting the Terms, you will be issued an alphanumeric key assigned to you by Google that is uniquely associated with your Google Account and the application certificate.  Your Maps API implementation?s MapView must include this alphanumeric key, either using the "android:apiKey" XML attribute or using the appropriate MapView constructor, as described in the Android MapView documentation (http://code.google.com/android/reference/com/google/android/maps/MapView.html).  
-    5.3. There is currently no limit to the number of keys you may obtain in this manner provided that you use a different certificate for each key you obtain and that you use the same Google Account for every key you obtain.  You agree that each key is only valid for applications signed with the corresponding certificate.  You agree that Google may, in its sole discretion, impose a limit on the number of keys that may be obtained in the future.  You agree that your continued use of any of the keys assigned by Google or distribution of any applications using such keys constitutes your continued agreement to these Terms.
-    5.4. Subject to these Terms, you may develop, display and/or distribute your Maps API Implementation as part of a commercial or non-commercial enterprise. 
-    5.5. Your Maps API Implementation and Your Content must not violate Google's Software Principles available at http://www.google.com/intl/en/corporate/software_principles.html (or such successor URL as Google may provide) and any other policies as Google may develop from time to time and make available to you.
-    5.6. You agree to use the Service only for purposes that are permitted by: (1) the Terms; (2) any applicable third-party contract, law, or regulation; and (3) any applicable policies or guidelines made available by Google.  By way of example, and not as a limitation, you agree that when using the Service, you will not
-        a. defame, abuse, harass, stalk, threaten or otherwise violate the legal rights (such as rights of privacy and publicity) of others;
-        b. upload, post, transmit or otherwise make available any inappropriate, defamatory, obscene, or unlawful content;
-        c. upload, post, transmit or otherwise make available any content that infringes any patent, trademark, copyright, trade secret or other proprietary right of any party, unless you are the owner of the rights, or have the permission of the owner or other legal justification to use such content;
-        d. upload, post, transmit or otherwise make available messages that promote pyramid schemes, chain letters, or disruptive commercial messages or advertisements;
-        e. download any file posted by another that you know, or reasonably should know, cannot legally be distributed in such manner;
-        f. impersonate another person or entity, or falsify or delete any author attributions or labels of the origin or source of Content, or other material;
-        g. restrict or inhibit any other users from using and enjoying the Service;
-        h. remove, obscure, or fail to display the Terms of Use link as presented through the Service or described in the Service documentation;
-        i. remove, alter, or obscure any copyright, trademark or other proprietary rights notices or labels of origin or proprietary rights designation contained in or on Google Services or Content;
-        j. delete, obscure, or in any manner alter any warning, notice (not limited to any copyright or other proprietary rights notice), or link which appears in the Service or the Content
-        k. interfere with or disrupt Google Services or servers or networks connected to Google Services, or disobey any requirements, procedures, policies or regulations of networks connected to Google Services;
-        l. use any robot, spider, site search/retrieval application, or other device to retrieve or index any portion of the Service or Content or collect information about users for any unauthorized purpose;
-        m. display content in your Maps API Implementation that falsely expresses or implies that such content is sponsored or endorsed by Google;
-        n. create user accounts by automated means or under false or fraudulent pretenses, or obtain or attempt to obtain keys for the Service using multiple Google Accounts;
-        o. promote or provide instructional information about illegal activities;
-        p. promote physical harm or injury against any group or individual; or
-        q. transmit any viruses, worms, defects, Trojan horses, or any items of a destructive nature.
-    5.7. You agree that if you use the Service to develop a Maps API Implementation for use by other users, you will protect the privacy and legal rights of those users. If your Maps API Implementation provides you or another party with information about users, including but not limited to personally identifiable information or non-personally identifiable usage information, you must make the users aware that the information will be available to you or another party, and you must provide legally adequate privacy notice and protection for those users. If your application stores information submitted by users, it must do so securely. If your Maps API Implementation allows a user to provide you with Google Account information, you may only use that information to access the user's Google Account when, and for the limited purposes for which, the user has given you permission to do so.
-    5.8. You agree that you are solely responsible for (and that Google has no responsibility to you or to any third party for) any breach of your obligations under the Terms or any applicable law or regulation, and for the consequences (including any loss or damage which Google may suffer) of any such breach.
-
-
-6. Google?s Proprietary Rights
-    6.1. Ownership.  You acknowledge and agree that Google (or Google's licensors and their suppliers, as applicable) own all legal right, title and interest in and to the Service and Content, including any intellectual property rights that subsist in the Service and Content (whether those rights happen to be registered or not, and wherever in the world those rights may exist).
-    6.2. Brand Feature License.  For purposes of these Terms, "Brand Features" will mean the trade names, trademarks, service marks, logos, domain names, and other distinctive brand features of each party, respectively, as secured by such party from time to time.  Google grants to you a nontransferable, nonsublicenseable, nonexclusive license during the Term to display Google's Brand Features for the purpose of promoting or advertising that you use the Service in accordance with this Section 6.2 and for the purpose of fulfilling your obligations under Section 6.5 below.  You grant to Google a nontransferable, nonexclusive license during the Term to use Your Brand Features to advertise that you are using the Service.  In using Google Brand Features, you will not:
-        a. display a Google Brand Feature in any manner that implies a relationship or affiliation with, sponsorship, or endorsement by Google, other than your use of the Service, or that can be reasonably interpreted to suggest editorial content has been authored by, or represents the views or opinions of Google or Google personnel;
-        b. use Google Brand Features to disparage Google, its products or Services;
-        c. display a Google Brand Feature on your site if it contains or displays adult content or promotes illegal activities, gambling, or the sale of tobacco or alcohol to persons under twenty-one (21) years of age;
-        d. have the Google logo as the largest logo in your application (except as displayed in the map image itself);
-        e. display a Google Brand Feature as the most prominent element in any part of your application;
-        f. display a Google Brand Feature in a manner that is misleading, defamatory, infringing, libelous, disparaging, obscene or otherwise objectionable to Google;
-        g. display a Google Brand Feature on a site that violates any law or regulation; or
-        h. remove, distort or alter any element of a Google Brand Feature (this includes squeezing, stretching, inverting, discoloring, etc.).
-    6.3. You understand and agree that Google has the sole discretion to determine whether your use of Google brand features is in accordance with the above restrictions.
-    6.4. Except as set forth in this Section 6, nothing in the Terms will grant or will be deemed to grant to one party any right, title or interest in or to the other party's Brand Features.  All use by you of Google's Brand Features (including any goodwill associated therewith) will inure to the benefit of Google.  At no time during or after the Term will you challenge or assist others to challenge the Brand Features of Google (except to the extent such restriction is prohibited by law) or the registration thereof by Google, nor will you attempt to register any Brand Features (including domain names) that are confusingly similar in any way (including but not limited to, sound, appearance and spelling) to those of Google.
-    6.5.  You agree that you will not remove, obscure, or alter any proprietary rights notices (including copyright and trademark notices, Terms of Use links, or Brand Features) that may be affixed to or provided through the Service.  Where such notices are not affixed within the Service, you agree to display such notices according to the Service documentation if so specified.
-
-
-7. License from Google
-    7.1. Service.  Google gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to use the Service as provided by Google, in the manner permitted by the Terms.  
-    7.2. Content.  Google gives you a personal, worldwide, royalty-free, non-assignable and non-exclusive license to access, use, publicly perform and publicly display the Content in your Maps API Implementation, as the Content is provided in the Service, and in the manner permitted by the Terms.  Specifically, you understand the following:
-        a.  Content, not limited to map data, traffic, and directions, is provided for planning purposes only.  You may find that weather conditions, construction projects, closures, or other events may cause road conditions or directions to differ from the results depicted in the Content.  You should exercise judgment in your use of the Content.
-        b.  Certain Content is provided under license from third parties (http://www.google.com/intl/en_us/help/legalnotices_maps.html), including Tele Atlas B.V. ("Tele Atlas"), and is subject to copyright and other intellectual property rights owned by or licensed to Tele Atlas and/or such third parties. You may be held liable for any unauthorized copying or disclosure of this content.  Your use of Tele Atlas map data is subject to additional restrictions located in the Legal Notices (http://www.google.com/intl/en_us/help/legalnotices_maps.html) page.
-    7.3. In addition to the license granted here, you may use certain Content according to the terms set forth in our Permission Guidelines for Google Maps and Google Earth (http://www.google.com/permissions/geoguidelines.html).
-    7.4. U.S. Government Restricted Rights.  If the Service is being used or accessed by or on behalf of the United States government, such use is subject to additional terms located in the "Government End Users" section of our Legal Notices (http://www.google.com/intl/en_us/help/legalnotices_maps.html) page.  
-    7.5. Google reserves the sole right and discretion to determine whether your use of the Service and Content is in conformance with these Terms.
-
-
-8. License Restrictions.  Except as expressly permitted under the Terms, or unless you have received prior written authorization from Google (or, as applicable, from the provider of particular Content), the license granted to you in Section 7 is conditioned on your adherence to all of the restrictions in this Section 8.  Under this Section 8, you must not (nor may you permit anyone else to):
-    8.1.  access or use the Service or any Content through any technology or means other than those provided in the Service, or through other explicitly authorized means Google may designate;
-    8.2.  copy, translate, modify, create a derivative work of, pre-fetch, cache, or publicly display any Content or any part thereof.
-    8.3.  redistribute, sublicense, rent, publish, sell, assign, lease, market, transfer, or otherwise make the Service or Content available to third parties;
-    8.4.  reverse engineer, decompile or otherwise attempt to extract the source code of the Service or any part thereof, unless this is expressly permitted or required by applicable law;
-    8.5.  use the Service in a manner that gives your or any other person access to mass downloads or bulk feeds of any Content, including but not limited to numerical latitude or longitude coordinates;
-    8.6.  delete, obscure, or in any manner alter any warning, notice (including but not limited to any copyright or other proprietary rights notice), or link that appears in the Service or the Content;
-    8.7.  use the Service or Content with any products, systems, or applications for or in connection with (a) real time navigation or route guidance based on position input from a sensor (including but not limited to any visual or audible turn-by-turn route guidance); or (b) any systems or functions for automatic or autonomous control of vehicle behavior; or (c) dispatch, fleet management, business asset tracking, or similar enterprise applications (for avoidance of doubt, you are permitted to use the Service to create Maps API Implementations to track people or assets equipped with a sensor, where the tracking of the people or assets is not critical to the core business or service of the application user.  For example, you are permitted to use the Maps APIs to create "Friend Finder" applications that allow consumers to track the locations of their friends? mobile devices, but you are not permitted to use the Maps APIs to create "Business Asset Tracking" applications that track or locate business or government users? field sales or field service personnel, vehicles or other assets that are critical (not incidental) to the core business or service of the application user);
-    8.8 print more than 5,000 copies of sales collateral materials containing a screenshot with Tele Atlas Content for commercial sales lead generation ("Direct Marketing"); (if you desire (a) to use Tele Atlas Content for Direct Marketing in excess of the above amount, or (b) to incorporate Tele Atlas Content as a core part of printed matter (such as printed maps or guide books) that you redistribute for a fee, you must contact Tele Atlas to obtain a license to do so); or
-    8.9 offer a professional batch geocoding service that uses the Content contained in any Google Services.
-
-
-9. Content License from You
-    9.1. You retain copyright and any other rights you already hold in Your Content.  If you decide to submit or post Your Content to Google, you give Google a perpetual, irrevocable, worldwide, royalty-free, and non-exclusive license to reproduce, adapt, modify, translate, publish, publicly perform, publicly display and distribute Your Content.  This license is solely for the purpose of enabling Google to display, distribute and promote the Service.
-    9.2. You agree that this license includes a right for Google to make such Content available to other companies, organizations or individuals with whom Google has relationships for the provision of syndicated services, and to use such Content in connection with the provision of those services.
-    9.3. You understand that Google, in performing the required technical steps to provide the Service to our users, may (a) transmit or distribute your Content over various public networks and in various media; and (b) make such changes to your Content as are necessary to conform and adapt that Content to the technical requirements of connecting networks, devices, services or media.  You agree that this license will permit Google to take these actions.
-    9.4. You confirm and warrant to Google that you have all the rights, power and authority necessary to grant the above license.
-
-
-10. Your Passwords and Account Security
-    10.1. You agree and understand that you are responsible for maintaining the confidentiality of passwords or developer keys associated with any account you use to access the Service.  Accordingly, you agree that you will be solely responsible to Google for your use of the Service including, but not limited to, activities that occur under your account or developer key.  If you become aware of any unauthorized use of your password or of your account, you agree to notify Google immediately.
-
-
-11. Terminating this Agreement
-    11.1. The Terms will continue to apply until terminated by either you or Google as set out below.
-    11.2. You may terminate your legal agreement with Google by discontinuing your use of the Service at any time, removing the Maps API code from your Maps API Implementation, and ceasing the distribution of any Maps API Implementation that uses the Maps API.  You do not need to specifically inform Google when you stop using the Service.
-    11.3. Google may, at any time, terminate its legal agreement with you at its discretion without prior notice to you.
-    11.4. Nothing in this Section will affect Google's rights regarding provision of the Service under Section 4 of the Terms.
-    11.5. When this legal agreement comes to an end, those Terms that by their nature are intended to continue indefinitely will continue to apply, including but not limited to Sections 6.1, 6.3 and 6.4 (Google?s Proprietary Rights);  11.4 and 11.5 (Terminating this Agreement); 12 (Exclusion of Warranties); 13 (Limitation of Liability); 14 (Indemnity); and 18 (General Legal Terms).
-
-
-12. EXCLUSION OF WARRANTIES
-    12.1. NOTHING IN THESE TERMS, INCLUDING SECTIONS 12 AND 13, WILL EXCLUDE OR LIMIT GOOGLE'S WARRANTY OR LIABILITY FOR LOSSES WHICH MAY NOT BE LAWFULLY EXCLUDED OR LIMITED BY APPLICABLE LAW.  SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR CONDITIONS OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR CERTAIN TYPES OF LOSS OR DAMAGES. ACCORDINGLY, ONLY THE LIMITATIONS THAT ARE LAWFUL IN YOUR JURISDICTION WILL APPLY TO YOU, AND GOOGLE?S LIABILITY WILL BE LIMITED TO THE MAXIMUM EXTENT PERMITTED BY LAW.
-    12.2. YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SERVICE AND THE CONTENT IS AT YOUR SOLE RISK AND THAT THE SERVICE AND THE CONTENT ARE PROVIDED "AS IS" AND "AS AVAILABLE."  IN PARTICULAR, GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS LICENSORS AND THEIR SUPPLIERS, DO NOT REPRESENT OR WARRANT TO YOU THAT:
-        a.  YOUR USE OF THE SERVICE WILL MEET YOUR REQUIREMENTS;
-        b.  YOUR USE OF THE SERVICE WILL BE UNINTERRUPTED, TIMELY, SECURE OR FREE FROM ERROR;
-        c.  ANY INFORMATION OBTAINED BY YOU AS A RESULT OF YOUR USE OF THE SERVICES WILL BE ACCURATE OR RELIABLE; AND
-        d.  THAT DEFECTS IN THE OPERATION OR FUNCTIONALITY OF ANY SOFTWARE PROVIDED TO YOU AS PART OF THE SERVICES WILL BE CORRECTED.
-    12.3. ANY CONTENT OBTAINED THROUGH THE USE OF THE SERVICES IS DONE AT YOUR OWN DISCRETION AND RISK AND YOU WILL BE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR OTHER DEVICE, LOSS OF DATA, OR ANY OTHER DAMAGE OR INJURY THAT RESULTS FROM THE DOWNLOAD OR USE OF ANY SUCH CONTENT.
-    12.4. NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED BY YOU FROM GOOGLE, OR THROUGH OR FROM THE SERVICE OR CONTENT, WILL CREATE ANY WARRANTY NOT EXPRESSLY STATED IN THE TERMS.
-    12.5. GOOGLE, ITS LICENSORS AND THEIR SUPPLIERS FURTHER EXPRESSLY DISCLAIM ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-13. LIMITATION OF LIABILITY
-    13.1. EXCEPT AS EXPRESSLY PROVIDED IN THE INDEMNITY PROVISION (SECTION 14) AND SUBJECT TO SECTION 12.1, YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND GOOGLE?S LICENSORS AND THEIR SUPPLIERS, WILL NOT BE LIABLE TO YOU FOR:
-        a.  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, HOWEVER CAUSED AND UNDER ANY THEORY OF LIABILITY (INCLUDING, BUT NOT BE LIMITED TO, ANY LOSS OF PROFIT (WHETHER INCURRED DIRECTLY OR INDIRECTLY), ANY LOSS OF GOODWILL OR BUSINESS REPUTATION, ANY LOSS OF DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR OTHER INTANGIBLE LOSS);
-        b.  ANY LOSS OR DAMAGE AS A RESULT OF:
-            i.  ANY RELIANCE PLACED BY YOU ON THE COMPLETENESS, ACCURACY OR EXISTENCE OF ANY ADVERTISING, OR AS A RESULT OF ANY RELATIONSHIP OR TRANSACTION BETWEEN YOU AND ANY ADVERTISER OR SPONSOR WHOSE ADVERTISING APPEARS ON THE SERVICES;
-            ii. ANY CHANGES THAT GOOGLE MAY MAKE TO THE SERVICES, OR ANY PERMANENT OR TEMPORARY CESSATION IN THE PROVISION OF THE SERVICES (OR ANY FEATURES WITHIN THE SERVICES);
-            iii.  THE DELETION OF, CORRUPTION OF, OR FAILURE TO STORE, ANY CONTENT AND OTHER COMMUNICATIONS DATA MAINTAINED OR TRANSMITTED BY OR THROUGH YOUR USE OF THE SERVICES;
-            iv. YOUR FAILURE TO PROVIDE GOOGLE WITH ACCURATE ACCOUNT INFORMATION; OR
-            v.  YOUR FAILURE TO KEEP YOUR PASSWORD OR ACCOUNT DETAILS SECURE AND CONFIDENTIAL.
-    13.2. THE LIMITATIONS ON GOOGLE'S LIABILITY TO YOU IN SECTION 13.1 ABOVE WILL APPLY WHETHER OR NOT GOOGLE, ITS AFFILIATES, LICENSORS OR THEIR SUPPLIERS HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES OR DAMAGES.
-
-
-14. Indemnity
-    14.1. You hereby agree to indemnify, defend and hold Google, its strategic partners, officers, directors, agents, affiliates, licensors and their suppliers ("the Indemnified Parties") harmless from and against any claim or liability arising out of: (a) your use of the Maps APIs in breach of the Terms or applicable policies; (b) your Maps API Implementation; (c) any use by users of your Maps API Implementation; (d) any breach of or noncompliance with any representation, warranty or obligation in these Terms or applicable policies; and (e) any claim that your Maps API Implementation or Your Content violates any applicable law, including but not limited to any claim that your Maps API Implementation infringes the rights of a third party.  You will cooperate as fully as reasonably required in the defense of any claim.  Google reserves the right, at its own expense, to assume the exclusive defense and control of any matter subject to indemnification by you.  You acknowledge that damages for improper use of the Maps APIs may be irreparable; therefore, Google is entitled to seek equitable relief, including but not limited to preliminary injunction and injunction, in addition to all other remedies. 
-
-
-15. Copyright Policies
-    15.1. It is Google's policy to respond to notices of alleged copyright infringement that comply with applicable international intellectual property law (including, in the United States, the Digital Millennium Copyright Act) and to terminate the accounts of repeat infringers.  Details of Google's policy can be found at http://www.google.com/igoogle_dmca.html.
-
-
-16. Other Content
-    16.1. The Service may include hyperlinks to other web sites or content or resources.  Google has no control over any web sites or resources that are provided by companies or persons other than Google.  You acknowledge and agree that Google is not responsible for the availability of any such external sites or resources, and does not endorse any advertising, products or other materials on or available from such web sites or resources.
-    16.2. You acknowledge and agree that Google is not liable for any loss or damage that may be incurred by you as a result of the availability of those external sites or resources, or as a result of any reliance placed by you on the completeness, accuracy or existence of any advertising, products, or other materials on, or available from, such web sites or resources.
-
-
-17. Language of the Terms
-    17.1. Where Google has provided you with a translation of the English language version of the Terms, you agree that the translation is provided for your convenience only and that the English language version of the Terms will govern your relationship with Google.
-    17.2. If there is any contradiction between the English language version of the Terms and a translation of the Terms, the English language version will take precedence.
-
-
-18. General Legal Terms
-    18.1. The Terms constitute the whole legal agreement between you and Google and govern your use of the Service and Content, and completely replace and supersede any prior agreements between you and Google, written or oral, in relation to the Service and Content.  The Terms may be assigned by Google and will inure to the benefit of Google, its successors and assigns.
-    18.2. You agree that Google may provide you with notices, including those regarding changes to the Terms, by email, regular mail, or postings on the Service.
-    18.3. You agree that if Google does not exercise or enforce any legal right or remedy contained in the Terms (or that Google has the benefit of under any applicable law), this will not be taken to be a formal waiver of Google's rights and that those rights or remedies will still be available to Google.  Any waiver of any provision of these Terms will be effective only if Google expressly states in a signed writing that it is waiving a specified Term.
-    18.4. If any court of law that has jurisdiction rules that any provision of these Terms is invalid, then that provision will be removed from the Terms without affecting the rest of the Terms.  The remaining provisions of the Terms will continue to be valid and enforceable.
-    18.5. You acknowledge and agree that each member of the group of companies of which Google is the parent will be third party beneficiaries to the Terms and that such other companies will be entitled to directly enforce, and rely upon, any provision of the Terms that confers a benefit on (or rights in favor of) them.  Other than this, no other person or company will be a third party beneficiary to the Terms.
-    18.6. The Terms, and your relationship with Google under the Terms, will be governed by the laws of the State of California, USA, without regard to its conflict of laws provisions.  You and Google agree to submit to the exclusive jurisdiction of the courts located in the County of Santa Clara, California, USA, to resolve any legal matter arising from the Terms.  Notwithstanding this, you agree that Google will be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-</textarea>
-</div>
-
-<form action="signup.html" method="get" onsubmit="return CheckForm(this)">
-  <div class="terms">
-    <table style="width:95%">
-      <tr>
-        <td style="width:1em"><input type="checkbox" name="agreeTerms" value="1"/></td>
-        <td>I have read and agree with the terms and conditions <span class="printable">(<a href="maps-api-tos.pdf">printable version</a>)</span></td>
-      </tr>
-      <tr>
-        <td></td>
-        <td>
-          My certificate's MD5 fingerprint:
-          <input type="text" name="fp" size="47" value=""/>
-        </td>
-      </tr>
-      <tr>
-        <td></td>
-        <td><input type="submit" value="Generate API Key"/></td>
-      </tr>
-    </table>
-  </div>
-</form>
-
-        <!-- end body text -->
-
-   
-      </div><!-- end gc-pagecontent -->
-   </div><!-- end gooey wrapper -->
-
-    </div> <!-- end codesite content -->
-
-<div id="gc-footer" dir="ltr"> 
-  <div class="text">
-    
-    &copy;2008 Google -
-    <a href="/">Code Home</a> -
-    <a href="http://www.google.com/accounts/TOS">Site Terms of Service</a> -
-    <a href="http://www.google.com/privacy.html">Privacy Policy</a> -
-    <a href="/more/">Site Directory</a>
-     <br />
-     <br />
-    <!-- end gc-footer -->
-  </div>
-</div><!-- end gc-containter -->
-  </body>
-</html>
-
diff --git a/docs/html/maps-api-tos.pdf b/docs/html/maps-api-tos.pdf
deleted file mode 100644
index 80c2836..0000000
--- a/docs/html/maps-api-tos.pdf
+++ /dev/null
Binary files differ
