Controles e gestos

Selecione a plataforma: Android iOS JavaScript

Com o SDK do Maps para iOS, é possível personalizar a forma como os usuários interagem com seu mapa, determinando quais dos componentes de IU incorporados aparecem no mapa e quais gestos são permitidos.

Controles do mapa

O SDK do Maps para iOS oferece alguns controles integrados que são semelhantes aos encontrados no app Google Maps para iOS. É possível alternar a visibilidade desses controles usando a classe GMSUISettings. As alterações feitas nessa classe são aplicadas imediatamente ao mapa.

Bússola

O SDK do Maps para iOS fornece um gráfico de bússola que aparece no canto superior direito do mapa em determinadas circunstâncias. A bússola só será exibida quando a câmera estiver orientada com um rolamento diferente de zero. Quando o usuário clica na bússola, a câmera volta para uma posição com rumo zero (orientação padrão), e a bússola desaparece pouco tempo depois.

Por padrão, a bússola é desativada. É possível ativar a bússola definindo a propriedade compassButton de GMSUISettings como YES. No entanto, não é possível forçar a exibição permanente da bússola.

Swift

let camera = GMSCameraPosition(latitude: 37.757815, longitude: -122.50764, zoom: 12)
let mapView = GMSMapView(frame: .zero, camera: camera)
mapView.settings.compassButton = true
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:37.757815
                                                        longitude:-122.50764
                                                             zoom:12];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.settings.compassButton = YES;
      

Botão "Meu local"

O botão "Meu local" aparece no canto inferior direito da tela somente quando o botão "Meu local" está ativado. Quando um usuário clica no botão, a câmera anima para focar o local atual do usuário, se esse local for conhecido no momento. É possível ativar o botão definindo a propriedade myLocationButton de GMSUISettings como YES.

Swift

mapView.settings.myLocationButton = true
      

Objective-C

mapView.settings.myLocationButton = YES;
      

Seletor de andar

O controle do seletor de andar é exibido perto do canto inferior direito da tela sempre que um mapa interno aparece em destaque. Quando dois ou mais mapas internos estão visíveis, o seletor de andar está relacionado ao edifício mais próximo do centro da tela. Cada edifício tem um andar padrão, que é selecionado na primeira exibição do seletor. Os usuários podem escolher um andar diferente selecionando-o no seletor.

Para desativar o controle do seletor de andar, defina a propriedade indoorPicker de GMSUISettings como NO.

Swift

mapView.settings.indoorPicker = false
      

Objective-C

mapView.settings.indoorPicker = NO;
      

Gestos do mapa

É possível desativar os gestos padrão no mapa definindo propriedades da classe GMSUISettings, que está disponível como uma propriedade de GMSMapView. Os gestos a seguir podem ser ativados e desativados programaticamente. A desativação do gesto não limitará o acesso programático às configurações da câmera.

  • scrollGestures: controla se os gestos de rolagem estão ativados ou desativados. Se ativados, os usuários podem deslizar o dedo para deslocar a câmera.
  • zoomGestures: controla se os gestos de zoom são ativados ou desativados. Se ativados, os usuários podem tocar duas vezes, tocar com dois dedos ou fazer gesto de pinça para aplicar zoom na câmera. Tocar duas vezes ou fazer gesto de pinça quando scrollGestures estiver ativado pode movimentar a câmera até o ponto especificado.
  • tiltGestures: controla se os gestos de inclinação estão ativados ou desativados. Se ativados, os usuários podem deslizar dois dedos para baixo ou para cima para inclinar a câmera.
  • rotateGestures: controla se os gestos de rotação estão ativados ou desativados. Se ativados, os usuários podem usar um gesto de rotação de dois dedos para girar a câmera.

No exemplo a seguir, os gestos de deslocamento e zoom foram desativados.

Swift

override func loadView() {
  let camera = GMSCameraPosition.camera(
    withLatitude: 1.285,
    longitude: 103.848,
    zoom: 12
  )

  let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
  mapView.settings.scrollGestures = false
  mapView.settings.zoomGestures = false
  self.view = mapView
}
      

Objective-C

- (void)loadView {
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285
                                                          longitude:103.848
                                                               zoom:12];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  mapView.settings.scrollGestures = NO;
  mapView.settings.zoomGestures = NO;
  self.view = mapView;
}