비즈니스 및 기타 관심 장소

플랫폼 선택: Android iOS JavaScript

기본적으로 관심 장소(POI)는 해당 아이콘과 함께 기본 지도에 표시됩니다. 관심 장소에는 공원, 학교, 정부 건물 등이 포함됩니다. 또한 지도 유형이 kGMSTypeNormal인 경우 비즈니스 관심 장소가 기본적으로 지도에 표시됩니다. 비즈니스 관심 장소는 상점, 음식점, 호텔 등의 비즈니스를 나타냅니다.

관심 장소는 iOS용 Places SDK에서 정의된 장소 ID에 해당합니다. 예를 들어 레크리에이션 공원은 관심 장소이지만, 일반적으로 분수대와 같은 곳은 국가적 또는 역사적으로 중요하지 않은 한 관심 장소가 아닙니다.

관심 장소의 클릭 이벤트 수신 대기

관심 장소를 탭한 사용자에게 응답하려면 다음 예와 같이 GMSMapViewDelegate를 구현하고 mapView(_:didTapPOIWithPlaceID:name:location:) 메서드를 구현합니다.

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
      

정보 창에 세부정보 표시

관심 장소는 기본적으로 지도에 표시되지만 클릭 시 실행되는 기본 UI는 없습니다. 사용자가 관심 장소를 탭할 때 API에서 정보 창 또는 다른 사용자 인터페이스를 자동으로 표시하지 않습니다. 다음 예에서는 마커를 사용하여 관심 장소의 정보 창을 표시하는 방법을 보여줍니다.

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

지도에 관심 장소 표시 중지

모든 관심 장소 또는 특정 카테고리의 관심 장소에 맞춤 스타일을 적용하여 관심 장소를 숨길 수 있습니다.

다음과 같은 JSON 스타일 선언을 적용하면 지도의 모든 비즈니스 관심 장소가 숨겨집니다.

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

또 다른 예로, 다음 JSON 스타일은 모든 카테고리의 관심 장소 표시를 간소화합니다.

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

자세한 내용은 스타일을 지정하여 지도 지형지물 숨기기 가이드를 참고하세요.