Mevcut Yer

Platform seçin: Android iOS

Android için Yerler SDK'sını kullanarak yeri, cihazın bildirilen konumunda keşfedebilirsiniz. Yerel işletmelere, önemli yerlere ve coğrafi konumlara örnek olarak gösterilebilir.

İzinler

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

Uygulamanız PlacesClient.findCurrentPlace() kullanmıyorsa kitaplıkta sunulan ACCESS_FINE_LOCATION ve ACCESS_COARSE_LOCATION izinlerini manifest dosyanıza ekleyerek 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 sayfasını kullanı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 konumuna erişim izni verip vermediğini kontrol etmek için ContextCompat.checkSelfPermission yöntemini arayın. Uygulamanızın, kullanıcıdan izin istemesi ve sonucu ele alması için kod da içermesi gerekir. Ayrıntılar için Uygulama İzinleri İsteme bölümünü inceleyin.
  2. Uygulamanızın istediği yer verisi türlerini belirterek, Place.Field tutarından List içeren bir FindCurrentPlaceRequest oluşturun.
  3. Önceki adımda oluşturduğunuz FindCurrentPlaceRequest değerini ileterek PlacesClient.findCurrentPlace() yöntemini çağırın.
  4. FindCurrentPlaceResponse üzerinden 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 verileri isteklerinin nasıl faturalandırıldığı hakkında daha fazla bilgi için Kullanım ve Faturalandırma'ya bakın.

API bir Task içinde FindCurrentPlaceResponse döndürür. FindCurrentPlaceResponse, cihazın bulunabileceği yerleri temsil eden PlaceLikelihood nesnelerinin bir listesini içerir. Her yer için, sonuçta söz konusu yerin doğru olma olasılığı belirtilir. Belirtilen cihaz konumuna karşılık gelen bilinen bir yer yoksa liste boş olabilir.

Bir Place nesnesi almak için PlaceLikelihood.getPlace() ve bir yerin olasılık derecesini almak için PlaceLikelihood.getLikelihood() yöntemini çağırabilirsiniz. Daha yüksek bir değer, yerin en iyi eşleşme olma olasılığının daha 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ır ve her bir yerin adını ve olasılığını günlüğe 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, bir yerin tek bir istek için döndürülen yerler listesinde en iyi eşleşme olma olasılığını göreceli olarak sağlar. Farklı isteklerdeki olasılıkları karşılaştıramazsınız.
  • Olasılık değeri 0,0 ile 1,0 arasında olur.

Örneğin, doğru yerin A Yeri olma olasılığını% 55, B Yeri olma olasılığının% 35 olduğunu göstermek için yanıtın iki üyesi vardır. Yer A'nın olasılığı 0, 55 ve Yer B B'nin olasılığı 0,35'tir.

İlişkilendirmeleri uygulamanızda gösterin

Uygulamanız, PlacesClient.findCurrentPlace() ürününden elde edilen bilgileri görüntülediğinde ilişkilendirmeleri de göstermelidir. İlişkilendirmeler ile ilgili belgelere bakın.