Android: Aplicación con GoogleMaps

Ahora si, luego del post introductorio y el ejemplo de una caja de texto, un botón y un popup vamos a desarrollar algo mas interesante…
Vamos a trabajar en una aplicación sobre GoogleMaps y veremos que va saliendo…

Proyecto


image

Propiedades del proyecto 
Primero debemos crear un nuevo proyecto, similar a los proyectos que venimos creando, con el detalle que en Target elegimos “Google APIs”. para las demás propiedades, en mi caso elegí:
Proyect name: MyGoogleMaps
Application name: My Google Maps
Package: com.neluz.MyGoogleMaps
Activity: MyGoogleMapsActivity

image

El proyecto debería quedarnos algo así.

AndroidManifiest.xml

Como ya vimos, aquí configuramos parte de la aplicación, en este caso queremos decirle que vamos a usar la librería del mapa (línea 8) y que vamos a acceder a internet (línea 20), esto último va a ser necesario para conectarnos al servidor de Google Maps:
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <manifest xmlns:android="http://schemas.android.com/apk/res/android"
   3:       package="com.neluz.MyGoogleMaps"
   4:       android:versionCode="1"
   5:       android:versionName="1.0">
   6:     <application android:icon="@drawable/icon" android:label="@string/app_name">
   7:     
   8:         <uses-library android:name="com.google.android.maps" />
   9:         
  10:         <activity android:name=".MyGoogleMapsActivity"
  11:                   android:label="@string/app_name">
  12:             <intent-filter>
  13:                 <action android:name="android.intent.action.MAIN" />
  14:                 <category android:name="android.intent.category.LAUNCHER" />
  15:             </intent-filter>
  16:         </activity>
  17:  
  18:     </application>
  19:  
  20:     <uses-permission android:name="android.permission.INTERNET" />
  21:     
  22: </manifest> 

Layout

Como ya vimos, el layout de nuestra aplicación la definimos en res/layout/main.xml. En esta oportunidad vamos a poner un mapa como único contenedor:
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <com.google.android.maps.MapView
   3:     xmlns:android="http://schemas.android.com/apk/res/android"
   4:     android:id="@+id/mapview"
   5:     android:layout_width="fill_parent"
   6:     android:layout_height="fill_parent"
   7:     android:clickable="true"
   8:     android:apiKey="Your Maps API Key goes here"
   9: />
En api key donde dice “Your Maps API Key goes here” debemos indicar la llave que necesitaremos para conectarnos a Google Maps, si tenemos un problema con ella la aplicación iniciará pero quedará en blanco el mapa. Sobre este tema vamos a volver mas adelante en este post, primero quiero mostrarles como se ve la aplicación sin esta llave.

MyGoogleMapsActivity

Como también vimos en los post anteriores, la activity es la que contiene la lógica de nuestra UI, por lo tanto aquí vamos a extender la clase com.google.android.maps.MapActivity:
   1: package com.neluz.MyGoogleMaps;
   2:  
   3: import com.google.android.maps.MapActivity;
   4: import android.os.Bundle;
   5:  
   6: public class MyGoogleMapsActivity extends MapActivity {
   7:     /** Called when the activity is first created. */
   8:     @Override
   9:     public void onCreate(Bundle savedInstanceState) {
  10:         super.onCreate(savedInstanceState);
  11:         setContentView(R.layout.main);
  12:     }
  13:  
  14:     @Override
  15:     protected boolean isRouteDisplayed() {
  16:         return false;
  17:     }
  18: }
al extender esta MapActivity en lugar de Activity tenemos que implementar el método: isRouteDisplayed() que por ahora dejamos la implementación por defecto: return false;

Ejecutando sin la llave

Si en este momento ejecutamos la aplicación, deberíamos obtener algo como la imagen de la derecha, es decir, el mapa en blanco. image

Obtener la llave

Primero vamos a ejecutar el comando keytool que podemos encontrar en el JDK de java de la siguiente manera para obtener el fingerprint:
Windows: C:\Documents and Settings\<user>\.android>keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

Linux: ~/.android$ keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android
luego nos dirigimos a Sign Up for the Android Maps API para generar la llave (api key), leemos y aceptamos los términos y condiciones, ingresamos el fingerprint obtenido y presionamos Generarte API Key. Es muy importante destacar que en este caso estamos trabajando con una key que nos va a servir para desarrollo, cuando queramos hacer un release de nuestra aplicación deberemos obtener una key para tal fin. Esta key que obtuvimos la debemos colocar en el archivo res/layout/main.xml donde dice: android:apiKey en lugar de “Your Maps API Key goes here”.

image Con esto, nuestra aplicación debería ya conectarse al servidor de google y bajar los mapas, luciendo como la imagen de la derecha.

Referencias

Google Map View

2 comentarios:

  1. Disculpe porque el google maps de mi aplicacion solo se ve en el emulador de la computadora pero en un android real no se puede ver, solo sale el marcado y el mapa no sale , le agradeceria mucho si me dice por favor.

    ResponderBorrar
  2. Si afirmas que en el emulador corre muy bien tal vez sea el min: sdk version de tu telefono ya que el target de tu app debe ser mayor.

    ResponderBorrar