현재 장소

플랫폼 선택: Android iOS

iOS용 Places SDK를 사용하면 현재 기기가 있는 장소를 찾을 수 있습니다. 즉, 현재 보고된 기기의 위치에 있는 장소를 의미합니다. 장소의 예로는 지역 비즈니스, 관심 장소, 지리적 위치가 있습니다.

  1. 위치 정보 액세스 권한 요청
  2. 사용량 한도
  3. 현재 위치 가져오기
  4. 앱에 저작자 표시

위치 승인 요청

앱에서 GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:를 사용한다면 위치 서비스 사용 권한을 요청해야 합니다. Info.plist 파일에 NSLocationWhenInUseUsageDescription 키를 추가하여 위치 서비스가 필요한 이유를 사용자에게 알리기 위한 문자열을 정의합니다. 예를 들면 다음과 같습니다.

<key>NSLocationWhenInUseUsageDescription</key>
<string>Show your location on the map</string>

앱이 백그라운드에 있을 때 확인 대화상자를 트리거하지 않고 findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:를 호출하려면 호출하기 전에 다음 단계를 따르세요.

  1. NSLocationAlwaysUsageDescription 키를 Info.plist 파일에 추가합니다.
  2. 메서드를 호출하기 전에 CLLocationManager의 인스턴스에서 requestAlwaysAuthorization를 호출합니다.

다음과 같이 CLLocationManager에서 승인을 요청합니다.

Swift

    locationManager.requestAlwaysAuthorization()
    

Objective-C

    [self.locationManager requestAlwaysAuthorization];
    

현재 위치 가져오기

현재 기기가 있는 지역 사업체 또는 기타 장소를 찾으려면 GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:를 호출합니다. 다음 매개변수를 포함합니다.

  • 반환할 데이터 유형을 지정하는 하나 이상의 GMSPlaceField 이 매개변수를 생략하면 가능한 모든 필드가 반환되며 그에 따라 요금이 청구됩니다. 이는 장소 세부정보 요청에만 적용됩니다.
  • 결과를 처리할 콜백 메서드

필드는 장소 검색결과에 해당하며 기본, 연락처, 분위기 등 세 결제 카테고리로 분류됩니다. 기본 필드에는 기본 요율로 청구되며 추가 요금이 발생하지 않습니다. 연락처 및 분위기 필드에는 더 높은 요율로 청구됩니다. 장소 데이터 요청에 대해 요금이 청구되는 방법에 대한 자세한 내용은 사용량 및 결제를 참고하세요.

API가 지정된 콜백 메서드를 호출하고 GMSPlaceLikelihood 객체의 배열을 반환합니다.

GMSPlaceLikelihood 객체는 장소를 나타냅니다. 각 장소에 대한 결과에는 해당 장소의 정확도를 나타내는 유사도 표시가 포함됩니다. 값이 클수록 해당 장소가 최적 일치일 가능성이 커진다는 의미입니다. 기기 위치에 해당하는 알려진 장소가 없으면 버퍼가 비어있을 수 있습니다.

다음 코드 샘플은 기기가 있을 가능성이 가장 높은 장소의 목록을 검색하고 각 장소의 이름과 유사도를 로깅합니다.

Swift

// Specify the place data types to return.
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
                                          UInt(GMSPlaceField.placeID.rawValue))!
placesClient?.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: {
  (placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in
  if let error = error {
    print("An error occurred: \(error.localizedDescription)")
    return
  }

  if let placeLikelihoodList = placeLikelihoodList {
    for likelihood in placeLikelihoodList {
      let place = likelihood.place
      print("Current Place name \(String(describing: place.name)) at likelihood \(likelihood.likelihood)")
      print("Current PlaceID \(String(describing: place.placeID))")
    }
  }
})

Objective-C

// Specify the place data types to return.
GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
[_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:fields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"An error occurred %@", [error localizedDescription]);
    return;
  }
  if (likelihoods != nil) {
    for (GMSPlaceLikelihood *likelihood in likelihoods) {
      GMSPlace *place = likelihood.place;
      NSLog(@"Current place name: %@", place.name);
      NSLog(@"Place ID: %@", place.placeID);
    }
  }
}];

유사도 값에 대한 유의 사항:

  • 유사도는 단일 요청에 대해 반환된 장소 목록 내에서 해당 장소가 최적 일치가 될 상대적인 확률을 제공합니다. 다른 요청과는 유사도를 비교할 수 없습니다.
  • 유사도의 값은 0 ~ 1.0 사이입니다.
  • 반환되는 GMSPlaceLikelihood 객체의 배열에서 유사도의 합계는 항상 1.0보다 작거나 같습니다. 합계가 반드시 1.0일 필요는 없습니다.

예를 들어 올바른 장소가 장소 A일 확률이 55% 이고 올바른 장소가 장소 B일 확률이 35% 임을 나타내려면 가능성 배열에는 유사도가 0.55인 장소 A와 유사도가 0.35인 장소 B라는 두 멤버가 있습니다.

앱에 특성 표시

앱이 GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:에서 획득한 정보를 표시하는 경우 특성도 표시해야 합니다. 기여 분석에 대해 자세히 알아보세요.