Descargar librerías requeridas del SDK

En los paquetes descargados del Android SDK deben estar instalados los siguiente paquetes:

  • Google Play Services

  • Google Repository

Puedes comprobarlo usando el botón SDK manager de Android Studio y acceder a la pestaña SDK Tools:

mapafragment01

Añadir dependencias al proyecto

En el proyecto de Android Studio que se está creando se debe indicar que incluya la librería de Google Play Services para que se compile correctamente. Esto puedes hacerlo usando el menú File > Project Structure, o bien el botón Project Structure de la barra de herramientas de Android Studio, y luego acceder a la sección Modules > App en la lista de la parte derecha. Selecciona la pestaña Dependencies porque ahí es donde puedes añadir librerías a tu proyecto. Usa el botón + de la parte inferior y selecciona la opción Library dependency.

mapafragment02

Selecciona la librería com.google.android.gms:play-services-maps, con el número de versión que te aparezca:

mapafragment03

El resultado de esta acción es que en el archivo build.gradle del módulo app del proyecto se haya incluido una nueva línea que indica al compilar que utilice la librería que se ha seleccionado. Comprueba que se ha añadido como aparece en la imagen:

mapafragment04

Crear una API Key para la aplicación

Para Google permita a tu aplicación acceder a su servicio de mapas, debes obtener un código (key) que se debe indicar en el proyecto.

Accede a la direccción https://console.developers.google.com/project con tu cuenta de Google. Crea un nuevo proyecto desde la lista desplegable de la parte superior asignándole el nombre que desees.

Usa la sección Credenciales de la parte izquierda, y usa el botón Crear credenciales, escogiendo la opción Clave de API.

mapafragment05

Copia el código que aparece porque tendrás que usarlo posteriormente.

mapafragment06

Abre el archivo AndroidManifest.xml de tu proyecto (dentro de la carpeta manifests) y edítalo añadiendo las siguientes líneas antes de la etiqueta </application>, cambiando la clave que aparece por la clave que te ha asignado Google hace un momento:

<meta-data android:name="com.google.android.gms.version" 
android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyB9oARLFPe4wRGyeuWJq0IqZ0g84TjmjVI" />

Habilitar Google Maps API en el servicio de Google

Además de crear la clave de API para la aplicación, es necesario habilitar la API de Google Maps en el servidor de Google si no se ha hecho anteriormente. Accede a la sección Bibliotecas, y usa el enlace de Google Maps Android API.

mapafragment08

Si no está habilitado este servicio, podrás actviarlo usando el enlace Habilitar que aparece en la parte superior.

mapafragment09

Una vez activado el servicio podrás ir viendo el número de peticiones del servicio de mapas que se reciben en el servidor provenientes de tu aplicación. Ten en cuenta que este servicio, así como otros que ofrece Google gratuito inicialmente, puede tener límites de uso, pero en el caso del servicio de Google Maps Android API no hay límite, al menos en el momento de escribir este artículo, según informan en las preguntas frecuentes.

Crear un Fragment donde se muestre el mapa

Utiliza un código similar al siguiente en un nuevo Fragment que debes crear en tu proyecto (no es necesario que tenga su propio layout):

package es.javiergarciaescobedo.ejemplomapafragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class BlankFragment extends SupportMapFragment implements OnMapReadyCallback {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = super.onCreateView(inflater, container, savedInstanceState);

        getMapAsync(this);

        return rootView;
    }

    @Override
    public void onMapReady(GoogleMap map) {
        // Posicionar el mapa en una localización y con un nivel de zoom
        LatLng latLng = new LatLng(36.679582, -5.444791);
        // Un zoom mayor que 13 hace que el emulador falle, pero un valor deseado para
        // callejero es 17 aprox.
        float zoom = 13;
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoom));

        // Colocar un marcador en la misma posición
        map.addMarker(new MarkerOptions().position(latLng));
        // Más opciones para el marcador en:
        // https://developers.google.com/maps/documentation/android/marker

        // Otras configuraciones pueden realizarse a través de UiSettings
        // UiSettings settings = getMap().getUiSettings();
    }

}

 Ya sólo falta añadir este Fragment dentro de la Activity del proyecto como se indica en el artículo Fragment dentro de una Activity.

mapafragment10