현재 장소

플랫폼 선택: Android iOS

Android용 Places SDK를 사용하면 기기의 현재 보고된 위치입니다. 장소의 예로는 비즈니스, 관심 장소 및 지리적 위치를 기반으로 합니다.

권한

라이브러리를 사용하기 위해 앱의 매니페스트에서 추가 권한을 선언할 필요는 없습니다. 권한을 선언할 수도 있습니다. 그러나 앱에서 PlacesClient.findCurrentPlace()님, 런타임 시 위치 정보 액세스 권한을 요청해야 합니다.

앱에서 PlacesClient.findCurrentPlace()를 사용하지 않는 경우 ACCESS_FINE_LOCATIONACCESS_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를 사용하여 시작할 수 있습니다.

현재 위치 가져오기

현재 기기가 있는 지역 업체 또는 기타 장소를 찾기 위해 다음 단계를 따르세요.

  1. ContextCompat.checkSelfPermission를 호출합니다. 사용자가 기기 액세스 권한을 부여했는지 확인 볼 수 있습니다 앱에는 사용자에게 권한을 요청하는 코드도 포함되어야 합니다. 결과를 처리합니다 앱 권한 요청을 참고하세요. 참조하세요.
  2. FindCurrentPlaceRequest를 만듭니다. Place.FieldList를 전달하여 장소 데이터 유형을 지정해야 합니다.
  3. PlacesClient.findCurrentPlace()를 호출합니다. 앞서 만든 FindCurrentPlaceRequest 전달 단계를 거칩니다.
  4. 다음에서 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()님, 앱은 특성도 표시해야 합니다. 관련 문서를 참조하세요. 기여 분석이 있습니다.