Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2 Api Mapas v2 2013
2 Api Mapas v2 2013
- Android práctico -
En la teoría del curso se explica el uso de la API Google Maps v1. Como esta
versión dejará de estar activa a lo largo de 2013, el objeto de este documento
es describir el uso de la nueva API v2.
Esta nueva versión presenta muchas novedades interesantes, entre las que
cabe destacar:
-1-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
-2-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
Google Maps v2, hay que solicitar una clave asociada a este certificado de
depuración. Veamos cómo se pide.
Lo primero que debemos hacer es acceder con el navegador a esta página web
(es la Consola web de gestión de APIs de Google):
https://code.google.com/apis/console/
-3-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
Finalmente, para obtener la clave de uso de esta API debemos hacer clic en la
opción “API Access” que aparece en el menú de la izquierda:
-4-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
Para obtener la clave SHA1 que solicita la página, en primer lugar, hay que
localizar el fichero donde se almacena el certificado de depuración
"debug.keystore". Podemos conocer la ruta de este fichero accediendo a las
preferencias de Eclipse, sección "Android", apartado "Build":
-5-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
-6-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
-7-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
IMPORTANTE
-8-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
Para incluir un mapa de Google Maps en una aplicación Android hay que
indicar la clave de uso de Google Maps v2 en el atributo android:value del
archivo AndroidManifest.xml del proyecto, tal y como se muestra a
continuación:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" android:allowBackup="false">
<permission
android:name="es.mentor.unidad8.eje2.mapas.v2.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission
android:name="es.mentor.unidad8.eje2.mapas.v2.permission.MAPS_RECEIVE"
/>
-9-
Curso de Iniciación a Android: Unidad 8
- Android práctico -
<uses-permission
android:name="com.google.android.providers.gsf.permission.READ_GSERVIC
ES"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Por último, dado que la API v2 de Google Maps Android utiliza OpenGL ES
versión 2, debemos especificar también dicho requisito en el fichero
AndroidManifest añadiendo un nuevo elemento <uses-feature>:
<uses-feature android:glEsVersion="0x00020000"
android:required="true"/>
- 10 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
- 11 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
- 12 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
Nota: las versiones más recientes de ADT de Eclipse incluyen por defecto esta
librería en nuestros proyectos.
Esto nos permite, entre otras cosas, añadir uno o varios mapas a cualquier
actividad contando por supuesto con todas las ventajas del uso de la clase
Fragment.
- 13 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
Los Fragments son trozos de una Activity, podemos hacer una similitud con
los “paneles” en la programación visual. Además, pueden ejecutar código y son
reutilizables. Es decir, podemos utilizar un Fragment en distintos sitios de una
misma aplicación.
Son útiles en las tabletas y los teléfonos porque los Fragments permiten, por
ejemplo, en el caso de que tengamos una tableta mostrar una Activity con 2
fragments (como una lista de datos y el detalle del dato seleccionado al lado).
Por otra parte, en el caso de un teléfono podemos mostrar 2 Activities
separadas cada una con su propio Fragment (una pantalla tiene la lista y
haciendo clic en un registro se abre otra pantalla con el detalle). Veamos el
esquema de las interfaces de usuario a continuación:
- 14 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Obtenemos una referencia a las Vistas de la Actividad
// Obtenemos la referencia al mapa
// En Android 3.0 a superior podemos usar el método
// getFragmentManager()en lugar de getSupportFragmentManager
// y SupportMapFragment en lugar de MapFragment.
mapa = ((SupportMapFragment)getSupportFragmentManager().
findFragmentById(R.id.mapa)).getMap();
// Botones de la aplicación
sateliteBtn = (Button)findViewById(R.id.SateliteBtn);
irBtn = (Button)findViewById(R.id.IrBtn);
animarBtn = (Button)findViewById(R.id.AnimarBtn);
posicionBtn = (Button)findViewById(R.id.PosicionBtn);
- 15 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
• MAP_TYPE_NORMAL
• MAP_TYPE_HYBRID
• MAP_TYPE_SATELLITE
• MAP_TYPE_TERRAIN
- 16 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
Esta nueva versión de la API da más libertad que la anterior versión a la hora
de cambiar el centro del mapa, ya que podemos mover libremente el punto de
vista (o Cámara, como lo denomina Android) por un espacio en 3 dimensiones
(3D). Por lo tanto, ya no sólo debemos hablar de latitud-longitud (target) y zoom,
sino también de orientación (bearing) y ángulo de visión (tilt). La manipulación
de estos 2 últimos parámetros permite visualizar edificios en 3D de muchas
ciudades.
El nivel de zoom del mapa contiene un valor entero entre 1 y 21, siendo 21 el
que ofrece mayor nivel de detalle en el mapa.
- 17 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
En este ejemplo hemos incluido un botón irBtn que centra el mapa sobre un
punto determinado, aplica un nivel de zoom (12), establece la orientación con el
noreste arriba (45º) y no modifica el punto de vista de la cámara. Si pruebas el
ejemplo del curso, verás que el desplazamiento a la posición y el zoom al nivel
indicados se hacen de forma instantánea sin ningún tipo de animación
mediante el uso del método moveCamera().
- 18 -
Curso de Iniciación a Android: Unidad 8
- Android práctico -
- 19 -