iOS용 Places SDK를 사용하면 현재 기기가 있는 장소를 찾을 수 있습니다. 즉, 현재 보고된 기기의 위치에 있는 장소를 의미합니다. 장소의 예로는 지역 비즈니스, 관심 장소, 지리적 위치가 있습니다.
위치 승인 요청
앱에서
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
를 사용한다면 위치 서비스 사용 권한을 요청해야 합니다. Info.plist
파일에 NSLocationWhenInUseUsageDescription
키를 추가하여 위치 서비스가 필요한 이유를 사용자에게 알리기 위한 문자열을 정의합니다. 예를 들면 다음과 같습니다.
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
앱이 백그라운드에 있을 때 확인 대화상자를 트리거하지 않고
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
를 호출하려면 호출하기 전에 다음 단계를 따르세요.
NSLocationAlwaysUsageDescription
키를Info.plist
파일에 추가합니다.- 메서드를 호출하기 전에
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:
에서 획득한 정보를 표시하는 경우 특성도 표시해야 합니다. 기여 분석에 대해 자세히 알아보세요.