Mevcut Yer

Platform seçin: Android iOS

Android için Yerler SDK'sını kullanarak cihazın mevcut konumunda bulunan yeri keşfedebilirsiniz. Yer örnekleri arasında yerel işletmeler, önemli yerler ve coğrafi konumlar yer alır.

İzinler

Kitaplık, kullandığı tüm izinleri manifest dosyasında beyan ettiğinden kitaplığı kullanmak için uygulamanızın manifest dosyasında ek izinler beyan etmenize gerek yoktur. Ancak, uygulamanızda PlacesClient.findCurrentPlace() kullanılıyorsa çalışma zamanında konum izinleri istemeniz gerekir.

Uygulamanızda PlacesClient.findCurrentPlace() kullanılmıyorsa aşağıdaki kodu manifest dosyanıza ekleyerek kitaplık tarafından sunulan ACCESS_FINE_LOCATION ve ACCESS_COARSE_LOCATION izinlerini açıkça kaldırın:

<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>

İzinler hakkında daha fazla bilgi edinin ve başlamak için EasyPermissions'ı kullanmayı düşünün.

Geçerli konumu alma

Yerel işletmeyi veya cihazın şu anda bulunduğu başka bir yeri bulmak için aşağıdaki adımları uygulayın:

  1. Kullanıcının cihaz konumuna erişim izni verip vermediğini kontrol etmek için ContextCompat.checkSelfPermission numaralı telefonu arayın. Uygulamanız, kullanıcıdan izin istemek ve sonucu işlemek için kod da içermelidir. Ayrıntılar için Uygulama İzinleri İsteme bölümüne bakın.
  2. Uygulamanızın istemesi gereken yer verisi türlerini belirterek, Place.Field sn. List ileten bir FindCurrentPlaceRequest oluşturun.
  3. PlacesClient.findCurrentPlace() yöntemini çağırarak önceki adımda oluşturduğunuz FindCurrentPlaceRequest değerini iletin.
  4. FindCurrentPlaceResponse sitesinden PlaceLikelihood listesini alın.

Alanlar, Yer Arama sonuçlarına karşılık gelir ve üç faturalandırma kategorisine ayrılmıştır: Temel, Kişi ve Atmosfer. Temel alanlar, taban ücretle faturalandırılır ve ek ücret alınmaz. Kişi ve Atmosfer alanları daha yüksek ücretle faturalandırılır. Yer verisi isteklerinin nasıl faturalandırıldığı hakkında daha fazla bilgi için Kullanım ve Faturalandırma konusuna bakın.

API, Task içinde bir FindCurrentPlaceResponse döndürür. FindCurrentPlaceResponse, cihazın bulunabileceği yerleri temsil eden PlaceLikelihood nesnelerinin bir listesini içerir. Her bir yerle ilgili sonuç, ilgili yerin doğru olma ihtimaline dair bir gösterge içerir. Belirtilen cihaz konumuna karşılık gelen bilinen bir yer yoksa liste boş olabilir.

Bir Place nesnesini almak için PlaceLikelihood.getPlace() yöntemini, yerin olasılık derecelendirmesini almak için PlaceLikelihood.getLikelihood() yöntemini çağırabilirsiniz. Yüksek değer, ilgili yerin en iyi eşleşme olma olasılığının da yüksek olduğu anlamına gelir.

Aşağıdaki kod örneği, cihazın bulunma olasılığının en yüksek olduğu yerlerin listesini alıp her yerin adını ve olasılığını günlüğe kaydeder.

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()
}

      

Java


// 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();
}

      

Olasılık değerleriyle ilgili notlar:

  • Olasılık, tek bir istek için döndürülen yerler listesinde yerin en iyi eşleşme olduğuna dair göreceli bir olasılık sunar. Farklı isteklerin olasılıklarını karşılaştıramazsınız.
  • Olasılığın değeri 0,0 ile 1,0 arasında olur.

Örneğin, doğru yerin A Yeri olma ihtimalini% 55, yerin B Mekanı olma ihtimalini% 35 olarak göstermek için yanıtın iki üyesi vardır. Yer A'ya oranı 0,55, Yer B ise 0,35 olasılığına sahiptir.

İlişkilendirmeleri uygulamanızda gösterme

Uygulamanız PlacesClient.findCurrentPlace() sitesinden elde edilen bilgileri gösterdiğinde ilişkilendirmeler de gösterilmelidir. İlişkilendirmeler ile ilgili belgeleri inceleyin.