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 los marcadores, las superposiciones de suelo se orientan en función de la superficie de la Tierra en lugar de la pantalla, por lo que rotar, inclinar o acercar el mapa cambiará la orientación de la imagen.
Para agregar una superposición terrestre, crea un objeto GMSGroundOverlay
que defina un ícono y un límite. Si no especificas ninguno, la superposición de terreno no aparecerá en el mapa. De manera opcional, puedes especificar parámetros de configuración adicionales que afectarán la posición 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
- Crea una instancia de un objeto
GMSGroundOverlay
nuevo. - Establece la propiedad
icon
en una instancia deUIImage
. - Establece la propiedad
bounds
en una instancia deGMSCoordinateBounds
. Los límites representan las esquinas suroeste y noreste de la imagen. - Establece propiedades opcionales, como
bearing
yzoomLevel
, según sea necesario. - Establece la propiedad
map
. La imagen aparecerá 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, configura la propiedad map
de tu GMSGroundOverlay
en nil
. Como alternativa, puedes quitar todas las superposiciones (incluidas las superposiciones terrestres 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 terreno más adelante si realizas 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 eventos que ocurren en el mapa, como cuando un usuario presiona una superposición. Para escuchar eventos, debes implementar el protocolo GMSMapViewDelegate
. Consulta la guía de eventos y la lista de métodos en GMSMapViewDelegate
.