Domyślnie ciekawe miejsca (POI) są wyświetlane na mapie podstawowej wraz z ich
odpowiadające im ikony. Ciekawe miejsca to między innymi parki, szkoły, budynki rządowe
i innych. Ponadto domyślnie na mapie wyświetlają się ciekawe miejsca firmowe,
typ to kGMSTypeNormal
. Ciekawe miejsca biznesowe to firmy, takie jak sklepy,
restauracji, hoteli itp.
Ciekawe miejsce odpowiada identyfikatorowi miejsca, zgodnie z definicją w pakiecie Places SDK na iOS. Na przykład parki rozrywki to ważne miejsca, ale takie rzeczy jak fontanny zwykle nie są ważnym miejscem (chyba że o znaczeniu narodowym lub historycznym).
Nasłuchiwanie zdarzeń kliknięcia w ważnych miejscach
Jeśli chcesz odpowiadać użytkownikowi klikającym ciekawe miejsce, zaimplementuj GMSMapViewDelegate
oraz
mapView(_:didTapPOIWithPlaceID:name:location:)
zgodnie z poniższym przykładem:
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
Wyświetlam szczegóły w oknie informacyjnym
Ciekawe miejsca są domyślnie wyświetlane na mapie, ale nie ma interfejsu nie wyświetla automatycznie okna informacyjnego ani żadnego innego interfejsu użytkownika, użytkownik kliknie ciekawe miejsce). Poniższy przykład pokazuje, jak użyć znacznika do wyświetlić okno informacyjne o ważnym miejscu:
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; }
Wyłączam wyświetlanie ciekawych miejsc na mapie
Możesz ukryć ciekawe miejsca, stosując style niestandardowe do wszystkich ciekawych miejsc lub do określonych kategorii ciekawych miejsc.
Poniższa deklaracja stylu JSON ukrywa wszystkie ważne miejsca związane z firmą na mapie:
[
{
"featureType": "poi.business",
"stylers": [
{ "visibility": "off" }
]
}
]
Inny przykład to następujący kod JSON, który upraszcza wyświetlanie wszystkich kategorii. ciekawych miejsc:
[
{
"featureType": "poi",
"stylers": [
{ "visibility": "simplified" }
]
}
]
Więcej informacji znajdziesz w przewodniku po ukrywaniu funkcji mapy za pomocą stylu.