Empresas y otros lugares de interés

Selecciona la plataforma: Android iOS JavaScript

De forma predeterminada, los lugares de interés aparecen en el Mapa base junto con sus íconos correspondientes. Los lugares de interés incluyen parques, escuelas, edificios gubernamentales y mucho más. Además, los lugares de interés comerciales aparecen de forma predeterminada en el mapa cuando el tipo de mapa es kGMSTypeNormal. Estos últimos representan empresas como tiendas, restaurantes, hoteles, etc.

Un lugar de interés corresponde a un ID de lugar, según se define en el SDK de Places para iOS. Por ejemplo, los parques recreativos son lugares de interés, pero los elementos como las fuentes de agua no suelen considerarse como tales (a menos que tengan cierta importancia histórica o nacional).

Cómo detectar eventos de clic en lugares de interés

Si deseas responder a la acción de un usuario que presiona un lugar de interés, implementa GMSMapViewDelegate y el método mapView(_:didTapPOIWithPlaceID:name:location:), como se muestra en el siguiente ejemplo:

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
      

Cómo mostrar detalles en una ventana de información

Los lugares de interés aparecen en el mapa de forma predeterminada, pero no hay una IU on-click predeterminada (la API no muestra automáticamente una ventana de información ni ninguna otra interfaz de usuario cuando el usuario presiona un lugar de interés). En el siguiente ejemplo, se muestra cómo usar un marcador para mostrar una ventana de información para un lugar de interés:

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;
}
      

Evita que se muestren lugares de interés en el mapa

Para ocultar lugares de interés, puedes aplicar diseños personalizados a todos ellos o a determinadas categorías.

La siguiente declaración de diseño JSON oculta todos los lugares de interés comerciales en el mapa:

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

En este otro ejemplo, el siguiente JSON simplifica la visualización de todas las categorías de lugares de interés:

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

Para obtener más información, consulta la guía sobre cómo ocultar los componentes del mapa con los ajustes de diseño.