Android용 Places SDK는 장소 이름 및 주소, 위도/경도 좌표로 지정된 지리적 위치, 장소 유형 (나이트클럽, 애완동물 가게, 박물관 등) 등 앱에 대한 풍부한 정보를 앱에 제공합니다. 특정 장소에 대한 이 정보에 액세스하려면 장소를 고유하게 식별하는 안정적인 식별자인 장소 ID를 사용하면 됩니다.
장소 세부정보
Place
객체는
특정 장소에 관한 정보를 제공합니다. 다음과 같은 방법으로 Place
객체를 가져올 수 있습니다.
PlacesClient.findCurrentPlace()
호출 – 현재 장소 가져오기 가이드를 참고하세요.PlacesClient.fetchPlace()
호출 – ID로 장소 가져오기 가이드를 참고하세요.
장소를 요청할 때 반환할 장소 데이터를 지정해야 합니다. 이렇게 하려면 반환할 데이터를 지정하는 Place.Field 값 목록을 전달합니다. 이 목록은 각 요청의 비용에 영향을 미치므로 중요한 고려사항입니다.
장소 데이터 결과는 비워둘 수 없으므로 데이터가 있는 장소 결과만 반환됩니다. 예를 들어 요청된 장소에 사진이 없으면 결과에 photos
필드가 표시되지 않습니다.
다음 예에서는 3개의 Place.Field 값 목록을 전달하여 요청에서 반환된 데이터를 지정합니다.
자바
// Specify the fields to return. final ListplaceFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
Kotlin
// Specify the fields to return. val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)
Place
객체를 가져온 후 객체의 메서드를 사용하여 장소 데이터를 검색합니다.
다음은 몇 가지 사용 가능한 방법의 예입니다. 모든 메서드의 전체 목록은 Place
API 참조를 확인하세요.
getAddress()
– 사람이 읽을 수 있는 형식의 장소 주소입니다.getAddressComponents()
– 이 장소에 대한 주소 구성요소의List
입니다. 이러한 구성요소는 장소 주소에 관한 구조화된 정보를 추출하기 위한 목적(예: 장소가 위치한 도시 찾기)으로 제공됩니다. 주소 형식 지정에 이러한 구성요소를 사용하지 마세요. 대신 현지화된 형식의 주소를 제공하는getAddress()
를 호출하세요.getID()
– 장소의 텍스트 식별자입니다. 이 페이지의 나머지 부분에서 장소 ID에 관해 자세히 알아보세요.getLatLng()
– 장소의 지리적 위치로, 위도와 경도 좌표로 지정됩니다.getName()
– 장소의 이름입니다.getOpeningHours()
– 장소의OpeningHours
.OpeningHours.getWeekdayText()
를 호출하여 각 요일의 영업시간과 종료 시간을 나타내는 문자열 목록을 반환합니다.OpeningHours.getPeriods()
를 호출하여getWeekdayText()
에서 제공하는 데이터와 동등한 자세한 정보가 있는period
객체 목록을 반환합니다. 참고: 장소가 항상 열려 있는 경우 기간은 일요일 자정에 표시되며closeEvent
은 null입니다.isOpen()
– 장소가 현재 영업 중인지 나타내는 부울입니다. 시간이 지정되지 않은 경우 기본값은 지금입니다.isOpen
는Place.Field.UTC_OFFSET
와Place.Field.OPENING_HOURS
를 모두 사용할 수 있는 경우에만 반환됩니다. 정확한 결과를 얻으려면 원래 장소 요청에Place.Field.BUSINESS_STATUS
및Place.Field.UTC_OFFSET
필드를 요청하세요. 요청하지 않는 경우 비즈니스가 영업 중이라고 가정합니다. 장소 세부정보와 함께isOpen
를 사용하는 방법은 이 동영상을 참고하세요.
몇 가지 간단한 예시:
자바
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
Kotlin
val name = place.name val address = place.address val location = place.latLng
ID로 장소 가져오기
장소 ID는 장소를 고유하게 나타내는 텍스트 식별자입니다. Android용 Places SDK에서 Place.getId()
를 호출하여 장소의 ID를 검색할 수 있습니다.
Place Autocomplete 서비스에서는 제공된 검색어 및 필터와 일치하는 각 장소의 장소 ID도 반환합니다. 장소 ID를 저장하고 나중에 다시 Place
객체를 검색하는 데 사용할 수 있습니다.
ID로 장소를 가져오려면 PlacesClient.fetchPlace()
를 호출하여 FetchPlaceRequest
를 전달합니다.
API는 Task
에 FetchPlaceResponse
를 반환합니다.
FetchPlaceResponse
에는 제공된 장소 ID와 일치하는 Place
객체가 포함되어 있습니다.
다음 코드 예는 fetchPlace()
를 호출하여 지정된 장소의 세부정보를 가져오는 방법을 보여줍니다.
자바
// 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. } });
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") } }
앱에 특성 표시
앱에 장소 정보를 표시하는 경우 기여 분석도 표시해야 합니다. 기여 분석에 관한 문서를 참고하세요.
장소 ID에 대한 추가 정보
Android용 Places SDK에서 사용되는 장소 ID는 Places API와 동일합니다. 각 장소 ID는 한 장소만 참조할 수 있지만, 단일 장소는 2개 이상의 장소 ID를 가질 수 있습니다. 장소가 새 장소 ID를 가져올 수 있는 다른 상황도 있습니다. 예를 들어 비즈니스가 새로운 위치로 이사하는 경우 이러한 상황이 발생할 수 있습니다.
장소 ID를 지정하여 장소를 요청하면 응답에서 항상 동일한 장소를 수신하게 됩니다 (장소가 여전히 존재하는 경우). 하지만 응답에는 요청한 장소 ID와 다른 장소 ID가 포함될 수 있습니다.
자세한 내용은 장소 ID 개요를 참고하세요.