현재 장소

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에서 승인을 요청합니다.

SwiftObjective-C
    locationManager.requestAlwaysAuthorization()
    
    [self.locationManager requestAlwaysAuthorization];
    

현재 위치 가져오기

기기가 현재 위치한 지역 비즈니스 또는 기타 장소를 찾으려면 GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:를 호출합니다. 다음 매개변수를 포함합니다.

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

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

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

GMSPlaceLikelihood 객체는 장소를 나타냅니다. 장소별로 결과에는 장소가 올바른 장소일 가능성을 나타내는 표시가 포함됩니다. 값이 클수록 장소가 가장 일치할 가능성이 높습니다. 기기 위치에 해당하는 알려진 장소가 없는 경우 버퍼가 비어 있을 수 있습니다.

다음 코드 샘플은 기기가 있을 가능성이 가장 높은 장소 목록을 가져와 각 장소의 이름과 가능성을 로깅합니다.

SwiftObjective-C
// 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))")
    }
  }
})
// 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:에서 가져온 정보를 표시하는 경우 저작자 표시도 함께 표시해야 합니다. 기여 분석에 대해 자세히 알아보세요.