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:
- Telefonla arama
PlacesClient.fetchPlace()
– Kılavuzu inceleyin: bir yeri kimliğine göre alma. - Telefonla arama
PlacesClient.findCurrentPlace()
– Kılavuzu inceleyin: geçerli yeri öğrenme
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şenlerigetAddress()
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çinOpeningHours.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çinOpeningHours.getPeriods()
adlı kişiyi arayın: Şuna benzer daha ayrıntılı bilgilere sahipperiod
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 vegetSecondaryOpeningHours()
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ızcaPlace.Field.UTC_OFFSET
vePlace.Field.OPENING_HOURS
müsait. Doğruluğundan emin olmak içinPlace.Field.BUSINESS_STATUS
ve sonuçlar için istekte bulunun Orijinal yer isteğinizdePlace.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ıylaisOpen
.
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ış.