현재 장소

플랫폼 선택: Android iOS

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

  1. 위치 인증 요청
  2. 사용량 한도
  3. 현재 위치 가져오기
  4. 앱에 기여 분석 표시

위치 승인 요청

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

<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. 이 매개변수를 생략하면 가능한 모든 필드가 반환되고 그에 따라 요금이 청구됩니다. 이는 장소 세부정보 요청에만 적용됩니다.
  • 결과를 처리하는 콜백 메서드입니다.

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

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% 를 나타내기 위해 유사도 배열에는 두 개의 구성원이 있습니다. 즉, 장소 A의 가능성은 0.55이고 장소 B의 가능성은 0.35입니다.

앱에 기여 분석 표시

앱이 GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:에서 얻은 정보를 표시하면 저작자 표시도 표시해야 합니다. 기여 분석에 대해 자세히 알아보세요.