Empresas e outros pontos interesse

Selecione a plataforma: Android iOS JavaScript

Por padrão, os pontos de interesse (PDIs) aparecem no mapa de base com os respectivos ícones. Esses pontos incluem parques, escolas, edifícios governamentais e muito mais. Além disso, os PDIs comerciais aparecem por padrão no mapa quando o tipo dele é kGMSTypeNormal. Eles representam empresas como lojas, restaurantes, hotéis e outros.

Um PDI corresponde a um ID de lugar, conforme definido no SDK do Places para iOS. Por exemplo, parques são pontos de interesse, mas coisas como fontes d'água geralmente não são, a menos que tenham significado nacional ou histórico.

Detectar eventos de clique em PDIs

Se quiser responder a um usuário que tocou em um PDI, implemente GMSMapViewDelegate, e implemente o método mapView(_:didTapPOIWithPlaceID:name:location:), conforme mostrado no exemplo a seguir:

Swift

import GoogleMaps

class POI: UIViewController, GMSMapViewDelegate {

  override func loadView() {
    let camera = GMSCameraPosition.camera(
      withLatitude: 47.603,
      longitude:-122.331,
      zoom:14
    )
    let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
    mapView.delegate = self
    self.view = mapView
  }

  func mapView(
    _ mapView: GMSMapView,
    didTapPOIWithPlaceID placeID: String,
    name: String,
    location: CLLocationCoordinate2D
  ) {
    print("You tapped \(name): \(placeID), \(location.latitude)/\(location.longitude)")
  }
}
      

Objective-C

#import "POI.h"
@import GoogleMaps;

@interface POI () <GMSMapViewDelegate>

@end

@implementation POI

- (void)loadView {
  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:47.603
                                                            longitude:-122.331
                                                                 zoom:14];
  GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
  mapView.delegate = self;
  self.view = mapView;
}

#pragma mark - GMSMapViewDelegate

- (void)mapView:(GMSMapView *)mapView
    didTapPOIWithPlaceID:(NSString *)placeID
                    name:(NSString *)name
                location:(CLLocationCoordinate2D)location {
  NSLog(@"You tapped %@: %@, %f/%f", name, placeID, location.latitude, location.longitude);
}

@end
      

Mostrar detalhes em uma janela de informações

Os PDIs aparecem no mapa por padrão, mas não há interface padrão ao clicar (a API não mostra automaticamente uma janela de informações ou qualquer outra interface do usuário quando alguém toca em um PDI). O exemplo a seguir mostra como usar um marcador para exibir uma janela de informações de um PDI:

Swift

// Declare GMSMarker instance at the class level.
let infoMarker = GMSMarker()

// Attach an info window to the POI using the GMSMarker.
func mapView(
  _ mapView: GMSMapView,
  didTapPOIWithPlaceID placeID: String,
  name: String,
  location: CLLocationCoordinate2D
) {
  infoMarker.snippet = placeID
  infoMarker.position = location
  infoMarker.title = name
  infoMarker.opacity = 0;
  infoMarker.infoWindowAnchor.y = 1
  infoMarker.map = mapView
  mapView.selectedMarker = infoMarker
}
      

Objective-C

// Declare a GMSMarker instance at the class level.
GMSMarker *infoMarker;

// Attach an info window to the POI using the GMSMarker.
- (void)mapView:(GMSMapView *)mapView
    didTapPOIWithPlaceID:(NSString *)placeID
                    name:(NSString *)name
                location:(CLLocationCoordinate2D)location {
  infoMarker = [GMSMarker markerWithPosition:location];
  infoMarker.snippet = placeID;
  infoMarker.title = name;
  infoMarker.opacity = 0;
  CGPoint pos = infoMarker.infoWindowAnchor;
  pos.y = 1;
  infoMarker.infoWindowAnchor = pos;
  infoMarker.map = mapView;
  mapView.selectedMarker = infoMarker;
}
      

Impedir que os PDIs sejam mostrados no mapa

Para ocultar pontos de interesse, aplique estilos personalizados a todos os PDIs ou a categorias específicas deles.

A seguinte declaração de estilo JSON oculta todos os PDIs de empresas no mapa:

[
  {
    "featureType": "poi.business",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

Em outro exemplo, o JSON abaixo simplifica a exibição de todas as categorias de PDIs:

[
  {
    "featureType": "poi",
    "stylers": [
      { "visibility": "simplified" }
    ]
  }
]

Para mais detalhes, consulte o guia sobre como ocultar elementos do mapa com estilos.