Configurar um mapa

Selecione a plataforma: Android iOS

Neste tópico, descrevemos como configurar um mapa que foi adicionado a um app iOS usando o SDK do Maps para iOS.

Informações gerais

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

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

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

Tipos de mapa

É possível personalizar o mapa com um dos diversos tipos de mapa. O tipo determina a representação geral do mapa. Por exemplo, um atlas geralmente contém mapas políticos que se concentram em mostrar limites e mapas estradas 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 recursos criados pelo homem e recursos naturais importantes, como rios. Etiquetas de estradas e de elementos também são visíveis.
Híbrido
Valor: kGMSTypeHybrid
Dados de fotografia de satélite com mapas rodoviários incluído. Etiquetas de vias e elementos também são visíveis.
Satélite
Valor: kGMSTypeSatellite
Dados de fotografia de satélite. As etiquetas de vias e elementos não estão visíveis.
Terreno
Valor: kGMSTypeTerrain
Dados topográficos. O mapa inclui cores, linhas de contorno e rótulos, além de sombreamento de perspectiva. Algumas vias e etiquetas também são visíveis.
Nenhum
Valor: kGMSTypeNone
Não há blocos de mapa. Os blocos do mapa básico não são renderizados. Esse modo é útil junto com as camadas de blocos. A exibição de dados de trânsito é desativada quando o tipo de mapa é definido como "nenhum".

Como alterar 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 camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 6)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.mapType = .satellite
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:6];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.mapType = kGMSTypeSatellite;
      

O seletor abaixo mostra uma comparação dos mapas de terreno, normal e híbrido para o mesmo local:

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 do tipo de mapa "normal" (kGMSTypeNormal). Elas são ativadas automaticamente quando o usuário aumenta o zoom e desaparecem quando ele é reduzido.

É possível desativar os mapas internos definindo a propriedade indoorEnabled de GMSMapView como NO.

Swift

mapView.isIndoorEnabled = false
      

Objective-C

mapView.indoorEnabled = NO;
      

Como alternativa, você pode desativar apenas o controle do seletor de solo.

Adicionar plantas baixas

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

  • adicionar plantas baixas ao Google Maps diretamente, Assim, os planos são disponibilizados a todos os usuários do Google Maps.
  • Exibir uma planta baixa como uma sobreposição de solo. Isso permitirá que apenas os usuários do aplicativo vejam 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. Para ativar ou desativar essa camada, chame 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. Você pode ativar a acessibilidade definindo a propriedade accessibilityElementsHidden de GMSMapView como NO. Isso faz com que elementos de acessibilidade sejam gerados para objetos de sobreposição (como GMSMarker, janelas de informações, GMSPolyline etc.).

Swift

mapView.accessibilityElementsHidden = false
      

Objective-C

mapView.accessibilityElementsHidden = NO;
      

Essa propriedade está de acordo com o protocolo informal UIAccessibility, mas o valor padrão no SDK do Maps para iOS é YES.

Meu local

Por padrão, nenhum dado de localização é mostrado no mapa. Para ativar o ponto azul "Meu local" e a direção da bússola, defina myLocationEnabled em GMSMapView.

Swift

mapView.isMyLocationEnabled = true
      

Objective-C

mapView.myLocationEnabled = YES;
      

A ativação desse recurso também informa a localização atual do usuário pela propriedade myLocation. Essa propriedade pode não estar imediatamente disponível, por exemplo, se o iOS solicitar que o usuário permita o acesso a esses dados. Nesse caso, será nulo.

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 de Seattle, Washington, abaixo.

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

É possível desativar as construções em 3D definindo a propriedade GMSMapView correspondente no Swift ou 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 será 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 continuará preenchendo todo o contêiner, mas o posicionamento do texto e dos controles, os gestos do mapa e os movimentos da câmera responderão como se estivessem em um espaço menor. Isso resulta nas seguintes mudanças:

  • Os movimentos da câmera via chamadas de API ou uso de botões (por exemplo, bússola, "Meu local") serão relativos à região preenchida.
  • GMSMapView.projection retornará uma projeção que inclui apenas a região preenchida.
  • Os controles de IU serão deslocados da margem do contêiner pelo número especificado de pontos.

O padding pode ser útil ao criar IUs que se sobrepõem a uma parte do mapa. Por exemplo, na imagem inferior, o mapa é preenchido nas margens superior e direita. Controles de mapa e texto legal visíveis são exibidos nas margens da região preenchida, em verde, enquanto o mapa continua preenchendo o contêiner inteiro, mostrado em azul. Nesse exemplo, você poderia exibir um menu flutuante no lado direito, sem ocultar os controles.

Padding do mapa

Para adicionar padding ao mapa, crie um objeto UIEdgeInsets e transmita-o ao GMSMapView.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;