Android용 Places SDK는 앱에 풍부한 정보를 제공합니다. 장소에 대한 정보와 함께 해당 장소의 이름 및 주소, 지리적 위치, 위도/경도 좌표로 지정된 위치, 장소의 유형 (예: 나이트클럽, 애완동물 용품점, 박물관 등입니다. 이러한 정보에 액세스하려면 장소 ID를 사용할 수 있습니다. 장소 ID는 는 장소를 식별합니다.
장소 세부정보
이
Place
드림
객체는 특정 장소에 대한 정보를 제공합니다. CANNOT TRANSLATE
Place
드림
객체를 다음과 같이 변경해야 합니다.
- 전화걸기
PlacesClient.fetchPlace()
드림 – ID로 장소 가져오기: - 전화걸기
PlacesClient.findCurrentPlace()
드림 – 현재 장소 가져오기:
장소를 요청할 때 반환할 장소 데이터를 지정해야 합니다. 이렇게 하려면 Place.Field 값을 반환할 수 있습니다. 이 목록은 요청당 비용이 들 수 있습니다.
장소 데이터 결과는 비워둘 수 없으므로 데이터가 있는 장소 결과만
반환됩니다 (예를 들어 요청된 장소에 사진이 없는 경우 photos
필드는 결과에 표시되지 않습니다.
다음 예에서는 세 가지 Place.Field 값 를 사용하세요.
Kotlin
// Specify the fields to return. val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)
자바
// Specify the fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
Place 객체 데이터 필드에 액세스
Place
객체를 가져온 후 객체의 메서드를 사용하여
데이터 필드입니다. Place
객체에서 필드가 누락된 경우
관련 메서드가 null을 반환합니다. 아래는 사용 가능한 메서드의 몇 가지 예입니다.
모든 메서드의 전체 목록은
Place
드림
API 참조 문서입니다.
getAddress()
– 사람이 읽을 수 있는 장소의 주소 형식으로 입력합니다.getAddressComponents()
~AList
주소 구성요소를 관리할 수 있습니다. 이러한 구성요소는 특정 장소의 주소에 대한 구조화된 정보를 추출하기 위해 예를 들면 장소가 위치한 도시를 찾는 것입니다. 사용 금지 주소 형식 지정을 위한 구성요소 대신getAddress()
를 호출합니다. 는 현지화된 주소를 제공합니다.getId()
– 장소의 텍스트 식별자입니다. 읽기 장소 ID에 대해 자세히 알아보세요.getLatLng()
– 장소의 지리적 위치입니다. 위도와 경도 좌표로 지정됩니다.getName()
– 장소의 이름getOpeningHours()
–OpeningHours
있습니다.OpeningHours.getWeekdayText()
를 호출하여 각 요일의 개점 시간과 폐점 시간을 나타내는 문자열 확인할 수 있습니다OpeningHours.getPeriods()
를 호출하여period
객체에 대해getWeekdayText()
에서 제공한 데이터와 같습니다.Place
객체에는getCurrentOpeningHours()
다음 7일 동안 장소의 영업 시간을 반환하는 메서드이며,getSecondaryOpeningHours()
다음 7일 동안 장소의 보조 영업시간을 반환합니다.isOpen()
– 장소가 다음 상태인지 여부를 나타내는 불리언입니다. 현재 열려 있습니다. 시간을 지정하지 않으면 기본값은 지금입니다.isOpen
Place.Field.UTC_OFFSET
및Place.Field.OPENING_HOURS
은(는) 사용 가능합니다. 데이터의Place.Field.BUSINESS_STATUS
를 요청하고Place.Field.UTC_OFFSET
필드는 원래 장소 요청에 포함되어 있습니다. 요청하지 않으면 비즈니스가 운영 중인 것으로 간주됩니다. 사용 방법은 이 동영상을 참고하세요. 장소 세부정보가 포함된isOpen
몇 가지 간단한 예시:
Kotlin
val name = place.name val address = place.address val location = place.latLng
자바
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
ID로 장소 가져오기
장소 ID는 장소를 고유하게 나타내는 텍스트 식별자입니다. 포함
Android용 Places SDK를 사용하는 경우 다음을 호출하여 장소의 ID를 가져올 수 있습니다.
Place.getId()
이
Place Autocomplete 서비스
또한 제공된 검색어와 일치하는 각 장소의 장소 ID를 반환합니다.
필터를 만들 수 있습니다 장소 ID를 저장하고 이를 사용하여
Place
드림
객체를 다시 생성할 수 있습니다.
ID로 장소를 가져오려면 다음을 호출합니다.
PlacesClient.fetchPlace()
님,
FetchPlaceRequest
를 전달합니다.
API는
FetchPlaceResponse
드림
과녁을 맞히려는 화살의
Task
이
FetchPlaceResponse
드림
포함
Place
제공된 장소 ID와 일치하는 객체입니다.
다음 코드 예는 fetchPlace()
를 호출하여
지정된 장소의 세부정보를 가져옵니다.
Kotlin
// Define a Place ID. val placeId = "INSERT_PLACE_ID_HERE" // Specify the fields to return. val placeFields = listOf(Place.Field.ID, Place.Field.NAME) // Construct a request object, passing the place ID and fields array. val request = FetchPlaceRequest.newInstance(placeId, placeFields) placesClient.fetchPlace(request) .addOnSuccessListener { response: FetchPlaceResponse -> val place = response.place Log.i(PlaceDetailsActivity.TAG, "Place found: ${place.name}") }.addOnFailureListener { exception: Exception -> if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.message}") val statusCode = exception.statusCode TODO("Handle error with given status code") } }
자바
// Define a Place ID. final String placeId = "INSERT_PLACE_ID_HERE"; // Specify the fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Construct a request object, passing the place ID and fields array. final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields); placesClient.fetchPlace(request).addOnSuccessListener((response) -> { Place place = response.getPlace(); Log.i(TAG, "Place found: " + place.getName()); }).addOnFailureListener((exception) -> { if (exception instanceof ApiException) { final ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + exception.getMessage()); final int statusCode = apiException.getStatusCode(); // TODO: Handle error with given status code. } });
영업 개시 상태 가져오기
PlacesClient.isOpen(IsOpenRequest request)
메서드는 장소가 해당 장소가 맞는지 나타내는 IsOpenResponse
객체를 반환합니다.
시간을 확인할 수 있습니다.
이 메서드는 다음을 포함하는 IsOpenRequest
유형의 단일 인수를 사용합니다.
Place
객체 또는 장소 ID를 지정하는 문자열.- 1970-01-01T00:00:00Z부터 시간을 밀리초 단위로 지정하는 시간 값입니다(선택사항). 시간을 지정하지 않으면 기본값은 지금입니다.
이 메서드를 사용하려면 Place
객체에 다음 필드가 있어야 합니다.
Place.Field.BUSINESS_STATUS
Place.Field.CURRENT_OPENING_HOURS
Place.Field.OPENING_HOURS
Place.Field.UTC_OFFSET
이러한 필드가 Place
객체에 제공되지 않거나 장소 ID를 전달하는 경우
메서드가
PlacesClient.fetchPlace()
가져올 수 있습니다 필수 필드가 있는 Place 객체를 만드는 방법에 대한 자세한 내용은
장소 세부정보를 참고하세요.
다음 예는 장소가 현재 영업 중인지 여부를 결정합니다. 이 예에서는
장소 ID를 isOpen()
에 추가합니다.
Kotlin
val isOpenCalendar: Calendar = Calendar.getInstance() val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk" val request: IsOpenRequest = try { IsOpenRequest.newInstance(placeId, isOpenCalendar.timeInMillis) } catch (e: IllegalArgumentException) { e.printStackTrace() return } val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(request) isOpenTask.addOnSuccessListener { response -> val isOpen = response.isOpen } // ...
자바
@NonNull Calendar isOpenCalendar = Calendar.getInstance(); String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"; IsOpenRequest isOpenRequest; try { isOpenRequest = IsOpenRequest.newInstance(placeId, isOpenCalendar.getTimeInMillis()); } catch (IllegalArgumentException e) { e.printStackTrace(); return; } Task<IsOpenResponse> placeTask = placesClient.isOpen(isOpenRequest); placeTask.addOnSuccessListener( (response) -> isOpen = response.isOpen()); // ...
다음 예는 Place
객체를 전달하는 isOpen()
호출을 보여줍니다.
Place
객체에는 유효한 장소 ID가 포함되어야 합니다.
Kotlin
val isOpenCalendar: Calendar = Calendar.getInstance() var place: Place val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk" // Specify the required fields for an isOpen request. val placeFields: List<Place.Field> = listOf( Place.Field.BUSINESS_STATUS, Place.Field.CURRENT_OPENING_HOURS, Place.Field.ID, Place.Field.OPENING_HOURS, Place.Field.UTC_OFFSET ) val placeRequest: FetchPlaceRequest = FetchPlaceRequest.newInstance(placeId, placeFields) val placeTask: Task<FetchPlaceResponse> = placesClient.fetchPlace(placeRequest) placeTask.addOnSuccessListener { placeResponse -> place = placeResponse.place val isOpenRequest: IsOpenRequest = try { IsOpenRequest.newInstance(place, isOpenCalendar.timeInMillis) } catch (e: IllegalArgumentException) { e.printStackTrace() return@addOnSuccessListener } val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(isOpenRequest) isOpenTask.addOnSuccessListener { isOpenResponse -> val isOpen = isOpenResponse.isOpen } // ... } // ...
자바
@NonNull Calendar isOpenCalendar = Calendar.getInstance(); String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"; // Specify the required fields for an isOpen request. List<Place.Field> placeFields = new ArrayList<>(Arrays.asList( Place.Field.BUSINESS_STATUS, Place.Field.CURRENT_OPENING_HOURS, Place.Field.ID, Place.Field.OPENING_HOURS, Place.Field.UTC_OFFSET )); FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields); Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request); placeTask.addOnSuccessListener( (placeResponse) -> { Place place = placeResponse.getPlace(); IsOpenRequest isOpenRequest; try { isOpenRequest = IsOpenRequest.newInstance(place, isOpenCalendar.getTimeInMillis()); } catch (IllegalArgumentException e) { e.printStackTrace(); return; } Task<IsOpenResponse> isOpenTask = placesClient.isOpen(isOpenRequest); isOpenTask.addOnSuccessListener( (isOpenResponse) -> isOpen = isOpenResponse.isOpen()); // ... }); // ...
앱에 특성 표시
앱이 장소 리뷰를 포함한 장소 정보를 표시하는 경우 앱 또한 관련 정보를 표시해야 합니다. 모든 저작자 표시 자세한 내용은 기여 분석이 있습니다.
장소 ID에 대한 추가 정보
Android용 Places SDK에서 사용되는 장소 ID는 동일한 식별자입니다. Places API에서 사용됩니다. 각 장소 ID는 한 장소만 참조할 수 있지만 단일 장소가 여러 장소를 참조할 수 있습니다. 한 개 이상의 장소 ID가 있어야 합니다. 다른 상황으로 인해 새 장소 ID를 가져옵니다. 예를 들어 사업체가 새 회사로 이전하고 볼 수 있습니다
장소 ID를 지정하여 장소를 요청하면 응답에서 항상 동일한 장소를 받게 됩니다 (장소가 있음). 그러나 응답에 이전에 사용한 것과 다르게 표시됩니다.
자세한 내용은 장소 ID 개요