Uma janela de informações permite que você exiba informações para o usuário quando ele toca em um marcador.
Uma janela de informações é desenhada orientada em relação à tela do dispositivo, centralizada acima seu marcador associado. A janela de informações padrão contém o título em negrito, com o texto de snippet abaixo do título.
O conteúdo da janela de informações é definido pelos objetos title
e
Propriedades snippet
do marcador. A janela de informações não é exibida após um clique no marcador se as propriedades title
e snippet
estiverem em branco ou forem nil
.
Apenas uma janela aparece de cada vez. Se um usuário tocar em outro marcador, a janela atual será oculta e a nova janela de informações será aberta. Se o usuário clicar em um marcador que está mostrando uma janela de informações, esse janela de informações fecha e reabre.
Crie uma janela de informações personalizada para adicionar texto ou imagens. Um personalizado janela de informações oferece controle completo da aparência do pop-up.
Adicionar uma janela de informações
O snippet a seguir cria um marcador simples, com apenas um título para o texto da janela de informações.
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;
Com a propriedade snippet
, é possível adicionar mais texto que será exibido
abaixo do título em uma fonte menor. Strings que são maiores que a largura de
da janela de informações são automaticamente quebradas em várias linhas. Mensagens muito
longas podem ser truncadas.
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 uma janela de informações
As janelas de informações são projetadas para responder a eventos de toque do usuário no marcador.
É possível mostrar ou ocultar uma janela de informações de forma programática definindo a selectedMarker
.
propriedade de GMSMapView
:
- Defina
selectedMarker
como o nome do marcador que será mostrado. - Defina
selectedMarker
comonil
para ocultá-lo.
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;
Definição de uma janela de informações para atualização automática
Defina tracksInfoWindowChanges
no
marcador YES
ou true
se você quiser novas propriedades ou o conteúdo das informações
seja exibida imediatamente quando alterada, em vez de ter que esperar
a janela de informações para ocultá-la e depois exibi-la novamente. O padrão é NO
ou false
.
Swift
london.tracksInfoWindowChanges = true
Objective-C
london.tracksInfoWindowChanges = YES;
Para decidir quando definir a
propriedade tracksInfoWindowChanges
,
considere o desempenho em relação às vantagens de ter a
janela de informações redesenhada automaticamente. Exemplo:
- Se precisar fazer uma série de mudanças, mude a propriedade para
YES
. e depois voltar paraNO
. - Quando uma animação está em execução ou o conteúdo está sendo carregado de forma assíncrona,
Mantenha a propriedade definida como
YES
até que as ações sejam concluídas.
Consulte também as notas de consideração quando
usando a propriedade iconView
do marcador.
Como alterar a posição de uma janela de informações
Essas janelas aparecem na tela do dispositivo e ficam centralizadas acima do marcador associado. É possível alterar a posição da janela de informações
em relação ao marcador definindo a propriedade infoWindowAnchor
. Isso
aceita um CGPoint
, definido como um deslocamento (x, y), em que x e y
de 0,0 a 1,0. O deslocamento padrão é (0,5, 0,0), ou seja, o centro
topo. Definir o deslocamento de infoWindowAnchor
é útil para alinhar as informações.
em um ícone 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;
Tratamento de eventos em janelas de informações
Você pode detectar os seguintes eventos da janela de informações:
mapView:markerInfoWindow:
: chamado quando um marcador está prestes a ser selecionado. Opcionalmente, pode retornar uma janela personalizada, como umaUIView
, a ser usada para o marcador. Consulte Janelas de informações personalizadas abaixo para mais informações.mapView:markerInfoContents:
: chamado quandomapView:markerInfoWindow
retorna nulo.mapView:didCloseInfoWindowOfMarker:
: chamado quando a janela de informações do marcador é fechada.mapView:didLongPressInfoWindowOfMarker:
— Chamado depois que uma janela de informações do marcador é pressionada.
Para detectar eventos, você precisa implementar o
GMSMapViewDelegate
. Consulte o
guia de eventos e a lista de métodos no
GMSMapViewDelegate
.
O GitHub (link em inglês) inclui exemplos que demonstram como processar eventos da janela de informações:
Personalizar janelas de informações
Personalize o conteúdo das janelas de informações criando uma subclasse de
UIView
que define o layout da janela de informações personalizada. Nessa subclasse,
defina a visualização como quiser. Por exemplo, é possível usar
UILabel
instâncias para exibir texto de título e snippet e outras visualizações, como
UIImageView
instâncias, para adicionar imagens exibidas na janela de informações.
Confira se o ViewController
implementa o
GMSIndoorDisplayDelegate
e define um listener para o
mapView:markerInfoWindow:
evento. Este listener de eventos é chamado quando um marcador está prestes a se tornar
selecionada e permite que você retorne uma instância da sua classe UIView
personalizada para
defina a janela de informações personalizada usada pelo marcador.
As imagens abaixo mostram uma janela de informações padrão, outra com conteúdo personalizado e uma com frame e segundo plano personalizados.
Os exemplos de código no GitHub fornecidos com o SDK do Maps para iOS incluem exemplos de janelas de informações personalizadas. Por exemplo, veja a definição de MarkerInfoWindowViewController.m (Objective-C) ou MarkerInfoWindowViewController.swift (Swift).
Consulte exemplos de código para informações sobre como fazer o download e executar nessas amostras.