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.