5/21/2018 Maps android
1/25
Maps
Dr. David Janzen
Except as otherwise noted, the content of this presentation is
licensed under the Creative Commons Attribution 2.5 License.
5/21/2018 Maps android
2/25
Maps
Google Maps API is
widely used on the web
The Android SDK
provides support for easily
integrating the Google
Maps API
5/21/2018 Maps android
3/25
Using Google Maps in our apps
Configure
Maps require the Google API as the projectbuild target
Maps require a Map API Key in order to bedeployed
http://code.google.com/android/add-
ons/google-apis/maps-overview.html Code
Create a MapView in a MapActivity
Create Map Overlays
5/21/2018 Maps android
4/25
Add Google API in Eclipsehttp://developer.android.com/sdk/adding-components.html
5/21/2018 Maps android
5/25
Add Google API in Eclipse
Use API 4 for SDK 1.6http://developer.android.com/guide/appendix/api-levels.html
5/21/2018 Maps android
6/25
Add Google API in Eclipse
Set the Google API as the Project Build Target Right-click on the project, select Properties
5/21/2018 Maps android
7/25
Keys
As we learned in lab 1 section 6,https://sites.google.com/site/androidappcourse/labs/lab-1
our apps must be signed in order to deploy them on
a device Eclipse automatically creates a signed debug
keystore that is used when launching our app fromEclipse
In order to deploy our app to the public, we mustcreate a signed keystoreSee http://developer.android.com/guide/publishing/app-
signing.html#ExportWizard
5/21/2018 Maps android
8/25
Find your keystorehttp://code.google.com/android/add-ons/google-apis/mapkey.html
5/21/2018 Maps android
9/25
Find your debug keystorehttp://code.google.com/android/add-ons/google-apis/mapkey.html
5/21/2018 Maps android
10/25
Get your certificate fingerprinthttp://code.google.com/android/add-ons/google-apis/mapkey.html
5/21/2018 Maps android
11/25
Register your certificate with Google
http://code.google.com/android/maps-api-signup.html
5/21/2018 Maps android
12/25
Whats in the legal agreement?
Read the Terms of Service (sections 1-11)
http://code.google.com/android/maps-api-
signup.html
Examples
Maps may include ads in future
Google may limit number of transactions
Cannot use for turn-by-turn directions or
autonomous driving
5/21/2018 Maps android
13/25
Add the Map API Key to your Application
5/21/2018 Maps android
14/25
Configure AndroidManifest.xml
...
5/21/2018 Maps android
15/25
Finally, we can start coding
MapView
Contains a map
via Google Maps API
Map tile retrieval and caching is
all done for you
Includes pan
Includes zoom
use setBuiltInZoomControls(true);
5/21/2018 Maps android
16/25
MapView Modes
MapView
You determine mode
setSatellite(true);
setTraffic(true);
setStreetView(true);
5/21/2018 Maps android
17/25
MapActivity
MapView can only be constructed or
inflated in a MapActivity
public class MyActivity extends MapActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MapView myMap = (MapView)findViewById(R.id.myMap);
myMap.setBuiltInZoomControls();
myMap.setSatellite(true);
5/21/2018 Maps android
18/25
MapController
You can pan and zoom the map
programmatically
MapView myMap = (MapView)findViewById(R.id.myMap);
MapController mapController = myMap.getController();
mapController.setZoom(1); //widest zoom/far away
mapController.setZoom(21); //narrowest zoom/close inmapController.zoomIn(); //one level
mapController.zoomOut(); //one level
5/21/2018 Maps android
19/25
GeoPoint
You can move to a particular point
MapView myMap = (MapView)findViewById(R.id.myMap);MapController mapController = myMap.getController();
Double lat = 37.123456 * 1E6;
Double long = -122.123456 * 1E6;GeoPoint point = new GeoPoint(lat.intValue(), long.intValue());
mapController.setCenter(point); //jump to point
mapController.animateTo(point); //smooth transition to point
5/21/2018 Maps android
20/25
Reverse Geocoding
Find address from longitude/latitude
location = locationManager.getLastKnownLocation(
LocationManager.GPS_PROVIDER);double lat = location.getLatitude();
double lng = location.getLongitude();
Geocoder gc = new Geocoder(this, Locale.getDefault());List addresses = null;
try {
addresses = gc.getFromLocation(lat, lng, 10);
} catch (IOException e) {}
5/21/2018 Maps android
21/25
Forward Geocoding
Find longitude/latitude (and more) from address
Geocoder gc = new Geocoder(this, Locale.US);List addresses = null;
try {
addresses = gc.getFromLocationName(
123 Main St., Newton, Kansas, 10);} catch (IOException e) {}
double lat = addresses.get(0).getLatitude();
String zip = addresses.get(0).getPostalCode();
5/21/2018 Maps android
22/25
Geolocation
Options
GPS, cell network
Wifi-based
Skyhook Wireless
http://www.skyhookwireless.com/developers/
Android_Integration_Manual.php
5/21/2018 Maps android
23/25
Setting up location servicespublic MyActivity() {
criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
};
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider) {
updateWithNewLocation(null);
}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
5/21/2018 Maps android
24/25
@Override
protected void onStart() {
super.onStart();
locationManager = (LocationManager)getSystemService(
Context.LOCATION_SERVICE);
provider = locationManager.getBestProvider(criteria, true);
// or could be LocationManager.GPS_PROVIDER
try {
updateWithNewLocation(locationManager.getLastKnownLocation(provider));
} catch (Exception e) {}
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
}
private void updateWithNewLocation(Location location) {double latitude = 0.0;
double longitude = 0.0;
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
//do something with latitude and longitude (e.g. print or move map there)}
5/21/2018 Maps android
25/25
Turn GPS on and off to save battery
@Override
protected void onPause() {super.onPause();
//stop receiving GPS
locationManager.removeUpdates(locationListener);
}
@Override
protected void onResume() {super.onResume();
//restart receiving GPS
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
}
Top Related