Superposiciones de suelo

Selecciona la plataforma: Android iOS JavaScript

Las superposiciones de suelo son superposiciones en el mapa que están vinculadas a las coordenadas de latitud y longitud, por lo que se mueven cuando arrastras, acercas o alejas el mapa.

Introducción

Una superposición de suelo es una imagen que se fija a un mapa. A diferencia de lo que sucede con los marcadores, que se dibujan respecto de la pantalla, las superposiciones de suelo se dibujan teniendo en cuenta la superficie de la Tierra. Por lo tanto, la orientación de la imagen cambiará al rotar, inclinar, acercar o alejar el mapa.

Para agregar una superposición de suelo, crea un GMSGroundOverlay objeto que defina un ícono y límites. Si no especificas ninguno de los dos, la superposición de suelo no aparecerá en el mapa. De manera opcional, puedes especificar parámetros de configuración adicionales que afectarán el posicionamiento de la imagen en el mapa. Una vez que hayas definido las opciones necesarias, establece la propiedad map de este objeto para agregar la superposición.

Cómo agregar una superposición

  1. Crea una instancia de un objeto GMSGroundOverlay nuevo.
  2. Establece la propiedad icon en una instancia de UIImage.
  3. Establece la propiedad bounds en una instancia de GMSCoordinateBounds. Los límites representan las esquinas suroeste y noreste de la imagen.
  4. Establece las propiedades opcionales, como bearing y zoomLevel, según desees.
  5. Establece la propiedad map. La imagen aparece en el mapa.

En el siguiente ejemplo, se muestra cómo agregar una superposición de suelo a un objeto GMSMapView existente:

Swift

let southWest = CLLocationCoordinate2D(latitude: 40.712216, longitude: -74.22655)
let northEast = CLLocationCoordinate2D(latitude: 40.773941, longitude: -74.12544)
let overlayBounds = GMSCoordinateBounds(coordinate: southWest, coordinate: northEast)

// Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg
let icon = UIImage(named: "newark_nj_1922")

let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon)
overlay.bearing = 0
overlay.map = mapView
      

Objective-C

CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(40.712216,-74.22655);
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(40.773941,-74.12544);
GMSCoordinateBounds *overlayBounds = [[GMSCoordinateBounds alloc] initWithCoordinate:southWest
                                                                        coordinate:northEast];

// Image from http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg
UIImage *icon = [UIImage imageNamed:@"newark_nj_1922"];
GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon];
overlay.bearing = 0;
overlay.map = mapView;
      

Cómo quitar una superposición

Para quitar una superposición de suelo del mapa, establece la propiedad map de tu GMSGroundOverlay en nil. Como alternativa, puedes quitar todas las superposiciones (incluidas las superposiciones de suelo que se encuentran actualmente en el mapa) llamando al método clear de GMSMapView.

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

Si deseas realizar modificaciones en una superposición de suelo después de agregarla al mapa, asegúrate de conservar el objeto GMSGroundOverlay. Puedes modificar la superposición de suelo más adelante realizando cambios en este objeto.

Swift

let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon)
overlay.bearing = 0
overlay.map = mapView

// ...

overlay.isTappable = true
      

Objective-C

GMSGroundOverlay *overlay = [GMSGroundOverlay groundOverlayWithBounds:overlayBounds icon:icon];
overlay.bearing = 0;
overlay.map = mapView;

// ...
overlay.tappable = YES;
      

Eventos

Puedes escuchar los eventos que ocurren en el mapa, como cuando un usuario presiona una superposición. Para escuchar eventos, debes implementar el GMSMapViewDelegate protocolo. Consulta la guía de eventos y la lista de métodos en la GMSMapViewDelegate.