Yer Ayrıntıları

Platform seçin: Android iOS JavaScript Web Hizmeti

Android için Yerler SDK'sı, uygulamanıza yer adı ve adresi, enlem/boylam koordinatları olarak belirtilen coğrafi konum, yer türü (gece kulübü, evcil hayvan mağazası, müze gibi) ve daha fazlası dahil olmak üzere pek çok zengin bilgi sağlar. Belirli bir yerle ilgili bu bilgilere erişmek için bir yeri benzersiz şekilde tanımlayan sabit bir tanımlayıcı olan yer kimliğini kullanabilirsiniz.

Yer ayrıntıları

Place nesnesi, belirli bir yer hakkında bilgi sağlar. Bir Place nesnesini, aşağıdaki şekillerde tutabilirsiniz:

Bir yer isteğinde bulunduğunuzda, hangi yer verilerinin döndürüleceğini belirtmeniz gerekir. Bunu yapmak için döndürülecek verileri belirten Place.Field değerlerinin listesini iletin. Bu liste, her isteğin maliyetini etkilediği için önemli bir noktadır.

Yer verisi sonuçları boş bırakılamayacağı için yalnızca veri içeren yer sonuçları döndürülür (örneğin, istenen bir yerde fotoğraf yoksa sonuçta photos alanı bulunmaz).

Aşağıdaki örnekte, bir isteğin döndürdüğü verileri belirtmek için üç Place.Field değerinden oluşan bir liste aktarılır:

Kotlin

// Specify the fields to return.
val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)

Java

// Specify the fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
  

Yer nesnesi veri alanlarına erişme

Place nesnesini aldıktan sonra, istekte belirtilen veri alanlarına erişmek için nesnenin yöntemlerini kullanın. Alan, Place nesnesinde yoksa ilgili yöntem null değerini döndürür. Aşağıda, kullanılabilir yöntemlerden birkaçına ilişkin örnekler gösterilmektedir. Tüm yöntemlerin tam listesi için Place API referansına bakın.

  • getAddress() – Yerin, kullanıcıların okuyabileceği biçimdeki adresi.
  • getAddressComponents() – Bu yer için List adres bileşeni. Bu bileşenler, bir yerin adresi hakkında yapılandırılmış bilgileri ayıklamak (ör. bir yerin bulunduğu şehri bulmak) için sağlanmıştır. Bu bileşenleri adres biçimlendirmesi için kullanmayın. Bunun yerine, yerelleştirilmiş biçimlendirilmiş bir adres sağlayan getAddress() işlevini çağırın.
  • getId(): Yerin metin biçimindeki tanımlayıcısı. Bu sayfanın geri kalanında yer kimlikleri hakkında daha fazla bilgi edinebilirsiniz.
  • getLatLng(): Yerin enlem ve boylam koordinatları olarak belirtilen coğrafi konumu.
  • getName(): Yerin adı.
  • getOpeningHours() – Yerin OpeningHours bilgisi. Haftanın her günü için açılış ve kapanış saatlerini temsil eden dizelerin listesini döndürmek için OpeningHours.getWeekdayText() komutunu çağırın. getWeekdayText() tarafından sağlanan verilere eşdeğer daha ayrıntılı bilgiler içeren period nesnelerinin bir listesini döndürmek için OpeningHours.getPeriods() çağrısı yapın.

    Place nesnesi, bir yerin sonraki yedi gün içindeki çalışma saatlerini döndüren getCurrentOpeningHours() yöntemini ve bir yerin sonraki 7 gün içindeki ikincil çalışma saatlerini döndüren getSecondaryOpeningHours() yöntemini de içerir.

  • isOpen() - Yerin şu anda açık olup olmadığını gösteren boole değeri. Herhangi bir saat belirtilmezse varsayılan olarak şu an kullanılır. isOpen yalnızca Place.Field.UTC_OFFSET ve Place.Field.OPENING_HOURS kullanılabiliyorsa döndürülür. Sonuçların doğru olduğundan emin olmak için ilk yer isteğinizde Place.Field.BUSINESS_STATUS ve Place.Field.UTC_OFFSET alanlarını isteyin. Talepte bulunulmazsa işletmenin faaliyette olduğu varsayılır. isOpen ürününün Yer Ayrıntıları ile nasıl kullanılacağını öğrenmek için bu videoyu izleyin.

Birkaç basit örnek:

Kotlin



val name = place.name
val address = place.address
val location = place.latLng

      

Java


final CharSequence name = place.getName();
final CharSequence address = place.getAddress();
final LatLng location = place.getLatLng();

      

Kimliğe göre bir yer alın

Yer kimliği, bir yeri benzersiz şekilde tanımlayan metinsel bir tanımlayıcıdır. Android için Yerler SDK'sında Place.getId() yöntemini çağırarak bir yerin kimliğini alabilirsiniz. Otomatik Yer Tamamlama hizmeti, sağlanan arama sorgusu ve filtreyle eşleşen her yer için bir yer kimliği de döndürür. Yer kimliğini depolayabilir ve Place nesnesini daha sonra tekrar almak için kullanabilirsiniz.

Bir yeri kimliğe göre almak için PlacesClient.fetchPlace() numaralı telefonu arayıp FetchPlaceRequest iletin.

API, Task içinde bir FetchPlaceResponse döndürür. FetchPlaceResponse, sağlanan yer kimliğiyle eşleşen bir Place nesnesi içeriyor.

Aşağıdaki kod örneğinde, belirtilen yerle ilgili ayrıntıları almak için fetchPlace() yönteminin çağrılması gösterilmektedir.

Kotlin



// Define a Place ID.
val placeId = "INSERT_PLACE_ID_HERE"

// Specify the fields to return.
val placeFields = listOf(Place.Field.ID, Place.Field.NAME)

// Construct a request object, passing the place ID and fields array.
val request = FetchPlaceRequest.newInstance(placeId, placeFields)

placesClient.fetchPlace(request)
    .addOnSuccessListener { response: FetchPlaceResponse ->
        val place = response.place
        Log.i(PlaceDetailsActivity.TAG, "Place found: ${place.name}")
    }.addOnFailureListener { exception: Exception ->
        if (exception is ApiException) {
            Log.e(TAG, "Place not found: ${exception.message}")
            val statusCode = exception.statusCode
            TODO("Handle error with given status code")
        }
    }

      

Java


// Define a Place ID.
final String placeId = "INSERT_PLACE_ID_HERE";

// Specify the fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

// Construct a request object, passing the place ID and fields array.
final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);

placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
    Place place = response.getPlace();
    Log.i(TAG, "Place found: " + place.getName());
}).addOnFailureListener((exception) -> {
    if (exception instanceof ApiException) {
        final ApiException apiException = (ApiException) exception;
        Log.e(TAG, "Place not found: " + exception.getMessage());
        final int statusCode = apiException.getStatusCode();
        // TODO: Handle error with given status code.
    }
});

      

Açık durumunu al

PlacesClient.isOpen(IsOpenRequest request) yöntemi, çağrıda belirtilen saate göre yerin şu anda açık olup olmadığını gösteren bir IsOpenResponse nesnesi döndürür.

Bu yöntem, aşağıdakileri içeren IsOpenRequest türünde tek bir bağımsız değişken alır:

  • Place nesnesi veya yer kimliğini belirten bir dize.
  • 1970-01-01T00:00:00Z arasındaki süreyi milisaniye cinsinden belirten isteğe bağlı zaman değeri. Herhangi bir saat belirtilmezse varsayılan olarak şu an kullanılır.

Bu yöntem, aşağıdaki alanların Place nesnesinde bulunmasını gerektirir:

  • Place.Field.BUSINESS_STATUS
  • Place.Field.CURRENT_OPENING_HOURS
  • Place.Field.OPENING_HOURS
  • Place.Field.UTC_OFFSET

Bu alanlar Place nesnesinde sağlanmazsa veya bir yer kimliği iletirseniz yöntem, bunları getirmek için PlacesClient.fetchPlace() yöntemini kullanır. Gerekli alanlarla Yer nesnesini oluşturma hakkında daha fazla bilgi için Yer ayrıntıları bölümüne bakın.

Aşağıdaki örnek, bir yerin şu anda açık olup olmadığını belirler. Bu örnekte, yer kimliğini yalnızca isOpen() kullanıcısına iletirsiniz:

Kotlin



val isOpenCalendar: Calendar = Calendar.getInstance()
val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"

val request: IsOpenRequest = try {
    IsOpenRequest.newInstance(placeId, isOpenCalendar.timeInMillis)
} catch (e: IllegalArgumentException) {
    e.printStackTrace()
    return
}
val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(request)
isOpenTask.addOnSuccessListener { response ->
    val isOpen = response.isOpen
}
// ...

      

Java


@NonNull
Calendar isOpenCalendar = Calendar.getInstance();
String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk";
IsOpenRequest isOpenRequest;

try {
    isOpenRequest = IsOpenRequest.newInstance(placeId, isOpenCalendar.getTimeInMillis());
} catch (IllegalArgumentException e) {
    e.printStackTrace();
    return;
}

Task<IsOpenResponse> placeTask = placesClient.isOpen(isOpenRequest);

placeTask.addOnSuccessListener(
        (response) ->
                isOpen = response.isOpen());
// ...

      

Sonraki örnekte, Place nesnesini ilettiğinizde isOpen() çağrısı gösterilmektedir. Place nesnesi geçerli bir yer kimliği içermelidir:

Kotlin



val isOpenCalendar: Calendar = Calendar.getInstance()
var place: Place
val placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk"
// Specify the required fields for an isOpen request.
val placeFields: List<Place.Field> = listOf(
    Place.Field.BUSINESS_STATUS,
    Place.Field.CURRENT_OPENING_HOURS,
    Place.Field.ID,
    Place.Field.OPENING_HOURS,
    Place.Field.UTC_OFFSET
)

val placeRequest: FetchPlaceRequest =
    FetchPlaceRequest.newInstance(placeId, placeFields)
val placeTask: Task<FetchPlaceResponse> = placesClient.fetchPlace(placeRequest)
placeTask.addOnSuccessListener { placeResponse ->
    place = placeResponse.place

    val isOpenRequest: IsOpenRequest = try {
        IsOpenRequest.newInstance(place, isOpenCalendar.timeInMillis)
    } catch (e: IllegalArgumentException) {
        e.printStackTrace()
        return@addOnSuccessListener
    }
    val isOpenTask: Task<IsOpenResponse> = placesClient.isOpen(isOpenRequest)
    isOpenTask.addOnSuccessListener { isOpenResponse ->
        val isOpen = isOpenResponse.isOpen
    }
    // ...
}
// ...

      

Java


@NonNull
Calendar isOpenCalendar = Calendar.getInstance();
String placeId = "ChIJD3uTd9hx5kcR1IQvGfr8dbk";
// Specify the required fields for an isOpen request.
List<Place.Field> placeFields = new ArrayList<>(Arrays.asList(
        Place.Field.BUSINESS_STATUS,
        Place.Field.CURRENT_OPENING_HOURS,
        Place.Field.ID,
        Place.Field.OPENING_HOURS,
        Place.Field.UTC_OFFSET
));

FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);
Task<FetchPlaceResponse> placeTask = placesClient.fetchPlace(request);

placeTask.addOnSuccessListener(
        (placeResponse) -> {
            Place place = placeResponse.getPlace();
            IsOpenRequest isOpenRequest;

            try {
                isOpenRequest = IsOpenRequest.newInstance(place, isOpenCalendar.getTimeInMillis());
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
                return;
            }
            Task<IsOpenResponse> isOpenTask = placesClient.isOpen(isOpenRequest);

            isOpenTask.addOnSuccessListener(
                    (isOpenResponse) -> isOpen = isOpenResponse.isOpen());
            // ...
        });
// ...

      

İlişkilendirmeleri uygulamanızda gösterme

Uygulamanız yer yorumları dahil yer bilgilerini gösterdiğinde, atıfları da göstermelidir. Daha fazla bilgi için ilişkilendirmeler bölümünü inceleyin.

Yer kimlikleri hakkında daha fazla bilgi

Android için Yerler SDK'sında kullanılan yer kimliği, Places API'sinde kullanılan tanımlayıcıyla aynıdır. Her yer kimliği yalnızca bir yere başvuruda bulunabilir, ancak tek bir yerin birden fazla yer kimliği olabilir. Bir yerin yeni bir yer kimliği almasına yol açabilecek başka durumlar da vardır. Örneğin, bu durum bir işletme yeni bir konuma taşınırsa gerçekleşebilir.

Yer kimliği belirterek bir yer isteğinde bulunduğunuzda, yanıtta her zaman aynı yerin gösterileceğinden emin olabilirsiniz (yer hâlâ mevcutsa). Ancak yanıtın, isteğinizdekinden farklı bir yer kimliği içerebileceğini unutmayın.

Daha fazla bilgi için yer kimliğine genel bakış sayfasını inceleyin.