maps android

Upload: bluegreen92

Post on 12-Oct-2015

42 views

Category:

Documents


1 download

DESCRIPTION

gdfg

TRANSCRIPT

  • 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);

    }