Yer Ayrıntıları

Platform seçin: Android iOS JavaScript Web Hizmeti

Android için Yerler SDK'sı uygulamanıza zengin bilgiler sağlar bilgileri, coğrafi konum, yer adı ve konum gibi enlem/boylam koordinatları olarak belirtilen yer, yerin türü (ör. gece kulübü, evcil hayvan mağazası, müze) ve daha fazlası. Bu bilgilere erişmek için yer kimliğini kullanabilirsiniz. Bu, benzersiz bir tanımlayıcı olan bir yeri tanımlar.

Yer ayrıntıları

İlgili içeriği oluşturmak için kullanılan Place nesne belirli bir yer hakkında bilgi sağlar. Her ay Place nesnesini aşağıdaki şekillerde kullanabilirsiniz:

Bir yer isteğinde bulunduğunuzda, hangi yer verilerinin döndürüleceğini belirtmeniz gerekir. Bunu yapmak için Place.Field döndürülecek verileri belirten değerlerdir. Bu liste, reklamlarınızın maliyetidir.

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

Aşağıdaki örnekte üçlü bir liste Place.Field değerleri kullanın:

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, nesneye erişmek için nesnenin yöntemlerini kullanın İstekte belirtilen veri alanları. Place nesnesinde alan 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ı.

  • getAddress() – Yerin kullanıcılar tarafından okunabilen adresi biçimindedir.
  • getAddressComponents() - List bileşenlerinden meydana geldi. Bu bileşenler amacıyla, bir yerin adresiyle ilgili yapılandırılmış bilgileri ayıklamak bir yerin bulunduğu şehri bulma örneği. Bunları kullanmayın adres biçimlendirme bileşenleri getAddress() numaralı telefonu arayın, Bu, yerelleştirilmiş biçimlendirilmiş bir adres sağlar.
  • getId(): Yerin metin biçimindeki tanımlayıcısı. Okunanlar yer kimlikleri hakkında daha fazla bilgiyi sayfanın geri kalanında bulabilirsiniz.
  • getLatLng(): Yerin coğrafi konumu, enlem ve boylam koordinatları şeklinde belirtilir.
  • getName(): Yerin adı.
  • getOpeningHours() - OpeningHours bahsedeceğim. İade etmek için OpeningHours.getWeekdayText() numaralı telefonu arayın her günü için açılış ve kapanış saatlerini gösteren dizelerin listesi görebilirsiniz. Şu içeriklerin listesini geri almak için OpeningHours.getPeriods() adlı kişiyi arayın: Şuna benzer daha ayrıntılı bilgilere sahip period nesne: getWeekdayText() tarafından sağlanan verilerle eşdeğerdir.

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

  • isOpen() - Yerin şu anda açık. Herhangi bir saat belirtilmezse varsayılan olarak şu an kullanılır. isOpen. yalnızca Place.Field.UTC_OFFSET ve Place.Field.OPENING_HOURS müsait. Doğruluğundan emin olmak için Place.Field.BUSINESS_STATUS ve sonuçlar için istekte bulunun Orijinal yer isteğinizde Place.Field.UTC_OFFSET alan var. Talepte bulunulmazsa işletmenin faaliyette olduğu varsayılır. Nasıl kullanacağınızı öğrenmek için bu videoyu izleyin. Yer Ayrıntılarıyla isOpen.

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. İçinde Android için Yerler SDK'sını kullanıyorsanız bir yerin kimliğini Place.getId(). İlgili içeriği oluşturmak için kullanılan Otomatik Yer Tamamlama hizmeti sağlanan arama sorgusuyla eşleşen her yer için bir yer kimliği de döndürür ve filtre uygulayabilirsiniz. Yer kimliğini saklayabilir ve bu kimliği kullanarak Place daha sonra tekrar deneyin.

Kimliğe göre bir yer almak için şu numarayı arayın: PlacesClient.fetchPlace() FetchPlaceRequest geçme.

API, FetchPlaceResponse Task. İlgili içeriği oluşturmak için kullanılan FetchPlaceResponse şunu içerir: Place belirtilen yer kimliğiyle eşleşen nesne.

Aşağıdaki kod örneğinde, fetchPlace() işlevinin belirtilen yerle ilgili ayrıntıları almak istiyorum.

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, yerin mevcut olup olmadığını gösteren bir IsOpenResponse nesnesi döndürür görüşmede belirtilen saate göre şu anda açık durumda.

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

  • Place veya yer kimliğini belirten bir dizeyi ifade eder.
  • 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 PlacesClient.fetchPlace() tıklayın. Gerekli alanlarla Yer nesnesini oluşturma hakkında daha fazla bilgi için Yer ayrıntıları başlıklı makaleyi inceleyin.

Aşağıdaki örnek, bir yerin şu anda açık olup olmadığını belirler. Bu örnekte, isOpen() için yer kimliğini:

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 olmak üzere yer bilgilerini gösterdiğinde, uygulama ayrıca atfedilemez. Daha fazla bilgi için bkz. ilişkilendirmeler.

Yer kimlikleri hakkında daha fazla bilgi

Android için Yerler SDK'sında kullanılan yer kimliği aynı tanımlayıcıdır Places API'sinde kullanıldığı şekilde görünür. Her yer kimliği yalnızca bir yeri ifade edebilir, ancak tek bir yer için daha fazla bilgi birden fazla yer kimliğinden ibarettir. Bir yerin yeni bir yer kimliği al. Örneğin, bu durum bir işletme yeni bir konum.

Bir yer kimliği belirterek bir yer isteğinde bulunduğunuzda, yanıtta her zaman aynı yer gösterilir (yer, mevcut). Ancak, yanıtın şuna sahip bir yer kimliği içerebileceğini unutmayın: isteyebilirsiniz.

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