[MUSIC] Ok, pues para comenzar con nuestro ejercicio primeramente me encuentro en el sitio oficial de Google Maps, que es developers.google.com/maps. Que por primera vez vemos que no dice nada en absoluto sobre sobre Android. Dado que, como you platicamos, los mapas es un servicio que son específicamente de Google, no es un servicio que Android nos provee. Entonces, más bien, es un servicio que Google nos provee y que nos lo provee para diferentes plataformas, incluso. Aquí, observamos claramente, tenemos para Android, cómo integrar mapas en Android, cómo integrar mapas en iOS, cómo integrar mapas en nuestro sitio web. Y además, si queremos estar también implementando nuestro servicios web que estén consultando el API de Google y que el servicio web nos esté devolviendo mapas. Podemos incluso crear nuestros propios servicios web a base del API de Google. Entonces, pues este es el sitio oficial, y bueno, pues nosotros lo que buscamos básicamente es la parte de Android. Entonces, vamos a dar clic ahí y como you les platiqué, tenemos que hacer únicamente tres pasos. Es muy sencillo hoy en día integrar los mapas en Android. Estamos trabajando con la versión dos del API de Google, del API de mapas. Entonces vamos a ir aquí donde dice Google Maps Android API. Y aquí, bueno, es una guía sumamente completa. Esta es la página de inicio, después vienen unas guías de cómo comenzar con cualquier plataforma. Vienen las referencias, muestras, incluso, de código. Y aquí también, pues vemos cómo implementar de primera instancia nuestro proyecto, los mapas de Google, si queremos ver algo así, pues bueno, aquí tenemos el código que genera esto, precisamente. Acá también tenemos varios ejemplos que es como que lo más preciso que buscaremos para estar trabajando con los mapas de Google. Entonces, como platicamos, necesitamos hacer tres pasos. Primeramente, crear un proyecto o seleccionar un proyecto. En este caso un proyecto de Android, con Android Studio. Posteriormente, activar los Google Maps de Android API, que esto lo haremos en nuestra consola de developers, que todos tenemos acceso. Si tienes una cuenta de Gmail automáticamente tienes acceso a una cuenta de developer. Y posteriormente obtener, una vez que activamos los mapas y demos de alta nuestro proyecto, esto nos devolverá un API Key, una API que será lo que estaremos configurando en nuestro proyecto, ¿ok? Pues entonces, comencemos con lo primero, crear un proyecto de Android. Yo you estoy lista para crear un proyecto de Android. Aquí está, solamente estoy comenzando a hacerlo. Le voy a poner al proyecto MisMapas. Listo, le voy a dar Next. Y aquí voy a generar como mínimo del API, el API 15, en esto no hay mucho problema y esta es nuestra pieza clave cuando queremos generar un mapa de Google. Podemos incluso, como observas, solicitar una actividad que you tenga todo el código implementado, porque la verdad es que son bastantes pasos si lo hiciéramos en nuestro modo. Pero tenemos la fortuna que esto you está todo automatizado. Entonces, podemos seleccionar este Google Maps Activity y además yo puedo decir aquí también Empty Activity. Entonces, para observar un poco cómo es que, si yo you tengo un proyecto, pues cómo posteriormente integrar una actividad. Por lo pronto vamos a seleccionar este, Empty Activity, ¿ok? Voy a dar Next, me pide los parámetros de la actividad y le voy a dar Siguiente. Entonces, en este momento el proyecto empieza a construirse, empieza Gradle a trabajar y listo. you ha terminado el proyecto de estar trabajando y aquí you tengo mi Hola Mundo de Android, lo clásico que siempre vemos que es nuestro archivo de Java, ahorita está terminando Gradle de integrar todo y bueno, aquí está. Esto es lo que vemos comúnmente, nuestro Hola Mundo de Android, nuestro Hola Mundo de Java. Nuestro Hola Mundo de Android. Perfecto. Entonces, ahora vamos a hacer el siguiente paso que nos está solicitando aquí. Yo tengo un proyecto objetivo, entonces ahora vamos a activar los Google Maps para un proyecto. Entonces, para hacer esto voy a ir a la consola, al sitio de console.developers.google.com. Este es el sitio en donde nosotros tenemos acceso a nuestra consola, console.developers.google.com y listo. Esta es la visión general, esto es lo que normalmente puedes ver. Entonces, lo primero que haré será dar de alta mi proyecto. Entonces, voy a darle aquí clic, yo you tengo aquí un proyecto que es para notificaciones. Cuando veamos el tema de notificaciones también tendremos que hacer algo similar. Entonces le voy a dar clic aquí en donde dice Crear proyecto. Muy bien, le voy a dar Crear proyecto, le voy a poner el nombre de mi proyecto. Le voy a poner MisMapas. Generalmente, pues aquí puede tener el mismo nombre de la aplicación para que puedas identificarlo más fácilmente y le vamos a dar aquí Crear. Dice creando el proyecto, MisMapas, y listo, you lo ha creado. Perfecto. Ahora, entonces nos ha situado en MisMapas, aquí estoy ubicada. Lo que voy a hacer a continuación es que por cada proyecto que tu crees aquí en tu consola, necesitarás habilitar pues el API adecuado. Si vas a trabajar con mapas, pues entonces habilitamos este. Si vas a trabajar, a lo mejor, con el API de YouTube también habilitas esto para este proyecto. Entonces, por cada proyecto, hay que habilitar las cosas específicas que el proyecto va a estar consumiendo. Entonces voy a darle aquí, donde dice Google Maps Android API, y a continuación voy a darle clic donde dice Habilitar. Entonces dice Habilitando, you está empezando a habilitar. Estamos únicamente dando de alta un proyecto aquí que va a estar disponible, va a estar habilitado para consumir el API de Google. Entonces, ¿cómo hacemos que esto, pues, se sincronice precisamente con nuestro proyecto? Bueno, anteriormente tendríamos que ir aquí a donde dice Ir a las credenciales y entonces hacer, pues, una serie de pasos. Primeramente, seleccionar el API, después desde dónde llamarás al API, seleccionas qué tipo de proyecto es el que tienes, tenemos un proyecto Android, y aquí pondremos qué credenciales necesito. A partir de eso, para algunas personas se les empieza a complicar un poco. ¿Por qué? Porque hay que sacar un Keystore con la herramienta de Keytool. Y bueno, para llegar a la herramienta de Keytool hay que llegar a donde nuestros archivos ocultos de Android, que normalmente está en el home directory de tu computadora. Y entonces ejecutar un comando como esto, que necesitaremos si nuestra aplicación está en modo debug, necesitaremos keystore, un keystore en modo debug. Y entonces, a partir de allí, lo que necesitamos es obtener una clave de API que, bueno, aquí vamos a darle cancelar porque todavía esto no, no está. Y lo que nos, nos estará solicitando, pues es obtener una clave de API, que es más que nada como la firma de la aplicación que nos solicita el SHA asignado, el SHA de la aplicación asignado al proyecto, ¿ok? Entonces, bueno, hacer esto todo manualmente, la curva de error se nos prolonga bastante la curva de que generemos un error y además de que son bastantes pasos. Entonces por eso vamos a hacerlo de la forma directa, de la forma que you está listo. Y entonces antes de estar trabajando acá, lo que voy a hacer es, por aquí, crear un, voy a crear un botón aquí. Y antes de crear el botón, como que no generó bien mi vista. Voy a, simplemente voy a darle un Rebuild en el menú Build y un Rebuild. Ok, bueno. Entonces, pues parece que todavía sigue aquí con algunos problemas. Pues bueno, no hay problema. Podemos generar nada más, nosotros necesitamos un botón, un botón que vamos a decirle, match_parent y wrap_content. Este botón lo que va a hacer es llevarnos a otro activity, que será el activity que contenga nuestros mapas. Entonces a este TextView, como estoy en un RelativeLayout, le voy a poner un id y le voy a poner texto, así. Y ahora a este le voy a decir que esté debajo del tv, que esté debajo del tvTexto. Muy bien, you está. Y además le vamos a poner un texto Android text, y ese texto le vamos a poner ir, ir a mis mapas, ¿ok? Entonces le vamos a poner ir_mapas. Ir a mis mapas. Perfecto. Entonces ese texto es el que colocaremos en nuestro botón. Vamos a poner @string, ir a mis mapas. Listo. you está. Bueno, aquí you debe estar el botón. No hay problema si ahorita no se ve. Y entonces vamos ahora acá, a generar nuestra actividad que va, que va a contener el mapa. Y entonces es muy simple, voy a darle clic derecho en cualquier nivel del proyecto, en donde dice new, y vamos a ir a la parte que dice Google, al menú que dice Google, ¿ok? Y entonces aquí en el menú que dice Google, you me aparece un menú que dice Google Maps Activity. Esa es la parte que necesito, Google Maps Activity. Entonces voy a integrar aquí Maps Activity, es el nombre de mi actividad, le vamos a poner, sí, Maps Activity, lo vamos a dejar así. El layout Maps, el título de la aplicación, el título de la Activity, cómo se va a ver, y el Package al cual va a estar respondiendo éste. Este Package, pues es el, nuestro Package raíz que definimos al principio. Le voy a dar Finish. Y en este momento empieza a trabajar el proyecto e incluso, si observaste Gradle, también está trabajando. Y esto es porque para integrar los mapas en un proyecto, pues incluso se tienen que descargar algunas librerías adicionales, que ahorita, en cuanto termine te voy a mostrar cuáles son las que ha integrado a nuestro proyecto. Y vamos a abrir nuestro Gradle Module app. Y entonces, normalmente, nosotros tenemos esto, que you siempre viene en nuestro proyecto integrado, pero ha integrado ahora la librería de gms, los play services de Google. Y esto es algo que, cuando tú estés trabajando, incluso en tu proyecto, eso es algo que tienes que también estar trabajando en tus SDK managers. Eso es lo que tienes que estar descargando también en tu SDK managers. En nuestro caso, nosotros seleccionamos por ahí una API, este una API 14, me parece. Y vemos que, una API 15, eso fue. Y vemos que aquí nosotros sí tenemos instalado la parte de Google APIs, este kit de librerías adicionales que se integran y que se quedan ahí disponibles. Entonces debemos tenerlo aquí disponible los Google APIs, que es para, es un servicio de Google que nos permitirá estar trabajando con cualquier API de Google, ¿ok? Entonces aquí you podemos integrar mapas o podemos integrar cualquier otra API de Google. Adicional, si nosotros, en un momento dado que nosotros queramos estar corriendo nuestro proyecto, bueno ahorita más adelante lo vamos a ver. Pero también necesitamos que el emulador, si es que lo vamos a correr a un emulador, necesitamos que ese emulador tenga, pues este, los Google APIs también seleccionados, ¿ok? Eso lo explicamos en nuestro curso de fundamentos de Android. Bien, entonces vamos a ir a nuestra actividad que nos acaba de crear el asistente de Google Maps, y lo que observamos es que esta actividad que se llama MapsActivity, esta heredando de la clase FragmentActivity. Esto por el momento no tiene nada que ver con mapas, simplemente es FragmentActivity y que ahora sí, aquí está implementando que se llama OnMap ReadyCallback. Ok, este OnMapReadyCallback es precisamente un callback o un método donde nos va a estar mostrando, nos va a estar diciendo cuando el mapa real you se ha creado. Entonces cuando el mapa you se ha creado, you se ha integrado en un fragment, porque realmente eso es lo que va a suceder, nuestro mapa se va a integrar en un fragment. Una vez que sucedió eso, pues nosotros you podemos estar, en este caso está agregando un marcador en Sydney y que, y que incluso, bueno, está moviendo la cámara para generar, pues no sé, un efecto más, más cool. Entonces en nuestro método onCreate, estamos añadiendo, estamos con una clase que se llama SupportMapFragment, que aquí esta clase, pues nos ayuda, nos va a ayudar a integrar lo siguiente que vamos a ver. Entonces vamos a ir al layout que está trabajando este mapa. Nos ha creado una clase, es la que acabamos de ver. También en nuestro layout nos ha creado una actividad que se llama activity_maps. Lo vamos a abrir, y este activity_maps lo que contiene es un Fragment, es un Fragment que aquí le está asignando, pues su clase, su contexto, que es nuestro contexto MapsActivity, y que tiene como id map. Así le colocaron, él se llama map. Tiene un Android name que proviene, este proviene de SupportMapFragment. Si observas, aquí es donde estamos utilizando la librería que importamos de Gradle. Y entonces este Fragment es un Fragment que está listo y está diseñado para soportar mapas. Probablemente de inicio no podremos ver nada porque, pues no, es un poco complicado ver los, tener una vista previa en los Fragment. Pero este id, este id map es el que estamos asociando en nuestro método onCreate a nuestro método mapFragment, ¿ok? Si observas esta clase, SupportMap, todo esto proviene de la, de la librería com.google.android.gms.maps, etcétera, que es lo que estuvimos importando en nuestro Gradle. Entonces aquí tenemos esto, MapsAsync, etcétera. Y entonces, bueno, esta clase es la que hace la magia de estar mostrando en este, en este fragmento, en esta etiqueta nuestro mapa, pero además de eso se configuraron otras cosas. Entonces hasta el momento hemos visto una clase, un archivo, un layout, que eso es fácil, lo sabemos, lo entendemos. Y tenemos por aquí un Android manifest. En nuestro Android manifest también se han integrado algunas cosas. En primer lugar, un permiso de geolocalización, tenemos este, que ACCESS_FINE_LOCATION. Que incluso aquí you nos da como una guía de lo que estamos integrando y más abajo, estamos pues también dando de alta nuestro activity. Esto también lo estamos haciendo, estamos dando de alta nuestra actividad. Y además estamos por aquí en esta etiqueta que se llama meta-data. Es donde nosotros necesitamos definir el API_KEY. Entonces, hasta ahorita, los pasos que hemos hecho, es que hemos creado un proyecto de Google, e incluso you le hemos integrado una actividad que soporta mapas. A continuación hemos activado los mapas de, en nuestra consola de developers, que eso lo hicimos dando de alta únicamente un proyecto. Es lo único que hemos hecho. Lo que nosotros necesitamos es precisamente registrar nuestro proyecto de Android aquí, en la consola de Google para que a partir de eso nos devuelva un identificador o un API_KEY. Y entonces esa API_KEY es la que vamos a estar nosotros aquí integrando en nuestro proyecto, así como en los web service, que también lo trabajamos. Es lo que vamos, eso lo estaremos integrando a nuestro proyecto para que podamos estar con nuestra API_KEY trayendo, consultando los mapas y trayéndolos desde aquí. Entonces esta API_KEY, él dice la está obteniendo desde un archivo string, que se llama google_maps_api_key y que aquí está, ajá. Entonces yo te comentaba que teníamos por ahí que generar un keystore, y que teníamos que obtener un SHA de la aplicación y entonces asignarlo con el Package, etcétera. Pero en este archivo, Google Maps API.XML, que lo vas a encontrar aquí en, dentro de la carpeta values, google_maps_api. En ese archivo vienen los pasos o viene una url clave, esta que está aquí, esta url, para que automáticamente, todo ese proceso, you se dé de alta por sí solo. De entrada, el proyecto, nosotros al crear una actividad como definida por Google, de Google Maps. De entrada you nos devolvió un SHA, you firmó la aplicación, you usó el debug keystore, y you firmó la aplicación y además le colocó, bueno, viene asociado con el Package del proyecto, ¿ok? Nosotros podríamos hacer esto manualmente, simplemente aquí, pues yendo a las credenciales y entonces integrando precisamente ese API_KEY, ¿ok? Aquí es donde nos lo pide, nombre del paquete. Este es el nombre del paquete y también el certificado de huella digital. Pero vamos a hacerlo a través de la url, ¿ok? Entonces voy a copiar la url y se supone que posterior a configurar estos pasos, nos debe devolver nuestra API_KEY. ¿Ok? Entonces you tengo dado de alta mi proyecto. Voy aquí a ponerle un control v con el, la url que copié de mi googlemapsapi.xml. Y bien, lo que nos pide es, ahora, selecciona el proyecto al cual quieres asociar ese SHA, con ese Package le voy a decir que mi proyecto se llama MisMapas y le voy a dar continuar, ¿ok? Le voy a dar continuar y, ¡perfecto! you lo ha hecho todo. La API se ha habilitado. Google Maps Android API se ha habilitado. A continuación puedes usar el API que necesitas. Le voy a dar ir a las credenciales y listo. Aquí you le ha puesto los datos que yo necesito. Le voy a poner Clave de Android para MisMapas. Clave de Android para mis Mapas y le voy a dar crear. Y entonces ahora you lo estoy creando. you nos ha devuelto el API_KEY que necesitamos. Bien, esto lo vamos a copiar. Dice copiado y esto es lo que vamos a integrar en nuestro proyecto de Android. Recuerda que esa función, eso funciona como nuestra llave para solicitar los datos. Justamente en esta etiqueta que dice android_maps_key, le vamos a poner YOUR _KEY_HERE, aquí le vamos a pegar nuestra API. Listo. you tenemos listo, you tenemos perfectamente configurado nuestro proyecto. Entonces vamos a ver qué requerimientos necesitamos para correr este proyecto en el caso de un emulador. En el caso del teléfono, en el caso de un emulador lo que necesitamos es que, bueno, tenga pues un sistema operativo mínimo al que configuramos en nuestro proyecto. Y además que el sistema operativo venga con las Google APIs integradas, ¿ok? Esto es muy importante. Siempre que nosotros queramos emular o siempre que queramos probar nuestro proyecto en un emulador, y si este proyecto está trabajando con Google APIs, necesitamos que el emulador tenga también las Google APIs sin quebradas. ¿Cómo defino eso? Por ejemplo, aquí yo puedo poner mi hardware y aquí, una vez que he seleccionado mi hardware, pues recuerda que tenemos aquí, por ejemplo, Lollipop x86 y dice Android 5.1 with Google APIs. Eso es lo que necesitamos. En este caso solamente dice Android 4.4, que no tiene las Google APIs. Si yo selecciono este, aunque cumpla con el mínimo de API, no voy a poder, no voy a poder correr mi proyecto, no lo voy a poder emular. De hecho, al seleccionarlo, aquí justamente, me aparece un mensaje donde dice, considera utilizar una imagen con, que tenga integrado Google API para habilitar el testing con Google Play, ¿ok? Entonces, bueno, tenemos que asegurarnos que el sistema operativo que tiene seleccionado ese emulador tenga Google APIs. Entonces yo you tengo uno, simplemente lo voy a habilitar. Voy a correrlo para ver qué es lo que nos ha creado. Ok, entonces mientras esto corre vamos aquí, voy a darle Ok. Mientras esto corre, vamos a nuestro MapsActivity y vamos a ver qué es lo que veremos. Como te comenté, dice que trae un marcador, you viene predefinido para que cuando abra nuestro mapa nos aparezca en Sydney, ¿ok? Entonces, bueno Aquí esto lo hacemos a base que ponemos la latitud y la longitud en el caso de Sydney, ok. Si nosotros quisiéramos abrir otro lugar, bueno podemos también ir a, hay muchos sitios web que te dan la latitud y la longitud de un lugar en específico, entonces yo voy a ver por ejemplo México D.F latitud y longitud, ok. Bien, entonces aquí voy a darle clic en este enlace. Y bueno, aquí en este enlace viene una lista de todas las latitudes y longitudes en el caso de México de todos los estados. Hay otro que a mi en lo personal me gusta también bastante que es este tiene, le vamos a poner aquí latitud longitud bufa, bufa, así se llama el sitio bufa.es. También lo puedes obtener a base del Google Maps, pero tiene como un poco más de pasos. Y entonces este me gusta porque aquí tienes un puntero que dice más y entonces tú puedes seleccionar el lugar que sea y aquí nos va dando la latitud y la longitud. Entonces voy a poner aquí un poquito que esté precisamente en la ciudad de México, ahí está, y entonces aquí you me está dado mi latitud y mi longitud, dice escribe un lugar, ¿no? Bueno, también puedes hacerlo de esa forma. Voy a dar de alta por aquí esto, you abrió, perfecto. Entonces voy a dar de alta y en vez de que sea Sydney lo vamos a comentar y vamos a crear un objeto que sea LatLng y le vamos a poner México, ok. Le voy a poner new, new LatLng y la latitud es lo que acabo de seleccionar y la longitud es este elemento. Ok, ahí está, perfecto. Vamos a dar punto y coma. Listo, entonces ahora la posición, todo lo demás que va a poner aquí va a ser México, Marker en México, ok. Y algo que nos está faltando ahorita es que únicamente hicimos un activity main que tenga un botón, aquí está nuestro botón. Tenemos que hacer que ese botón pues vaya a la actividad que hemos definido, y entonces vamos a hacer un método, ok, vamos a hacer un método en nuestro main activity, voy a hacer un public public void ir a mapa. Ajá, esto como tal cual lo sabemos hacer, ok. Y esto es un intent, sencillito como lo conocemos, de pasar de un activity a otro, ok. Le voy a decir que vaya a Maps.class y le voy a decir que startActivity, ok. Y también debemos asignar este método a nuestro botón de nuestro layout, ok. Vamos a poner aquí android:onClick ir al mapa. Lo correremos. [AUDIO EN BLANCO] Y you he corrido bien. Entonces vamos a ir a darle clic donde dice ir al mapa y voilá, nos está abriendo un mapa que está situado exactamente en el marcador que le hemos dicho. Si tú no hubieras colocado ningún marcador, bueno, incluso si observas pues la precisión de mi puntero no fue tanta, entonces nos abre como un poquito más allá del puntero de la ciudad de México. Pero en la latitud exacta que tú coloques y la longitud exacta que tú coloques por aquí, será el puntero que nos esté abriendo. Entonces ahí en el sitio de Google puedes personalizar este mapa tanto como tú quieras, como te platiqué. Bueno aquí hay algunos ejemplos, incluso cambiar el tipo de mapa, un mapa híbrido, un mapa que nos muestre el terreno de la zona. Podemos además colocar marcadores personalizados aquí también, marcadores personalizados en nuestro mapa y además con múltiples marcadores personalizados donde queramos. Entonces de esta forma es cómo estaremos integrando mapas en nuestros proyectos de Android. [MUSIC]