Google Maps en Android (I)

Una de las herramientas que más me gustó de Google hace ya bastante tiempo fueron sus mapas. Ya en su inicio me sorprendió gratamente, y cada vez más gracias a la posibilidad de hacer tus propios mapas, street view, etc... Uno de los motivos que me hizo decantarme por un móvil Android fue en gran medida la integración de esta herramienta en los dispositivos. Creo que es muy necesario una herramienta así para móviles y tablets.


Son muchas las aplicaciones que hacen uso de la api de Google Maps para enriquecer la experiencia de usuario, y la verdad es que no es muy difícil implementar mapas en nuestra aplicación. Hoy veremos como empezar con ellos.

Vamos a empezar por crear un nuevo proyecto, los pasos son los mismo de siempre, salvo que a la hora de elegir la versión mínima de Android, vamos a seleccionar una con las librerías de google maps. En la imagen siguiente selecciono la versión 2.2:




Una vez creado el proyecto vamos a revisar el archivo AndroidManifiest.xml para darle a la aplicación permisos para acceder a internet.


<uses-permission android:name="android.permission.INTERNET" />


El siguiente paso es obtener una clave para poder utilizar la api de Google Maps, tal como lo haríamos si quisiéramos utilizar la api en una web. Para ello necesitamos saber donde está el certificado genérico que se utiliza para firmar la aplicación cuando estamos haciendo pruebas. Cuando vayáis a firmar definitivamente la aplicación para subirla al Market o distribuirla deberéis volver a crear vuestra clave.



La ruta del certificado genérico podéis saberla desde Eclipse. En Window -> Preferences -> Android -> Build, en la casilla Default Debug Keystore. Ahora desde la línea de comandos vamos a obtener el código necesario para obtener nuestra clave mediante el programa keytool:


$ keytool -list -keystore ruta_de_vuestro_certificado.keystore


Os dará un código o huella digital de certificado (MD5), lo copiamos y vamos a esta página de Google: http://code.google.com/intl/es-ES/android/maps-api-signup.html La página es muy sencilla, introducimos el código, aceptamos las condiciones y generamos la clave. La copiamos y volvemos a nuestra aplicación en Eclipse.

En el proyecto que creamos antes, abrimos la Activity que se crea de inicio. Para las activitys que llevan mapas la clase debe extender de MapActivity en vez de Activity. Así que si no es así simplemente cambiamos Activity por MapActivity. El editor nos avisará que existe un error y que debemos implementar algún método, con la ayuda de Eclipse y la ayuda contextual autocompletamos.

En el layout que utiliza nuestra activity vamos a añadir el siguiente código:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"> 
<com.google.android.maps.MapView
    android:id="@+id/map"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:apiKey="AQUI LA CLAVE"
    android:clickable="true" /> 
</LinearLayout>


El código del layout es muy simple, unicamente tenemos un LinearLayout y dentro de este un control MapView que será donde se pinte el mapa de Google Maps. Volviendo al código de nuestra activity vamos a inicializar el mapa con el siguiente código.


public class HelloWorldMap extends MapActivity {
 
    private MapView map = null;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        map = (MapView)findViewById(R.id.map);
 
        map.setBuiltInZoomControls(true);
    }
 
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}


El código es muy sencillo, simplemente inicializamos el MapView y mostramos los controles de zoom.

Hasta aquí la primera parte dedicada a los mapas de Google Maps. Estos mapas tienen bastante funcionalidades y se les puede llegar a sacar a bastante provecho como añadir marcadores, bocadillos con información o incluso dibujar rutas. Esto y más lo iremos viendo en próximos artículos.

Comments are closed.