Configurar um mapa

Selecione a plataforma: Android iOS

Esta descrição geral mostra como configurar um mapa que foi adicionado a um app iOS usando o SDK do Maps para iOS.

Visão geral

Depois de adicionar um mapa ao app, você pode definir as opções iniciais e as configurações de tempo de execução do mapa. Para saber mais sobre como adicionar um contêiner de mapa, consulte Adicionar um mapa.

As configurações iniciais do mapa incluem o seguinte:

No momento da execução, é possível definir essas e outras configurações atualizando o objeto GMSMapView.

Opções do mapa

Ao inicializar a visualização do mapa, as opções de configuração são definidas com GMSMapViewOptions. As propriedades de opção incluem frame, camera, mapID ou backgroundColor.

Opções do mapa
moldura
Valor: CGRect
O frame do mapa. O padrão é CGRectZero.
câmera
Valor: GMSCameraPosition
A posição padrão da câmera do mapa.
mapID
Valor: GMSMapID
ID do mapa do Google. Parâmetro opcional.
backgroundColor
Valor: UIColor
O padrão é UIColor.lightGray

Configurar opções de mapa

É possível definir suas próprias propriedades de opção ou transmitir um GMSMapViewOptions instanciado com valores padrão diretamente para GMSMapView.

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Confira um exemplo de transmissão de um objeto GMSMapViewOptions com valores padrão diretamente para GMSMapView.

Swift

let options = GMSMapViewOptions()
let mapView = GMSMapView(options:options) //initialized with default values

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options]; //initialized with default values

Configurar a cor do plano de fundo

Ao trabalhar no modo escuro ou alternar entre as visualizações do mapa, pode ser útil substituir a cor de plano de fundo padrão do mapa. Isso pode ser feito definindo a propriedade backgroundColor das opções do mapa.

Swift

let options = GMSMapViewOptions()
options.backgroundColor = UIColor.yellowColor
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.backgroundColor = UIColor.yellowColor;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

Tipos de mapa

É possível personalizar o mapa com um dos diversos tipos de mapa. O tipo de um mapa controla a representação geral do mapa. Por exemplo, um atlas geralmente contém mapas políticos que mostram fronteiras e mapas rodoviários que mostram todas as vias de uma cidade ou região. O SDK do Maps para iOS oferece os seguintes tipos de mapa:

Tipo de mapa
Normal
Valor: kGMSTypeNormal
Mapa rodoviário típíco. Mostra vias, alguns elementos criados pelo homem e recursos naturais importantes, como rios. Etiquetas de estradas e de elementos também são visíveis. Oferece suporte à definição do esquema de cores do mapa como escuro, claro ou para seguir as configurações do sistema.
Híbrido
Valor: kGMSTypeHybrid
Dados de fotografia de satélite com mapas rodoviários incluído. Os rótulos de vias e de elementos também são visíveis.
Satélite
Valor: kGMSTypeSatellite
Dados de fotografia de satélite. Os rótulos de vias e recursos não são visíveis.
Relevo
Valor: kGMSTypeTerrain
Dados topográficos. O mapa inclui cores, curvas de nível e rótulos, além de sombreamento de perspectiva. Algumas vias e etiquetas também são visíveis. Oferece suporte à definição do esquema de cores do mapa como escuro, claro ou para seguir as configurações do sistema.
Nenhum
Valor: kGMSTypeNone
Não há blocos de mapa. Os blocos do mapa básico não são renderizados. Esse modo é útil com as camadas de blocos. A exibição de dados de trânsito é desativada quando o tipo de mapa é definido como "nenhum".

Como mudar o tipo de mapa

Para definir o tipo de um mapa, atribua um novo valor à propriedade GMSMapView.mapType. Por exemplo, para exibir um mapa do tipo satélite:

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView(options:options)
mapView.mapType = .satellite

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                  longitude:151.2086
                                                        zoom:6];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
mapView.mapType = kGMSTypeSatellite;

O seletor abaixo mostra uma comparação dos tipos de mapa terreno, normal e híbrido para a mesma localização:

Mapas internos

Em níveis altos de zoom, o SDK do Maps para iOS mostra plantas baixas de espaços internos, como aeroportos, shoppings, grandes lojas de varejo e estações de transporte público. As plantas baixas internas são integradas aos blocos de mapa padrão para o tipo de mapa "normal" (kGMSTypeNormal) e são ativadas automaticamente quando o usuário aumenta o zoom e desaparecem quando o zoom do mapa é diminuído.

Para desativar os mapas internos, defina a propriedade indoorEnabled de GMSMapView como NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Como alternativa, é possível desativar apenas o controle do seletor de andar.

Como adicionar plantas baixas

As plantas baixas estão disponíveis em locais selecionados. Se não houver dados de planta baixa para um edifício que você quer destacar no seu app, será possível:

  • Adicionar plantas baixas diretamente ao Google Maps. Isso disponibiliza essas plantas para todos os usuários do Google Maps.
  • Exibir uma planta baixa como uma sobreposição de solo. Assim, apenas os usuários do aplicativo poderão ver as plantas baixas.

Camada de trânsito

Você pode permitir que os usuários visualizem o mapa com informações de densidade de trânsito sobrepostas. Com isso, eles terão acesso a um resumo visual da situação do trânsito local. É possível ativar ou desativar a camada de trânsito chamando o método trafficEnabled. O exemplo a seguir mostra como a camada de tráfego pode aparecer em um mapa.

Um mapa do Google mostrando a camada de trânsito

Acessibilidade

Por padrão, os elementos de acessibilidade do mapa estão ocultos. É possível ativar a acessibilidade definindo a propriedade accessibilityElementsHidden de GMSMapView como NO. Isso faz com que os elementos de acessibilidade sejam gerados para objetos de sobreposição (como GMSMarker e janelas de informações, GMSPolyline etc.).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Essa propriedade é igual ao protocolo informal UIAccessibility, exceto pelo valor padrão no SDK do Maps para iOS, que é YES.

Meu local

Por padrão, nenhum dado de localização é mostrado no mapa. Você pode ativar o ponto azul "Meu Local" e a direção da bússola definindo myLocationEnabled em GMSMapView.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

A ativação desse recurso fornece a localização atual do usuário pela propriedade myLocation. É possível que essa propriedade não esteja disponível imediatamente, por exemplo, se o iOS solicitar que o usuário permita o acesso a esses dados. Nesse caso, é nil.

Swift

print("User's location: \(String(describing: mapView.myLocation))")
      

Objective-C

NSLog(@"User's location: %@", mapView.myLocation);
      

Construções em 3D

Quando vistas de perto, diversas cidades têm construções visíveis em 3D, como na imagem abaixo de Seattle, Washington.

Um mapa 3D de edifícios em Seattle, Washington.

Para desativar as construções em 3D, defina a propriedade GMSMapView correspondente no Swift ou no Objective-C, conforme mostrado abaixo:

Swift

mapView.isBuildingsEnabled = false
      

Objective-C

[mapView setBuildingsEnabled:NO];
      

Padding do mapa

Um mapa do Google é projetado para preencher toda a região definida pelo GMSMapView. Vários aspectos da exibição e do comportamento de um mapa são definidos pelas dimensões da visualização:

  • O alvo da câmera reflete o centro da região preenchida.
  • Os controles do mapa são posicionados em relação às margens dele.
  • Informações legais, como declarações de direitos autorais ou o logotipo do Google, aparecem na margem inferior.

Para adicionar padding ao redor das margens do mapa, use o método GMSMapView.Propriedade padding. O mapa continua preenchendo todo o contêiner, mas o posicionamento do texto e dos controles, os gestos do mapa e os movimentos da câmera se comportam como se estivessem em um espaço menor. Isso resulta nas seguintes mudanças:

  • Os movimentos da câmera usando chamadas de API ou pressionamento de botões (por exemplo, bússola, meu local) são relativos à região preenchida.
  • GMSMapView.projection retorna uma projeção que inclui apenas a região preenchida.
  • Os controles de interface são deslocados da margem do contêiner pelo número especificado de pontos.

O preenchimento pode ser útil ao projetar interfaces de usuário que se sobrepõem a uma parte do mapa. Por exemplo, na imagem, o mapa é preenchido nas margens superior e direita. Os controles de mapa visíveis e o texto legal são exibidos ao longo das margens da região preenchida, em verde, enquanto o mapa continua preenchendo todo o contêiner, mostrado em azul. Nesse exemplo, é possível flutuar um menu sobre o lado direito do mapa sem impedir a visão dos controles.

Padding do mapa

Para adicionar preenchimento ao mapa, crie um objeto UIEdgeInsets e transmita-o ao GMSMapView.Propriedade padding.

Swift

// Insets are specified in this order: top, left, bottom, right
let mapInsets = UIEdgeInsets(top: 100.0, left: 0.0, bottom: 0.0, right: 300.0)
mapView.padding = mapInsets
      

Objective-C

// Insets are specified in this order: top, left, bottom, right
UIEdgeInsets mapInsets = UIEdgeInsetsMake(100.0, 0.0, 0.0, 300.0);
mapView.padding = mapInsets;
      

Mapear esquema de cores

Para mapas do tipo normal e terreno, você pode definir o esquema de cores do mapa como escuro, claro ou usar as configurações atuais do sistema. Por exemplo, você pode escurecer ou clarear o esquema de cores do mapa com base no horário do dia ou no uso interno ou externo do dispositivo.

Use GMSMapView overrideUserInterfaceStyle: para definir e atualizar o esquema de cores do mapa.

Swift

let options = GMSMapViewOptions()
// Map is init to use light mode by default.
let mapView = GMSMapView(options: options)
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = .dark
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = .light
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = .unspecified

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
// Map is init to always use light mode.
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];
// Set map to use dark mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
// Set map to use light mode.
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
// Set map to use dark/light mode based on the value of traitCollection.userInterfaceStyle
mapView.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;