Eso es todo.

Para comenzar a desarrollar, consulta nuestra documentación para desarrolladores.

Activar la Google Maps Android API

Para que puedas comenzar, te proporcionaremos orientación en la Google Developers Console a fin de que hagas primero algunas acciones:

  1. Crear o seleccionar un proyecto
  2. Activar la Google Maps Android API
  3. Crear claves correspondientes
Continuar

Superposiciones de suelo

Las superposiciones de suelo son superposiciones de imágenes relacionadas con coordenadas de latitud y longitud, por lo que se mueven cuando arrastras el mapa o le aplicas zoom.

Ejemplos de código

En el repositorio de ApiDemos de GitHub se incluye un ejemplo en el que se muestran superposiciones de suelo:

Introducción

Una superposición de suelo es una imagen que se fija a un mapa. A diferencia de los [marcadores], las superposiciones de suelo se orientan respecto de la superficie terrestre en lugar de la pantalla. Por lo tanto, la aplicación de rotación, inclinación o zoom al mapa hará que cambie la orientación de la imagen. Las superposiciones de suelo resultan útiles cuando deseas fijar una imagen en un área del mapa. Si deseas agregar imágenes amplias que ocupen una gran parte del mapa, debes considerar aplicar una superposición de título.

Agregar una superposición

Para agregar una GroundOverlay, crea un objeto GroundOverlayOptions que defina una imagen y una posición. Como opción, puedes especificar una configuración adicional que tenga efecto en el posicionamiento de la imagen del mapa. Una vez que definas las opciones necesarias, pasa el objeto al método GoogleMap.addGroundOverlay() para agregar la imagen al mapa. El método addGroundOverlay() devuelve un objeto GroundOverlay. Debes conservar una referencia a a este objeto si deseas modificarlo posteriormente.

Nota: Cuando se agregue la imagen al mapa, este se convertirá en una imagen con lados que representan potencias de dos. Puedes evitar esta conversión usando una imagen original con dimensiones que son potencias de dos; por ejemplo, 128x512 o 1024x1024.

Paso a paso:

  1. Crea una instancia de un objeto GroundOverlayOptions nuevo.
  2. Especifica la imagen como un BitmapDescriptor.
  3. Establece la posición de la imagen usando uno de los métodos disponibles:
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. Configura las propiedades opcionales, como transparency, según lo desees.
  5. Llama a GoogleMap.addGroundOverlay() para agregar la imagen al mapa.

En el ejemplo siguiente se demuestra la manera de agregar una superposición de suelo a un objeto GoogleMap existente.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);
map.addGroundOverlay(newarkMap);

Si deseas cambiar o eliminar una superposición de suelo después de agregarlo al mapa, asegúrate de conservar el objeto GroundOverlay. Puedes modificar la superposición posteriormente aplicando cambios a este objeto.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);

// Agrega una superposición al mapa y conserva un controlador para el objeto GroundOverlay.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

Eliminar una superposición

Puedes eliminar una superposición de suelo con el método GroundOverlay.remove().

imageOverlay.remove();

Cambiar una superposición

Puedes cambiar la imagen de superposición de suelo después de agregarla al mapa con el método GroundOverlay.setImage(BitmapDescriptor).

// Agrega una superposición y conserva un controlador para el objeto GroundOverlay.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

// Actualiza GroundOverlay con una nueva imagen con las mismas dimensiones.
imageOverlay = map.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1975));

El método setImage() reemplazará la imagen existente con otra imagen de las mismas dimensiones.

Posicionar una superposición de suelo

Existen dos maneras de especificar la posición de la superposición de suelo:

  • Usar LatLng para centrar la superposición y dimensiones en metros para especificar el tamaño de la imagen.
  • Usar LatLngBounds para especificar los ángulos noreste y sudoeste de la imagen.

Debes especificar la posición de la superposición de suelo antes de agregarla al mapa:

Usar una ubicación para posicionar una imagen

Cuando se agrega una imagen se especifica un objeto LatLng al cual se fijará el anclaje y el ancho de la superposición (en metros). El valor predeterminado del anchor es el centro de la imagen. Como opción, puedes proporcionar la altura de la superposición (en metros). Si no lo haces, esta se calculará en forma automática para preservar las proporciones de la imagen.

Con el código siguiente se dispone una imagen en la posición 40.714086, -74.228697 de 8,6 km de ancho por 6,5 km de alto. La imagen queda anclada en la parte inferior izquierda.

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .anchor(0, 1)
        .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);

Usar LatLngBounds para posicionar una imagen

Se proporciona un objeto LatLngBounds que contiene la imagen. LatLngBounds establece los ángulos noreste y sudoeste de la imagen. Cuando se dibuje la imagen en el mapa, se rotará para adecuarla a los límites. Si los límites no coinciden con la relación de aspecto original, la imagen se distorsionará.

El código siguiente dispone una imagen en el mapa con su ángulo sudoeste establecido en 40.712216,-74.22655 y su ángulo noreste establecido en 40.773941, -74.12544.

LatLngBounds newarkBounds = new LatLngBounds(
        new LatLng(40.712216, -74.22655),       // South west corner
        new LatLng(40.773941, -74.12544));      // North east corner
GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .positionFromBounds(newarkBounds);

Controlar eventos de superposición de suelo

De forma predeterminada, las superposiciones de suelo no admiten clics. Puedes habilitar e inhabilitar la admisión de clics llamando a GroundOverlay.setClickable(boolean).

Usa un OnGroundOverlayClickListener para detectar eventos de clics en una superposición de suelos que admita clics. Para configurar este receptor en el mapa, llama a GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener). Cuando un usuario haga clic en una superposición de suelo, recibirás un callback onGroundOverlayClick(GroundOverlay).

Enviar comentarios sobre...

Google Maps Android API
Google Maps Android API
Si necesitas ayuda, visita nuestra página de asistencia.