141 lines
7.0 KiB
Plaintext
141 lines
7.0 KiB
Plaintext
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">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»</a></li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
<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">Location Services</h2>
|
|
|
|
<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>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>
|
|
<li>Query for the list of all LocationProviders known to the
|
|
LocationManager for its last known location.</li>
|
|
<li>Register/unregister for periodic updates of current location from a
|
|
LocationProvider (specified either by Criteria or name).</li>
|
|
<li>Register/unregister for a given Intent to be fired if the device comes
|
|
within a given proximity (specified by radius in meters) of a given
|
|
lat/long.</li>
|
|
</ul>
|
|
|
|
<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, 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 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 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>
|
|
<ul>
|
|
<li>Manually send individual longitude/latitude coordinates to the device.</li>
|
|
<li>Use a GPX file describing a route for playback to the device.</li>
|
|
<li>Use a KML file describing individual placemarks for sequenced playback to the device.</li>
|
|
</ul>
|
|
<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 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. 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>
|
|
<pre>geo fix -121.45356 46.51119 4392</pre>
|
|
</li>
|
|
<li><code>geo nmea</code> to send an NMEA 0183 sentence.
|
|
<p>This command accepts a single NMEA sentence of type '$GPGGA' (fix data) or '$GPRMC' (transit data).
|
|
For example:</p>
|
|
<pre>geo nmea $GPRMC,081836,A,3751.65,S,14507.36,E,000.0,360.0,130998,011.3,E*62</pre>
|
|
</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">Google Maps External Library</h2>
|
|
|
|
<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>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>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>The Maps external library is not part of the standard Android library, so it
|
|
may not be present on some compliant Android-powered 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>
|
|
|