Android용 Places SDK를 사용하면 기기의 현재 보고된 위치입니다. 장소의 예로는 비즈니스, 관심 장소 및 지리적 위치를 기반으로 합니다.
권한
라이브러리를 사용하기 위해 앱의 매니페스트에서 추가 권한을 선언할 필요는 없습니다.
권한을 선언할 수도 있습니다. 그러나 앱에서
PlacesClient.findCurrentPlace()
님,
런타임 시 위치 정보 액세스 권한을 요청해야 합니다.
앱에서 PlacesClient.findCurrentPlace()
를 사용하지 않는 경우
ACCESS_FINE_LOCATION
및 ACCESS_COARSE_LOCATION
권한 도입
매니페스트에 다음을 추가하여 라이브러리로 대체하세요.
<manifest ... xmlns:tools="http://schemas.android.com/tools"> ... <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:node="remove"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/> ... </manifest>
에 대해 자세히 알아보기 권한을 보유하고 있다면 EasyPermissions를 사용하여 시작할 수 있습니다.
현재 위치 가져오기
현재 기기가 있는 지역 업체 또는 기타 장소를 찾기 위해 다음 단계를 따르세요.
ContextCompat.checkSelfPermission
를 호출합니다. 사용자가 기기 액세스 권한을 부여했는지 확인 볼 수 있습니다 앱에는 사용자에게 권한을 요청하는 코드도 포함되어야 합니다. 결과를 처리합니다 앱 권한 요청을 참고하세요. 참조하세요.FindCurrentPlaceRequest
를 만듭니다.Place.Field
의List
를 전달하여 장소 데이터 유형을 지정해야 합니다.PlacesClient.findCurrentPlace()
를 호출합니다. 앞서 만든FindCurrentPlaceRequest
전달 단계를 거칩니다.- 다음에서
PlaceLikelihood
목록을 가져옵니다.FindCurrentPlaceResponse
필드는 장소 검색 결과에 해당하며 다음 세 가지 결제 카테고리로 나뉩니다. 기본(Basic), 연락처(Contact), 분위기(Atmosphere) 기본 필드에는 기본 요율로 청구되며 추가 비용이 발생하지 않습니다. 있습니다. 연락처 및 분위기 필드에는 더 높은 요율로 청구됩니다. 자세한 내용은 장소 데이터 요청에 대한 요금 청구 방식에 대한 자세한 내용은 사용량 및 결제.
API는
FindCurrentPlaceResponse
드림
과녁을 맞히려는 화살의
Task
FindCurrentPlaceResponse
에는
PlaceLikelihood
기기가 위치할 가능성이 높은 장소를 나타내는 객체입니다. 대상
그 결과
알 수 있습니다. 알려진 장소가 없는 경우 목록이 비어 있을 수 있습니다.
임베딩 레이어가 있습니다.
다음을 호출할 수 있습니다.
PlaceLikelihood.getPlace()
드림
kubectl 명령어
Place
객체에 대해
PlaceLikelihood.getLikelihood()
를 사용하세요. 값이 클수록
해당 장소가 최적 일치일 확률을 나타냅니다.
다음 코드 샘플은 기기가 있는 장소의 목록을 가져옵니다. 각 장소의 이름과 유사도를 기록합니다.
Kotlin
// Use fields to define the data types to return. val placeFields: List<Place.Field> = listOf(Place.Field.NAME) // Use the builder to create a FindCurrentPlaceRequest. val request: FindCurrentPlaceRequest = FindCurrentPlaceRequest.newInstance(placeFields) // Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { val placeResponse = placesClient.findCurrentPlace(request) placeResponse.addOnCompleteListener { task -> if (task.isSuccessful) { val response = task.result for (placeLikelihood: PlaceLikelihood in response?.placeLikelihoods ?: emptyList()) { Log.i( TAG, "Place '${placeLikelihood.place.name}' has likelihood: ${placeLikelihood.likelihood}" ) } } else { val exception = task.exception if (exception is ApiException) { Log.e(TAG, "Place not found: ${exception.statusCode}") } } } } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission() }
자바
// Use fields to define the data types to return. List<Place.Field> placeFields = Collections.singletonList(Place.Field.NAME); // Use the builder to create a FindCurrentPlaceRequest. FindCurrentPlaceRequest request = FindCurrentPlaceRequest.newInstance(placeFields); // Call findCurrentPlace and handle the response (first check that the user has granted permission). if (ContextCompat.checkSelfPermission(this, ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { Task<FindCurrentPlaceResponse> placeResponse = placesClient.findCurrentPlace(request); placeResponse.addOnCompleteListener(task -> { if (task.isSuccessful()){ FindCurrentPlaceResponse response = task.getResult(); for (PlaceLikelihood placeLikelihood : response.getPlaceLikelihoods()) { Log.i(TAG, String.format("Place '%s' has likelihood: %f", placeLikelihood.getPlace().getName(), placeLikelihood.getLikelihood())); } } else { Exception exception = task.getException(); if (exception instanceof ApiException) { ApiException apiException = (ApiException) exception; Log.e(TAG, "Place not found: " + apiException.getStatusCode()); } } }); } else { // A local method to request required permissions; // See https://developer.android.com/training/permissions/requesting getLocationPermission(); }
유사도 값에 대한 유의 사항:
- 가능성은 일정 기간 동안 에 대해 반환된 장소 목록 내에서 가장 일치하는 장소 제공합니다 여러 요청에서 유사도를 비교할 수는 없습니다.
- 가능성 값은 0.0과 1.0 사이입니다.
예를 들어 올바른 장소가 Place라는 55% 확률을 나타내려면 A이고 장소 B일 확률이 35% 이면 응답에 2명의 멤버가 있습니다. 유사도가 0.55인 Place A와 유사도가 0.35인 Place B.
<ph type="x-smartling-placeholder">앱에 특성 표시
앱이
PlacesClient.findCurrentPlace()
님,
앱은 특성도 표시해야 합니다. 관련 문서를 참조하세요.
기여 분석이 있습니다.