Es el 15.º aniversario de Google Maps Platform: consulta las noticias y los anuncios más recientes.

Cómo agregar un mapa con un marcador

En este instructivo, se muestra cómo agregar un mapa de Google Maps a tu app para Android. El mapa incluye un marcador, el cual indica una ubicación específica.

Sigue el instructivo a fin de compilar una app para Android con Maps SDK for Android. El entorno de desarrollo recomendado es Android Studio.

Obtén el código

En GitHub, clona o descarga el repositorio de muestras de la versión 2 de la API de Google Maps para Android.

Configura tu proyecto de desarrollo

Sigue estos pasos para crear el proyecto del instructivo en Android Studio:

  1. Descarga Android Studio y, luego, instálalo.
  2. Agrega el paquete de Servicios de Google Play a Android Studio.
  3. Clona o descarga el repositorio de muestras de la versión 2 de la API de Google Maps para Android si no lo hiciste cuando empezaste a leer este instructivo.
  4. Importa el proyecto del instructivo:

    • En Android Studio, selecciona Archivo > Nuevo > Importar proyecto.
    • Ve a la ubicación en la que guardaste el repositorio de muestras de la versión 2 de la API de Google Maps para Android tras descargarlo.
    • Busca el proyecto MapWithMarker en esta ubicación:
      PATH-TO-SAVED-REPO/android-samples/tutorials/MapWithMarker
    • Selecciona el directorio del proyecto y haz clic en Aceptar. Android Studio compilará tu proyecto con la herramienta de compilación Gradle.

Obtén una clave de API y habilita las API necesarias

Si deseas completar este instructivo, necesitarás una clave de API de Google autorizada a fin de utilizar Maps SDK for Android.

Haz clic en el siguiente botón para obtener una clave y activar la API.

Comenzar

Para obtener más detalles, consulta la guía completa sobre cómo obtener una clave de API.

Agrega la clave de API a tu app

  1. Edita el archivo gradle.properties de tu proyecto.
  2. Pega la clave de API en el valor de la propiedad GOOGLE_MAPS_API_KEY. Cuando compiles tu app, Gradle copiará la clave de API en el manifiesto de Android de la app, como se explica a continuación.

    GOOGLE_MAPS_API_KEY=PASTE-YOUR-API-KEY-HERE
    

Compila y ejecuta tu app

  1. Conecta un dispositivo Android a tu computadora. Sigue las instrucciones a fin de habilitar las opciones para desarrolladores en tu dispositivo Android y configurar el sistema para que lo detecte. También puedes utilizar el Administrador de dispositivos virtuales de Android (AVD) para configurar esos dispositivos. Al elegir un emulador, asegúrate de seleccionar una imagen que incluya las API de Google. Para obtener más detalles, consulta la guía de introducción.
  2. En Android Studio, haz clic en la opción Ejecutar del menú (o en el ícono del botón de reproducción). Selecciona un dispositivo según se solicite.

Android Studio invoca a Gradle para compilar la app y, luego, la ejecuta en el dispositivo o el emulador. Deberías ver un mapa con un marcador en Sídney, en la costa este de Australia, similar al de la imagen que se muestra en esta página.

Solución de problemas:

Comprende el código

En esta sección del instructivo, se explican los componentes más importantes de la app MapWithMarker para ayudarte a comprender cómo compilar una app similar.

Verifica el manifiesto de Android

Observa los siguientes elementos en el archivo AndroidManifest.xml de tu app:

  • Agrega un elemento meta-data para incorporar la versión de Servicios de Google Play con la que se compiló la app.

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    
  • Agrega un elemento meta-data en el que se especifique tu clave de API. En el ejemplo incluido en este instructivo, se mapea el valor de la clave de API a una string google_maps_key. Cuando compiles tu app, Gradle copiará la clave de API del archivo gradle.properties de tu proyecto en el valor de la string.

    <meta-data
      android:name="com.google.android.geo.API_KEY"
      android:value="@string/google_maps_key" />
    

    Para ver cómo se mapea la clave de API al valor de la string, consulta el archivo build.gradle de tu app. Este incluye la siguiente línea que mapea la string google_maps_key a la propiedad GOOGLE_MAPS_API_KEY de Gradle:

      resValue "string", "google_maps_key",
              (project.findProperty("GOOGLE_MAPS_API_KEY") ?: "")
    

A continuación, se ofrece un ejemplo de un manifiesto completo:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mapwithmarker">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

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

        <!--
             The API key for Google Maps-based APIs.
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />

        <activity
            android:name=".MapsMarkerActivity"
            android:label="@string/title_activity_maps">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Agrega un mapa

Muestra un mapa con Maps SDK for Android.

  1. Agrega un elemento <fragment> al archivo de diseño de tu actividad, activity_maps.xml. Este elemento define un fragmento (SupportMapFragment) para que actúe como contenedor del mapa y proporcione acceso al objeto GoogleMap. En el instructivo, se utiliza la versión de la biblioteca de compatibilidad de Android correspondiente al fragmento de mapa para garantizar la retrocompatibilidad con versiones anteriores del marco de trabajo de Android.

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.mapwithmarker.MapsMarkerActivity" />
    
    
  2. En el método onCreate() de tu actividad, establece el archivo de diseño como la vista de contenido. Llama a FragmentManager.findFragmentById() a fin de generar un controlador para el fragmento de mapa. Luego, utiliza getMapAsync() a fin de registrarte para la devolución de llamada del mapa:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Retrieve the content view that renders the map.
        setContentView(R.layout.activity_maps);
        // Get the SupportMapFragment and request notification
        // when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
    
  3. Implementa la interfaz OnMapReadyCallback y anula el método onMapReady() para configurar el mapa cuando el objeto GoogleMap esté disponible:

    public class MapsMarkerActivity extends AppCompatActivity
            implements OnMapReadyCallback {
        // Include the OnCreate() method here too, as described above.
        @Override
        public void onMapReady(GoogleMap googleMap) {
            // Add a marker in Sydney, Australia,
            // and move the map's camera to the same location.
            LatLng sydney = new LatLng(-33.852, 151.211);
            googleMap.addMarker(new MarkerOptions().position(sydney)
                    .title("Marker in Sydney"));
            googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
        }
    }
    

De forma predeterminada, Maps SDK for Android muestra el contenido de la ventana de información cuando el usuario presiona un marcador. Si deseas utilizar el comportamiento predeterminado, no es necesario agregar un objeto de escucha de clics para el marcador.

Próximos pasos

Obtén más información sobre el objeto de mapa y lo que puedes hacer con los marcadores.