iOS용 장소 SDK (신규)는 장소의 이름 및 주소, 위도/경도 좌표로 지정된 지리적 위치, 장소 유형 (예: 나이트클럽, 애완동물 가게, 박물관) 등 장소에 관한 풍부한 정보를 앱에 제공합니다. 특정 장소의 이 정보에 액세스하려면 장소를 고유하게 식별하는 안정적인 식별자인 장소 ID를 사용하면 됩니다.
장소 세부정보 가져오기
GMSPlace
클래스에는 장소 데이터 필드 (신규)에 표시된 모든 데이터 필드를 비롯하여 특정 장소에 관한 정보가 포함됩니다. GMSPlacesClient
fetchPlaceWithRequest:
를 호출하여 GMSPlace
객체를 가져오고 GMSFetchPlaceRequest
객체와 GMSPlaceResultCallback
유형의 콜백 메서드를 전달합니다.
GMSFetchPlaceRequest
객체는 다음을 지정합니다.
- (필수) Google 장소 데이터베이스 및 Google 지도에 있는 장소의 고유 식별자인 장소 ID입니다.
- (필수)
GMSPlace
객체에서 반환할 필드 목록입니다.GMSPlaceProperty
에 정의된 필드 마스크라고도 합니다. 필드 목록에 필드를 하나 이상 지정하지 않거나 필드 목록을 생략하면 호출에서 오류를 반환합니다. - (선택사항) 응답 형식을 지정하는 데 사용되는 지역 코드입니다.
- (선택사항) 자동 완성 (신규) 세션을 종료하는 데 사용되는 세션 토큰입니다.
장소 세부정보 요청
이 예에서는 다음 매개변수를 전달하여 ID별로 장소를 가져옵니다.
ChIJV4k8_9UodTERU5KXbkYpSYs
의 장소 ID입니다.- 장소 이름 및 웹사이트 URL을 반환하도록 지정하는 필드 목록입니다.
- 결과를 처리하는
GMSPlaceResultCallback
API는 지정된 콜백 메서드를 호출하여 GMSPlace
객체를 전달합니다. 장소를 찾을 수 없는 경우 장소 객체는 nil입니다.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue} // Create the GMSFetchPlaceRequest object. let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil) client.fetchPlace(with: fetchPlaceRequest, callback: { (place: GMSPlace?, error: Error?) in guard let place, error == nil else { return } print("Place found: \(String(describing: place.name))") })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite]; // Create the GMSFetchPlaceRequest object. GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil]; [placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { NSLog(@"Place Found: %@", place.name); NSLog(@"The place URL: %@", place.website); } }];
iOS용 Places Swift SDK (미리보기)
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.name, .website] ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): // Handle place case .failure(let placesError): // Handle error }
장소 세부정보 응답
Place Details는 장소에 관한 세부정보가 포함된 GMSPlace
객체를 반환합니다. 필드 목록에 지정된 필드만 GMSPlace
객체에 채워집니다.
열려 있는 상태 가져오기
GMSPlacesClient
객체에는 호출에 지정된 시간을 기반으로 장소가 현재 영업 중인지 여부를 나타내는 응답을 반환하는 isOpenWithRequest
(Swift의 isOpenRequest
및 GooglePlacesSwift의 isPlaceOpenRequest
)라는 멤버 함수가 포함되어 있습니다.
이 메서드는 다음을 포함하는 GMSPlaceIsOpenWithRequest
유형의 단일 인수를 사용합니다.
GMSPlace
객체 또는 장소 ID를 지정하는 문자열입니다. 필요한 필드로 장소 객체를 만드는 방법에 관한 자세한 내용은 장소 세부정보를 참고하세요.
- 확인하려는 시간을 지정하는 선택적
NSDate
(Obj-C) 또는Date
(Swift) 객체입니다. 시간을 지정하지 않으면 기본값은 현재입니다. - 응답을 처리하는
GMSPlaceOpenStatusResponseCallback
메서드입니다. >
GMSPlaceIsOpenWithRequest
메서드를 사용하려면 GMSPlace
객체에 다음 필드를 설정해야 합니다.
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
이러한 필드가 장소 객체에 제공되지 않거나 장소 ID를 전달하는 경우 메서드는 GMSPlacesClient GMSFetchPlaceRequest:
를 사용하여 가져옵니다.
응답 isOpenWithRequest
개
isOpenWithRequest
는 비즈니스가 영업 중인지, 폐쇄되었는지 또는 상태를 알 수 없는지 나타내는 불리언 값 status
가 포함된 GMSPlaceIsOpenResponse
객체를 반환합니다.
언어 | 열려 있는 경우 값 | 닫힌 경우 값 | 상태를 알 수 없는 경우의 값 |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (미리보기) | true |
false |
nil |
isOpenWithRequest
결제
GMSPlacePropertyUTCOffsetMinutes
및GMSPlacePropertyBusinessStatus
필드에는 Basic Data SKU에 따라 요금이 청구됩니다. 나머지 영업시간에는 Place Details (고급) SKU에 따라 요금이 청구됩니다.GMSPlace
객체에 이전 요청의 이러한 필드가 이미 있는 경우 다시 요금이 청구되지 않습니다.
예: GMSPlaceIsOpenWithRequest
요청
다음 예는 기존 GMSPlace
객체 내에서 GMSPlaceIsOpenWithRequest
를 초기화하는 방법을 보여줍니다.
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
GooglePlacesSwift
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
필수 매개변수
GMSFetchPlaceRequest
객체를 사용하여 필수 매개변수를 지정합니다.
장소 ID
iOS용 Places SDK에서 사용되는 장소 ID는 Places API, Android용 Places SDK, 기타 Google API에서 사용되는 식별자와 동일합니다. 각 장소 ID는 하나의 장소만 참조할 수 있지만 하나의 장소에 두 개 이상의 장소 ID가 있을 수 있습니다.
장소에 새 장소 ID가 부여될 수 있는 상황이 있습니다. 예를 들어, 사업체를 새 위치로 이전하는 경우에 이러한 상황이 발생할 수 있습니다.
장소 ID를 지정하여 장소를 요청하면 장소가 여전히 존재하는 경우 응답에서 항상 동일한 장소를 수신할 수 있습니다. 단, 응답에 요청의 장소 ID와 다른 장소 ID가 포함될 수 있습니다.
필드 목록
장소 세부정보를 요청할 때는 장소의 GMSPlace
객체에서 반환할 데이터를 필드 마스크로 지정해야 합니다. 필드 마스크를 정의하려면 GMSPlaceProperty
에서 GMSFetchPlaceRequest
객체로 값 배열을 전달합니다.
필드 마스크는 불필요한 데이터를 요청하지 않도록 하는 좋은 설계 방법으로, 불필요한 처리 시간과 요금 청구를 방지하는 데 도움이 됩니다.
다음 필드 중 하나 이상을 지정합니다.
다음 필드는 Place Details (ID Only) SKU를 트리거합니다.
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
,GMSPlacePropertyPhotos
다음 필드는 Place Details (Location Only) SKU를 트리거합니다.
GMSPlacePropertyAddressComponents
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyViewport
다음 필드는 Place Details (Basic) SKU를 트리거합니다.
GMSPlacePropertyBusinessStatus
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyWheelchairAccessibleEntrance
다음 필드는 Place Details (Advanced) SKU를 트리거합니다.
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
다음 필드는 Place Details (Preferred) SKU를 트리거합니다.
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
다음 예에서는 두 개의 필드 값 목록을 전달하여 요청에서 반환된 GMSPlace
객체에 name
및 placeID
필드가 포함되어 있음을 지정합니다.
Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
iOS용 Places Swift SDK (미리보기)
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
선택적 매개변수
GMSFetchPlaceRequest
객체를 사용하여 선택적 매개변수를 지정합니다.
regionCode
응답 형식을 지정하는 데 사용되는 지역 코드로, 2자리 CLDR 코드 값으로 지정됩니다. 이 매개변수는 검색 결과에 편향 효과를 줄 수도 있습니다. 기본값은 없습니다.
응답의 주소 필드에 있는 국가 이름이 지역 코드와 일치하면 주소에서 국가 코드가 생략됩니다.
대부분의 CLDR 코드는 ISO 3166-1 코드와 동일하지만 일부 주목할 만한 예외가 있습니다. 예를 들어 영국의 ccTLD는 'uk' (.co.uk)이지만 ISO 3166-1 코드는 'gb'입니다(기술적으로 '그레이트 브리튼 북아일랜드 연합왕국'의 법인에 해당). 이 매개변수는 관련 법규에 따라 결과에 영향을 줄 수 있습니다.
sessionToken
세션 토큰은 자동 완성(신규) 호출을 '세션'으로 추적하는 사용자가 생성한 문자열입니다. 자동 완성 (신규)은 세션 토큰을 사용하여 결제 목적의 사용자 자동 완성 검색의 쿼리 및 장소 선택 단계를 개별 세션으로 그룹화합니다. 세션 토큰은 Autocomplete (신규) 호출 다음에 오는 Place Details (신규) 호출에 전달됩니다. 자세한 내용은 세션 토큰을 참고하세요.
앱에 특성 표시
앱에서 사진 및 리뷰와 같이 GMSPlacesClient
에서 가져온 정보를 표시하는 경우 필요한 저작자 표시도 함께 표시해야 합니다.
예를 들어 GMSPlacesClient
객체의 reviews
속성에는 최대 5개의 GMSPlaceReview
객체 배열이 포함됩니다. 각 GMSPlaceReview
객체는 저작자 표시 및 저자 표시를 포함할 수 있습니다.
앱에 리뷰를 표시하는 경우 저작자 표시 또는 작성자 저작자 표시도 표시해야 합니다.
자세한 내용은 저작자 표시 문서를 참고하세요.