Mevcut Yer

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Platform seçin: Android iOS

Android için Yerler SDK'sını kullanarak, yeri cihazın bildirildiği konumda keşfedebilirsiniz. Yerlere örnek olarak yerel işletmeler, önemli yerler ve coğrafi konumlar verilebilir.

İzinler

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

Uygulamanız PlacesClient.findCurrentPlace() kullanmıyorsa manifest dosyanıza aşağıdakileri ekleyerek kitaplık tarafından eklenen 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 al

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ının konumuna erişim izni verip vermediğini kontrol etmek için ContextCompat.checkSelfPermission numaralı telefonu arayın. Uygulamanız, kullanıcıdan izin isteyecek ve sonucu işleyecek bir kod da içermelidir. Ayrıntılar için Uygulama İzinleri İsteme bölümüne bakın.
  2. Uygulamanızın istediği yer verisi türlerini belirterek, Place.Field Place.Field içinden bir FindCurrentPlaceRequest oluşturun.
  3. Önceki adımda oluşturduğunuz FindCurrentPlaceRequest aktarımından sonra PlacesClient.findCurrentPlace() numaralı telefonu arayın.
  4. FindCurrentPlaceResponse cihazından PlaceLikelihood listesinin listesini alın.

Alanlar, Yer Arama sonuçlarına karşılık gelir ve üç faturalandırma kategorisine ayrılır: Temel, İletişim ve Atmosfer. Temel alanlar, temel ücret üzerinden faturalandırılır ve ek ücret alınmaz. Kişi ve Atmosfer alanları daha yüksek ücretle faturalandırılır. Yer verileri isteklerinin nasıl faturalandırıldığı hakkında daha fazla bilgi için Kullanım ve Faturalandırma bölümüne bakın.

API, Task içerisinde bir FindCurrentPlaceResponse döndürür. FindCurrentPlaceResponse, cihazın bulunabileceği yerleri temsil eden PlaceLikelihood nesnelerinin listesini içerir. Her yer için, sonucun doğru yer olduğunu belirten bir işaret bulunur. Belirtilen cihaz konumuna karşılık gelen bilinen bir yer yoksa liste boş olabilir.

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

Aşağıdaki kod örneği, cihazın bulunma olasılığı en yüksek olan yerlerin listesini alır ve her bir yerin adını ve olasılığını kaydeder.

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

      

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

      

Olasılık değerleriyle ilgili notlar:

  • Olasılık, yerin tek bir istek için döndürülen yerler listesinde en iyi eşleşme olma olasılığını sağlar. Farklı isteklerdeki olasılıkları 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, %35 olmak üzere% 55 olduğunu göstermek için yanıtın iki üyesi vardır: A Yeri, 0,55 ve B Yeri, 0,35 olabilir.

İlişkilendirmeleri uygulamanızda gösterme

Uygulamanızda PlacesClient.findCurrentPlace()'ten alınan bilgiler gösterildiğinde ilişkilendirmelerin de gösterilmesi gerekir. İlişkilendirmeler ile ilgili belgelere bakın.