현재 장소

플랫폼 선택: 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. Info.plist 파일에 NSLocationAlwaysUsageDescription 키를 추가합니다.
  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일 필요는 없습니다.

예를 들어 올바른 장소가 Place A일 가능성 55% 와 Place B인 35% 유사도를 나타내기 위해 유사도 배열에는 유사도가 0.55인 Place A와 유사도가 0.35인 Place B라는 두 멤버가 포함됩니다.

앱에 특성 표시

앱이 GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:에서 획득한 정보를 표시할 때 저작자 표시도 표시해야 합니다. 기여 분석에 관해 자세히 알아보세요.