api de google maps

15
Instructor: Rodrigo Iván Fonseca Daza

Upload: david-vanegas

Post on 09-Dec-2015

239 views

Category:

Documents


1 download

DESCRIPTION

Material Android

TRANSCRIPT

Instructor: Rodrigo Iván Fonseca Daza

https://developers.google.com/maps/documentation/android/start#add_the_google_play_services_version_to_your_apps_manifest

Se requiere: ◦ Tener instalado el Android SDK

◦ El Google Play Services SDK

◦ Copiar el folder <android-sdk>/extras/google/google_play_services/libproject/google-play-services_lib/ en la unidad D

Importar google-play-services_lib como «library project»

Crear el proyecto principal ◦ Clic derecho -> Properties

◦ Android -> Libraries

◦ Añadir la librería

Añadir la siguiente línea en el «manifest», dentro del tag <application>: ◦ <meta-data android:name="com.google.android.gms.version"

android:value="@integer/google_play_services_version" />

«ProGuard» se encarga de optimizar el código, comprimirlo, y remover las clases que no se usan para correr la aplicación.

Para evitar que «ProGuard» ignore las clases requeridas por Google Maps API, se añaden las siguientes líneas de código en proguard-project.txt:

-keep class * extends java.util.ListResourceBundle { protected Object[][] getContents(); } -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { public static final *** NULL; } -keepnames @com.google.android.gms.common.annotation.KeepName class * -keepclassmembernames class * { @com.google.android.gms.common.annotation.KeepName *; } -keepnames class * implements android.os.Parcelable { public static final ** CREATOR; }

Requerido para usar el API

Para obtenerlo, se necesita un «SHA-1 fingerprint»

Por defecto, se tiene uno para depuración, en Windows->Preferences

Con esto, en la consola de APIs de Google, se puede generar la llave para el API de Google Maps

La llave se «agrega» en el «manifest»

<meta-data

android:name="com.google.android.maps.v2.API_KEY"

android:value="AIzaSyDljO1HsESWzUQV6jkqP2oE1NM9h-2dKm0" />

En el «manifest», se especifican algunos permisos para el dispositivo:

<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> <!-- The following two permissions are not required to use Google Maps Android API v2, but are recommended. --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Se añade un «fragment» a la interfaz gráfica que carga el mapa de Google:

<?xml version="1.0" encoding="utf-8"?>

<fragment

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/map"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:name="com.google.android.gms.maps.MapFragment"/>

Algunos de los pasos que se hacen aquí son similares a los requeridos para publicar la app en Play Store

El mapa es una instancia de la clase ‘GoogleMap’: private static GoogleMap map;

Para inicializarlo… map =

((MapFragment)getActivity().getFragmentManager().

findFragmentById(R.id.map)).getMap();

Ícono sobre el mapa que indica una posición dada:

// Especificar longitud y latitud del

mapa

LatLng latLng = new LatLng(4.674523,

-74.053362);

//Añadir marcador de prueba

Marker marker = map.addMarker(new

MarkerOptions().position(latLng).title("Marcador de

prueba"));

Se puede manipular el mapa para que automáticamente me muestre un punto «de cerca»

//Acercarse al marcador de prueba

map.animateCamera(CameraUpdateFactory.

newLatLngZoom(latLng, 15));

//Acercarse a dos marcadores

LatLngBounds.Builder builder = new

LatLngBounds.Builder();

builder.include(latLng);

builder.include(latLng2);

LatLngBounds bounds = builder.build();

map.animateCamera(CameraUpdateFactory.

newLatLngBounds(bounds, 500,500, 0));

Líneas en el mapa

Se pueden usar para trazar rutas entre puntos

//Trazar ruta entre puntos

PolylineOptions polylineOptions = new

PolylineOptions().add(latLng)

.add(latLng2);

Polyline polyline =

map.addPolyline(polylineOptions);