Una ventana de información te permite mostrar información a los usuarios cuando presionan un marcador.
Las ventanas de información se dibujan respecto de la pantalla del dispositivo, centradas encima el marcador asociado. La ventana de información predeterminada contiene el título en negrita, con el texto del fragmento debajo del título.
title
define el contenido de la ventana de información
Propiedades snippet
del marcador Si haces clic en el marcador, no se muestra
de la ventana de información si las propiedades title
y snippet
están en blanco o nil
.
Solo se muestra una de estas ventanas a la vez. Si un usuario toca otro marcador, la ventana actual se ocultará y se abrirá la nueva ventana de información. Si el usuario hace clic en un marcador que actualmente muestra una ventana de información, ese se cerrará y volverá a abrir la ventana de información.
Crea una ventana de información personalizada para agregar imágenes o texto adicionales. Un la ventana de información te brinda el control total del aspecto de la ventana emergente.
Agrega una ventana de información
Con el siguiente fragmento, se crea un marcador simple que lleva solo un título para el texto de la ventana de información.
Swift
let position = CLLocationCoordinate2D(latitude: 51.5, longitude: -0.127) let london = GMSMarker(position: position) london.title = "London" london.map = mapView
Objective-C
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(51.5, -0.127); GMSMarker *london = [GMSMarker markerWithPosition:position]; london.title = @"London"; london.map = mapView;
Con la propiedad snippet
, puedes agregar texto adicional que aparecerá
debajo del título en una fuente más pequeña. Las cadenas que sean más largas que el ancho de
las ventanas de información se ajustan automáticamente en varias líneas. Muy larga
es posible que se trunquen los mensajes.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView;
Mostrar/ocultar una ventana de información
Las ventanas de información están diseñadas para responder a eventos táctiles de los usuarios en el marcador.
Puedes ocultar o mostrar una ventana de información de manera programática si configuras la selectedMarker
.
propiedad de GMSMapView
:
- Establece
selectedMarker
en el nombre del marcador para que se muestre. - Establece
selectedMarker
ennil
para ocultarlo.
Swift
london.title = "London" london.snippet = "Population: 8,174,100" london.map = mapView // Show marker mapView.selectedMarker = london // Hide marker mapView.selectedMarker = nil
Objective-C
london.title = @"London"; london.snippet = @"Population: 8,174,100"; london.map = mapView; // Show marker mapView.selectedMarker = london; // Hide marker mapView.selectedMarker = nil;
Cómo configurar una ventana de información para que se actualice automáticamente
Establece tracksInfoWindowChanges
en
el marcador en YES
o true
si deseas obtener propiedades nuevas o el contenido de la información
la ventana se muestre de inmediato cuando se modifique, en lugar de tener que esperar
la ventana de información para ocultarla y volver a mostrarla. El valor predeterminado es NO
o false
.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
Para decidir cuándo establecer
tracksInfoWindowChanges
, tú
debería sopesar las consideraciones de rendimiento con respecto a las ventajas de contar con
la ventana de información se vuelve a dibujar automáticamente. Por ejemplo:
- Si debes realizar una serie de cambios, puedes cambiar la propiedad a
YES
. luego, regresa aNO
. - Cuando se ejecuta una animación o se cargan contenidos de forma asíncrona,
Debes mantener la propiedad establecida en
YES
hasta que se completen las acciones.
Consulta también las notas para tener en cuenta cuando
con la propiedad iconView
del marcador
Cómo cambiar la posición de una ventana de información
Las ventanas de información siempre se dibujan respecto de la pantalla del dispositivo, centradas encima del marcador asociado. Puedes modificar la posición de la ventana de información
en relación con el marcador estableciendo la propiedad infoWindowAnchor
. Esta
La propiedad acepta un CGPoint
, que se define como un desplazamiento (x,y) en el que tanto x como y
oscilan entre 0.0 y 1.0. El desplazamiento predeterminado es (0.5, 0.0), es decir, el centro
arriba. Establecer el desplazamiento de infoWindowAnchor
es útil para alinear la información.
frente a un icono personalizado.
Swift
london.infoWindowAnchor = CGPoint(x: 0.5, y: 0.5) london.icon = UIImage(named: "house") london.map = mapView
Objective-C
london.infoWindowAnchor = CGPointMake(0.5, 0.5); london.icon = [UIImage imageNamed:@"house"]; london.map = mapView;
Cómo controlar eventos en las ventanas de información
Puedes escuchar los siguientes eventos de la ventana de información:
mapView:markerInfoWindow:
: Se llama cuando un marcador está a punto de seleccionarse. De manera opcional, puede mostrar una ventana de información personalizada, como unaUIView
, para usarla en el marcador. Consulta la sección Ventanas de información personalizadas a continuación para obtener más información.mapView:markerInfoContents:
— Se llama cuandomapView:markerInfoWindow
muestra nil.mapView:didCloseInfoWindowOfMarker:
— Se llama cuando se cierra la ventana de información del marcador.mapView:didLongPressInfoWindowOfMarker:
— Se llama después de mantener presionada la ventana de información de un marcador.
Para escuchar eventos, debes implementar el
Protocolo GMSMapViewDelegate
. Consulta la
guía de eventos y la lista de métodos del
GMSMapViewDelegate
GitHub Incluye ejemplos que muestran cómo controlar los eventos de la ventana de información:
Ventanas de información personalizadas
Personaliza el contenido de las ventanas de información creando una subclase de
UIView
que define el diseño de la ventana de información personalizada. En esa subclase, define la vista como quieras. Por ejemplo, puedes usar
UILabel
para mostrar el texto del título y del fragmento, y otras vistas, como
UIImageView
instancias, para agregar imágenes que se muestran en la ventana de información.
Asegúrate de que tu ViewController
implemente el
GMSIndoorDisplayDelegate
protocolo y define un objeto de escucha para el
mapView:markerInfoWindow:
para cada evento. Se llama a este objeto de escucha de eventos cuando un marcador está a punto de convertirse.
y te permite mostrar una instancia de tu clase UIView
personalizada a
definir la ventana de información personalizada que utilizará el marcador.
En las siguientes imágenes, se muestran tres ventanas de información: una predeterminada, otra con contenido personalizado y otra con el marco y el fondo personalizados.
Las muestras de código en GitHub proporcionados con el SDK de Maps para iOS ejemplos de ventanas de información personalizadas. Por ejemplo, consulta la definición de MarkerInfoWindowViewController.m (Objective-C) o MarkerInfoWindowViewController.swift (Swift).
Consulta las muestras de código para obtener información sobre cómo descargar y ejecutar estas muestras.