Tiro monedas al aire, pero hasta ahora nunca las pude agarrar.

Para poder programar mapas de Google Maps API v2 para Android debemos de hacer algunos pasos para darle permisos a nuestra aplicación y poder usar.

La API v2 de Google Maps se proporciona como parte del SDK de Google Play Services. Será necesario incorporar previamente a nuestro entorno de desarrollo dicho paquete. Haremos esto accediendo desde Eclipse al Android SDK Manager y descargando del apartado de extras el paquete llamado “Google Play Services”.

Instalar Google Play services
Instalar Google Play services

Tras pulsar el botón de Install y aceptar la licencia correspondiente el paquete quedará instalado en nuestro Sistema, concretamente en la ruta: /extras/google/google_play_services/. Es importante acordarse de esta ruta porque la utilizaremos más tarde.
El siguiente paso será obtener una API Key para poder utilizar el servicio de mapas de Google en nuestra aplicación. Entramos a este link.

Una vez que hemos entrado al sitio, tenemos que crear un nuevo proyecto desplegando el menú superior izquierdo y seleccionando la opción «Create…«.

Crear nuevo proyecto
Crear nuevo proyecto

Luego aparecerá una ventana que nos solicitará el nombre del proyecto. Introducimos algún nombre descriptivo y aceptamos.

Proyecto API Mapa Google
Proyecto API Mapa Google

Una vez creado el proyecto, accedemos a la opción «Services» del menú izquierdo. Desde esta ventana podemos activar o desactivar cada uno de los servicios de Google que queremos utilizar. En este caso sólo activaremos el servicio llamado «Google Maps Android API v2″ pulsando sobre el botón ON/OFF situado justo a su derecha.

Activar Google Maps Android API v2
Activar Google Maps Android API v2

Una vez activado aparecerá una nueva opción en el menú izquierdo llamada «API Access«. Ahora accedemos a esa opción y  tenemos la posibilidad de obtener nuestra nueva API Key que nos permita utilizar el servicio de mapas desde nuestra aplicación particular.

Acceder a la API KEY
Acceder a la API KEY

Ahora pulsamos el botón «Create new Android key…«. Esto nos llevará a un cuadro de diálogo donde tendremos que introducir algunos datos identificativos de nuestra aplicación. En concreto necesitaremos dos: la huella digital (SHA1) del certificado con el que firmamos la aplicación, y el paquete java utilizado.

Para identificar en qué carpeta de nuestro sistema está almacenado este certificado accediendo desde Eclipse al menú Window/Preferences y accediendo a la sección Android/Build.

Ruta del cerificado
Ruta del cerificado

En mi caso la ruta del certificado es: /home/proyectosbeta/.android/. Ahora obtenemos nuestra huella digitall SHA entramos a la consola y escribimos:
cd /home/proyectosbeta/.android/
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android

Obtenemos la huella digital SHA
Obtenemos la huella digital SHA

OBS:

  • En este caso utilizo GNU/Linux, pero sería prácticamente lo mismo en Windows. 🙂

Copiamos el SHA  que recien obtuvimos y lo añadimos a la ventana de obtención de la API Key donde nos habíamos quedado antes, y a continuación separado por un punto y coma añadimos el paquete java que vayamos a utilizar en nuestra aplicación, que en mi caso será «net.proyectosbeta.mapas_ejemplo_google_maps_apiv2«.

Generar API KEY
Generar API KEY

Presionamos el botón «Create» y ya deberíamos tener nuestra API Key generada. Podemos ver en la pantalla siguiente dentro del apartado «Key for Android Apps (with certificates)«. (Anotamos también este dato para utilizarlo más tarde).

Ver la una KEY de la API de Google Maps v2 para Android
Ver la una KEY de la API de Google Maps v2 para Android

OBS:

  • No se preocupen que después del post colocamos el código fuente para que lo vean, en caso que no les salga algo. 🙂

Con esto ya terminamos los preparativos iniciales necesarios para utilizar el servicio de mapas de Android en nuestras propias aplicaciones. Ahora creamos un proyecto de ejemplo en Eclipse.

Abriremos Eclipse y crearemos un nuevo proyecto estándar de Android, en mi caso lo he llamado «mapas_ejemplo_google_maps_apiv2«. Recordemos utilizar para el proyecto el mismo paquete java que hemos indicado durante la obtención de la API key.

Tras esto lo primero que haremos será agregar al archivo AndroidManifest.xml la API Key que acabamos de generar. Para ello añadiremos al fichero, dentro de la etiqueta <application>, un nuevo elemento <meta-data> con los siguientes datos:

Archivo AndroidManifest.xml
Archivo AndroidManifest.xml

OBS:

  • Como valor del parámetro android:value tenemos que poner nuestra API Key recién generada.

Siguiendo con el archivo AndroidManifest.xml, también tenemos que incluir una serie de permisos que nos permitan hacer uso de los mapas.

Agregar permisos
Agregar permisos

OBS:

  • En la imagen anterior, lo que esta seleccionado tienen que atender y colocar el nombre de su paquete de java. Los demás permisos se copian tal cual.

Por último, dado que la API v2 de Google Maps Android utiliza OpenGL ES versión 2, debemos especificar también dicho requisito en nuestro archivo AndroidManifest.xml.

Open GL v2
Open GL v2

Una vez que hemos configurado todo lo necesario en el archivo AndroidManifest.xml, y antes de escribir nuestro código, tenemos que seguir añadiendo elementos externos a nuestro proyecto.

El primero de ellos será referenciar desde nuestro proyecto la librería con el SDK de Google Play Services que nos descargamos al principio de este post. Desde Eclipse podemos importar la librería a nuestro conjunto de proyectos mediante la opción de menú File -> Import ->Android -> Existing Android Code Into Workspace. Como ya dijimos este paquete se localiza en la ruta «<carpeta-sdk-android>/extras/google/google_play_services/libproject/google-play-services_lib«.

Importar librería Google Play services en Eclipse
Importar librería Google Play services en Eclipse

Tras seleccionar la ruta correcta dejaremos el resto de opciones con sus valores por defecto y pulsaremos Finish para que Eclipse importe esta librería a nuestro conjunto de proyectos.

El siguiente paso será referenciar esta librería desde nuestro proyecto de ejemplo. Nos vamos a Propiedades pulsando botón derecho Properties sobre nuestro proyecto y accediendo a la sección Android de las preferencias. En dicha ventana podemos añadir una nueva librería en la sección inferior llamada Library. Cuando pulsamos el botón «Add…» nos aparecerá la librería recién importada. Ahora seleccionamos y añadimos a nuestra lista de librerías referenciadas por nuestro proyecto.

Seleccionamos la librería de Google Play services
Seleccionamos la librería de Google Play services

OBS:

  • Como último paso de configuración de nuestro proyecto, si queremos que nuestra aplicación se pueda ejecutar desde versiones «antiguas» de Android (por ejemplo 2.3.3) debemos asegurarnos de que nuestro proyecto incluye la librería android-support-v4.jar, que debería aparecer si desplegamos las sección «Android Dependencies» o la carpeta «lib» de nuestro proyecto.
Verificar que incluya un jar
Verificar que incluya un jar

Y con estos pasos, ya tenemos todo configurado para poder empezar a programar una aplicación de Android que incluye un mapa de Google Maps utilizando su versión 2.

Ejemplo del programa:

Ejemplo utilizando la API de Google Maps v2 para Android
Ejemplo utilizando la API de Google Maps v2 para Android

OBS:

  • Para ejecutar el programa tienen que tener una memoria SD.
  • Utilicen tu propia key, no usen la que muestro en el ejemplo. Creela ustedes mismos. En este post lo muestro. (Actualización 29/03/2013 – 20:21).

Código Fuente: Ejemplo de Google Maps API v2
Descargar: El apk de Ejemplo de Google Maps API v2
Fuente: sgoliver


Comments

  1. Hola, tengo un problema, espero sepas ayudarme.

    He repetido todos tus pasos en mi proyecto y me funciona perfectamente si instalo la aplicación por usb desde Eclipse, directamente al móvil, pero si genero el apk y lo instalo los mapas no se ven.

    El nombre del proyecto está bien puesto en la web de google code.

    Alguna idea o cosa que pueda probar?

    1. No entiendo tan bien lo que me pones. Si ejecutas desde eclipse conectado por usb al móvil si te funciona, pero al instalar el apk sin el cable no. Es eso a lo que te referís, o si no es así, me podrías explicar, así vemos la solución a tu problema.
      saludos, jose

  2. saludos
    he seguido todos los pasos y llegue hasta esta parte

    no puedo referenciar desde el proyecto la librería con el SDK de Google Play Services

    menú File -> Import ->Android -> Existing Android Code Into Workspace

    y no me aparece el proyecto para importar

    utilizo el java ADT que se baja desde la misma pg de andorid

    alguna idea de mi problema
    agradeceria su ayuda…

    Att. Willo

  3. Pero seleccionaste la ruta del sdk del android? Tendria que ser más o menos así la ruta. /extras/google/google_play_services/libproject/google-play-services_lib

    Avisame cualquier cosa, así buscamos la solución a tu problema.
    saludos, jose

  4. Buenos dias , tengo una duda he hecho todo los pasos , llegue hasta ponerle cordenadas al gps , pero cuando volvi a corerlo me borro el mapa por completo. si me puedieras ayudar te lo agradeceria.

  5. Hola me pasa lo mismo que a Paco al emular la aplciacino en mi celular por defecto se instala y se abre automaticamente para probarlo y hasta ahi todo bien el mapa se muestra todo excelente pero he querido exportar mi proyecto como APK y lo hice leugo lo coloque en la raiz de la memoria de mi celular para instalarlo como si fuera una aplicacion de market cualquiera pero al instalarlo ya no me sale el mapa sale todo blanco segun he leido es por otro Api pero no se como hacerle

  6. hola oye buen aporte pero tengo un problema no puedo ver la huella digital SHA me dice que el archivo keytool no es ejecutable y no se que mas, lo estoy haciendo en windows, nose si exista otra froma de verla huella, gracias de antemano.

    1. Si es en windows tenes que estar en la carpeta donde se ubica el programa keytool que trae el jdk de java. En mi caso esta en C:\Program Files\Java\jdk1.6.0_37\bin
      Después de ubicarte en esa ruta donde se encuentra el keytool de java escribís en el cmd lo siguiente:
      keytool -list -v -keystore C:\Users\proyectosbeta\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

      Ojo:
      Tenes que poner la ruta de tu debug.keystore. Ese archivo esta oculto en una carpeta llamada android. En mi caso esta en C:\Users\proyectosbeta\.android\debug.keystore

      Cualquier cosa, avisame así vemos si resolviste. Saludos, jose

  7. Hola me pasa como a Paco, sigo todos tus pasos me funciona pero a la hora de ejecutar en el emulador no me sale nada o directamente me pone: «this app won’t run without google play services which are missing from your phone», llevo 2 dias con el mismo problema y no consigo solucionarlo, la key es proporcionada por la pagina de google. Si le pongo el movil o la tablet peta…

    1. He conseguido que vaya pero no me sale la imagen del mapa como te sale a ti, si no una trama de color gris con el logo de google en la zona inferior izquierda y la opcion de acercar y alejar la imagen, y no se como solucionar esto muchas gracias

    2. Hola Paco. En el emulador no funciona google maps versión 2, porque desde esta versión necesita tener instalado el google play. Así que para probarlo necesitas si o si un dispositivo real con google play instalado.
      Al probar en tu dispositivo móvil, coloca con un cable usb y verifica en el LogCat de tu eclipse la exepcion que te sale. Ahí verás porque sale el error, para poder solucionarlo. Porque no te puedo ayudar si no me das más detalles.
      saludos, jose

  8. Hola a todos, el problema que tengo es que la pantalla se queda en blanco con los botones del zoom. He instalado la .apk que se ofrece al final del tutorial y funciona perfecto, pero cuando edito el codigo con eclipse y creo yo el .apk, la pantalla se queda en blanco. El key lo saco con el PC donde tengo el eclipse, el service de google esta bien seleccionado, las librerias tambien, la verdad es que ya no se que mirar, alguien que me pueda hechar un cable

      1. Hola Jose, gracias por responder. Bueno pues he estado haciendo pruebas, descarto que sea fallo de programa porque lo he mirado linea a linea y creo que esta todo ok, package incluido. Creo que el fallo puede andar por el tema de obtencion del key, algo debo estar haciendo mal pero no se el que, alguna idea?

        1. y al crear la key pusiste el nombre de tu paquete de tu proyecto. Fíjate como lo he puesto yo.
          Le diste los permisos correspondientes a tu archivo AndroidManifest.xml
          La verdad que ya no se me ocurre más nada.
          Lo que creo que podrías hacer es hacerlo el ejemplo de nuevo, paso por paso, porque de alguna manera estas saltando un detalle.
          Saludos, jose

      2. No se si puede tener algo que ver que estoy utilizando la API level 10 en eclipse para android 2.3, y el movil donde descargo la .apk es el samsung galaxy ace y lo instalo por usb del ordenador al movil, en fin, la verdad es que ando un poco perdido, no se que puedo revisar

      3. He lanzado la aplicacion en el emulador para ver si me sale algun error, y he visto que sale el error «could not get wglGetExtensionsStringARB»

        1. Pero esa exception te sale con el ejemplo que pusimos o con tu ejemplo?. Acordate que con el emulador no te va a salir ningún mapa porque requiere google play. Para que salga el mapa de google si o si necesitas un dispositivo real.
          saludos, jose

  9. Hola. Hago lo que dices, pero a la hora de intentar referenciar, pongo la carpeta donde esta el proyecto y me sale que no hay proyectos que importar. Me pasa exactamente lo mismo que a Willo. ¿Hay alguna solucion? Gracias.

    1. Tenes que instalar el Google Play Services.
      Una vez que tenes instalado, en el import ir a la ruta del sdk del android. Tendria que ser más o menos así la ruta. /extras/google/google_play_services/libproject/google-play-services_lib

      Avisame cualquier cosa.
      saludos, jose

  10. Hola a todos.

    Antes que nada felicitar al autor por el trabajo que dedica para que otros podamos aprender. Esa es una labor digna de elogiar.

    Hasta ahora he seguido el tutorial, encontrándome algunos errores que más o menos he podido resolver siempre. Pero he llegado a este punto en el que no resuelvo un error que me da. He seguido, repasado los pasos y rehecho de nuevo este proyecto que apenas tiene código pero cuando abro la aplicación en el emulador se me cierra. En el Log Cat me sale el siguiente error:

    05-01 15:11:59.916: E/AndroidRuntime(1099): java.lang.RuntimeException: Unable to start activity ComponentInfo{domouso.mapas1/domouso.mapas1.MainActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class fragment

    He probado en un emulador de un Nexus-One con Platform 2.2 y API level 8 y en otro Tablet con Platform 4.2.2 y level 17.

    Por otro lado tengo otra duda y posiblemente aquí esté el fallo porque es muy raro. Cuando le damos a importar la librería SDK de Google Play Services a nuestro Espacio de trabajo, y le damos al proyecto a Properties, añadir la librería Google-play-services-lib, al darle a ADD nos sale en el listado el nombre de la librería con el símbolito de OK verdecito. Si quiero repetir este paso y vuelvo al mismo cuadro de diálogo, veo que la librería está cargada pero en lugar del símbolo de OK verdecito tengo el aspa roja al lado. Por lo tanto supongo que algo anda mal por aquí y sea ésto la causa del error

    Gracias por leerme

    1. Hola:
      No se porque querés volver a importar la librería, si ya la haz importado. Creo que hay viene el conflicto. En el android.xml coloca como mínimo el sdk 10, puede ser que una versión anterior no te funcione. No recuerdo mas (hace un buen tiempo no lo uso).
      Arriba esta el código de ejemplo que utilice. Bajate mi código y lee paso por paso el post, y ahi veras que estas haciendo mal.
      Avisame cualquier cosa.
      Saludos, jose

      1. Hola José. Mira, voy a intentar hacer lo que te digo y si me sale te lo comento. En cuanto a si vuelvo a cargar la librería, no es que le de a ADD de nuevo y lo cargue (entre otras porque la librería ya está cargada y no aparece en la lista), es que simplemente entro en el cuadro de diálogo y en lugar de visualizar la librería ya cargada con el OK verdecito, lo veo con un aspa roja al lado.

        1. Haciendo ésto mismo con tu código, veo que al entrar de nuevo en la carga de la librería, tu código tiene el aspa verde de OK, justo lo contrario al mío.
          Por otro lado, en la carpeta GEN tienes dos paquetes, cada uno con un archivo R, y sin embargo el mío no lo hace

          1. te tiene que generar automáticamente el archivo R. De alguna manera no esta haciendo. Lo que podrías hacer es borrar todos los jar y volver a ejecutar. De alguna manera tu eclipse no esta funcionando bien.
            saludos, jose

  11. Hola, Me pasa lo siguiente:

    Usando adb (Android Debug Bridge) instalo la apk en un amulador, y corre perfecto, no tiene ningún problema en el emulador.

    Importando el proyecto a eclipse y agregándole «google-play-services_lib», le coloque mi propio API key generado para este proyecto, lo corro desde eclipse en el mismo emulador y no muestra los mapas. Lo mismo pasa si instalo la apk generada por eclipse usando adb.

    No se cual puede ser la causa si aparentemente es la misma apk. También me gustaría saber como se creo el .apk que subiste ya que este si muestra los mapas.

    Gracias por las respuestas.

    1. El apk se genera automáticamente después de ejecutar tu aplicación. El apk se encuentra dentro de tu proyecto dentro de una carpeta bin. El nombre lde apk es el mismo nombre que el nombre de tu proyecto.
      La verdad que no se porque esta teniendo problemas.
      Lo que me estaba dando cuenta que el eclipse de repente no funciona tan bien. Trata de limpiar los jar y volver a ejecutar tu programa. Capaz que no se estén creando bien los jar.
      saludos, jose

  12. Hola de nuevo José. La verdad que llevo ya varios días con ésto y no doy con la tecla. Me tiene amargaito perdío…
    Mira, te dejo una imagen para que veas lo que pasa y si ves algo raro.
    Verás en el explorador que he importado el google-play-services_lib y se refleja como un proyecto más en el workspace.
    Y verás en la ventanita al darle de nuevo a Properties de mi proyecto, que cuando entro de nuevo en ésta, me aparece la librería cargada pero con el aspa roja, pero lo curioso es que cuando lo importo realmente si aparece con el aspa verde.
    En el proyecto que me he descargado de tí, hago este paso y sí aparece el OK en verdecito.

      1. Vale, aquí te dejo. Los códigos apenas tiene nada. Sólo es enseñar el mapa. Lo he hecho desde el emulador y desde un móvil y da el error. La API key es la que obtuve así que supongo que si lo pruebas tendrás que ponerle una tuya.

        https://www.dropbox.com/sh/udxno1wvd9zn1ht/m9BVFV8MP9

        Por cierto, te agradezco mucho tu interés. Yo soy nuevo en el mundo de la programación, soy ingeniero técnico industrial y el año pasado realicé un curso de casi mil horas. Ahora intento aprender y aprender, pero son tantas cosas…. pero gracias a personas como tú uno se anima y puede seguir aprendiendo y motivándose así que gracias y mil gracias

          1. Hola. Estuve probando tu código y no se porque no me salia. Probé de todas maneras. Después volví a hacer un programa de nuevo con mi propia key y mi sha1. y me salio. Yo creo que podría ser que no se genera bien el key o sino es problema de tu eclipse. Al principio no me salia bien y luego de probar varias veces en eclipse me salio. Volvé a probar hacer todo de nuevo. Si no te sale, volvé a preparar todo tu entorno eclipse+android.
            Saludos, jose

          2. Muchas gracias José. No sé como conseguiré que el programa funcione porque parece que todo en eclipse está bien. Pero bueno, te agradezco enórmemente tu tiempo.
            Un saludo

  13. Poseo el mismo inconveniente de al momento de adicionar me aparece la librería cargada pero con una x roja, pero lo curioso es que cuando lo importo realmente si aparece con una x verde.

    1. Es que me parece que éste es el fallo, porque sin código apenas que hacer no es un error en ésto. Sin las librerías y si quieres importar algo no se puede continuar :'(

  14. Buenos dias, he hecho la aplicación de mapas y si genero el apk y lo instalo en el movil sale perfectamente, pero si intento emularla directamente desde eclipse al dispositivo movil no aparecen los mapas puesto que no los carga (según error que indica).
    mi pregunta es ¿como puedo usar el movil como emulador para una aplicación de mapas en eclipse?
    Gracias de antemano.

      1. Hola José,
        al intentar ejecutar directamente con usb en el movil sale en eclipse el error: «fallo al conectar con los servidores de google» y luego «fallo al cargar los mapas».

        Pero el mismo proyecto funciona bien si genero el apk y lo instalo en el movil.

  15. Hola a tod@s.
    He encontrado la solución para todos aquellos a los que les sale el aspa roja después de importar la librería de Google Play Service (cuando la importas por primera vez se ve la marca verde, pero cuando vuelves a entrar para ver si todo está bien se ve el aspa roja).
    La solución es copiar la librería a una localización con una profundidad de directorios más corta. Yo me creé una carpeta llamada «prueba» en C: y ahí metí la librería. Luego hay que repetir todo el proceso de importar la librería a la carpeta de proyectos y referenciarla al proyecto. Antes de hacer eso hay que eliminar del arbol de proyectos la librería que ya habíamos importado y borrar la referencia del proyecto (la del aspa roja).
    Espero que ahora todo salga bien. A mi me funcionó.

    Un saludo.

  16. Buenos dias, estoy realizando una aplicación que utiliza Google Maps Android API v2 y uso una url que enlaza con googlemaps para pintar una ruta de un punto a otro (http://maps.google.com/maps?f=d&source=s_d&saddr=38.905763,-6.366508&daddr=38.927163,-6.334461).

    Bien, mi consulta es la siguiente: ¿Porqué no encuentra la ubicación la primera vez que entra en la URL despues de unas horas sin actividad en googlemaps? Entras una vez y no encuentra las ubicaciones, cierras googlempas y vuelves a entrar y la encuentra perfectamente.

    Gracias.

      1. Hola José, es similar a lo que ocurre cuando envias un mensaje de ubicación por el whatsapp. Cuando el emisor envia este mensaje lo que hace es pasar la información de su geoposición, pero el receptor necesita abrirlo dos veces para que funcione bien (a no ser que ya haya abirto el googlemaps recientemente).

        Saludos, gracias.

  17. Hola José, es similar a lo que ocurre cuando envias un mensaje de ubicación por el whatsapp. Cuando el emisor envia este mensaje lo que hace es pasar la información de su geoposición, pero el receptor necesita abrirlo dos veces para que funcione bien (a no ser que ya haya abirto el googlemaps recientemente).

    Saludos, gracias.

  18. hola tengo un problema al ejecutar la apliacion desde el eclipse , no me carga el mapa solo la cuadrícula , ya he probado de muchas maneras pero no funciona , he leido q puede ser la apikey pero ya la he creado de muchas maneras y sigue sin cargar el mapa , espero e puedas dar ideas de como solucionarlo

  19. Buenas,
    Tengo un problema con el mapa. A mi me funciona bien pero cuando instalo la app desde otro ordenador sale la pantalla en gris, en lugar del mapa.
    Alguna idea del porque??

  20. Buenas…
    Tengo un problemilla con el Mapa, en mi ordenador, cuando instalo la app en mi smarth funciona correctamente pero cuando lo instalo desde otro ordenador a otro smarth el mapa no sale, aparece una pantalla en gris.
    ¿Alguna idea de cuál es el problema?
    Muchas gracias

  21. Buenas…
    Tengo un problemilla con el Mapa, en mi ordenador, cuando instalo la app en mi smarth funciona correctamente pero cuando lo instalo desde otro ordenador a otro smarth el mapa no sale, aparece una pantalla en gris.
    ¿Alguna idea de cuál es el problema?
    Muchas gracias

  22. Hola, sabes que tengo un problema raro. tengo el motorola rarz i. en la maquina virtual de genymotion funciona bien el mapa pero al exportarlo e intentar abrirlo con el celular se queda la pantalla en blanco que abajo a la izquierda dice google. No se si es problema al exportar o que puede ser pero me tiene hace rato ya.
    Sabes porque puede ser?.
    gracias
    Saludos

Responder a Jose Antonio Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *