L'SDK Places per Android fornisce alla tua app informazioni dettagliate sui luoghi, tra cui nome e indirizzo, la posizione geografica specificata come coordinate di latitudine/longitudine, il tipo di luogo (ad esempio night club, negozio di animali, museo) e altro ancora. Per accedere a queste informazioni relative a un luogo specifico, puoi utilizzare l'ID luogo, un identificatore stabile che identifica in modo univoco un luogo.
Dettagli luogo
L'oggetto
Place
fornisce informazioni su un luogo specifico. Puoi ottenere un oggetto Place
nei seguenti modi:
- Chiama
PlacesClient.findCurrentPlace()
: consulta la guida per trovare il luogo attuale. - Chiama
PlacesClient.fetchPlace()
: consulta la guida per ricevere un luogo in base all'ID.
Quando richiedi un luogo, devi specificare i dati da restituire. A tale scopo, trasmetti un elenco di valori Place.Field specificando i dati da restituire. Questo elenco è una considerazione importante perché influisce sul costo di ogni richiesta.
Poiché i risultati relativi ai dati dei luoghi non possono essere vuoti, vengono restituiti solo i risultati con dati (ad esempio, se un luogo richiesto non ha foto, il campo photos
non sarà presente nel risultato).
L'esempio seguente trasmette un elenco di tre valori Place.Field per specificare i dati restituiti da una richiesta:
Java
// Specify the fields to return. final ListplaceFields = Arrays.asList(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS);
Kotlin
// Specify the fields to return. val placeFields = listOf(Place.Field.NAME, Place.Field.RATING, Place.Field.OPENING_HOURS)
Dopo aver ottenuto l'oggetto Place
, utilizza i relativi metodi per recuperare i dati del luogo.
Di seguito sono riportati alcuni esempi di metodi disponibili. Per un elenco completo di tutti i metodi, consulta il riferimento API Place
.
getAddress()
: l'indirizzo del luogo, in formato leggibile.getAddressComponents()
- UnList
di componenti di indirizzi per questo luogo. Questi componenti vengono forniti allo scopo di estrarre informazioni strutturate sull'indirizzo di un luogo, ad esempio per trovare la città in cui si trova. Non utilizzare questi componenti per la formattazione dell'indirizzo, ma chiamagetAddress()
, che fornisce un indirizzo formattato locale.getID()
: l'identificatore di testo del luogo. Scopri di più sugli ID luogo nel resto di questa pagina.getLatLng()
: la posizione geografica del luogo, specificata come coordinate di latitudine e longitudine.getName()
: il nome del luogo.getOpeningHours()
: ilOpeningHours
del luogo. RichiamaOpeningHours.getWeekdayText()
per visualizzare un elenco di stringhe che rappresentano l'orario di apertura e di chiusura per ogni giorno della settimana. ChiamaOpeningHours.getPeriods()
per restituire un elenco di oggettiperiod
con informazioni più dettagliate equivalenti ai dati forniti dagetWeekdayText()
. Nota: se un luogo è sempre aperto, il periodo di tempo viene rappresentato come domenica a mezzanotte e il valorecloseEvent
è null.isOpen()
: un valore booleano che indica se il luogo è attualmente aperto. Se non viene specificato alcun orario, il valore predefinito è ora.isOpen
verrà restituito solo sePlace.Field.UTC_OFFSET
ePlace.Field.OPENING_HOURS
sono disponibili. Per garantire risultati precisi, richiedi i campiPlace.Field.BUSINESS_STATUS
ePlace.Field.UTC_OFFSET
nella richiesta originale del luogo. Se non viene richiesta, si presume che l'attività sia operativa. Guarda questo video per informazioni su come utilizzareisOpen
con Dettagli luogo.
Ecco alcuni semplici esempi:
Java
final CharSequence name = place.getName(); final CharSequence address = place.getAddress(); final LatLng location = place.getLatLng();
Kotlin
val name = place.name val address = place.address val location = place.latLng
Ottieni un luogo in base all'ID
L'ID luogo è un identificatore testuale che identifica in modo univoco un luogo. Nell'SDK Places per Android, puoi recuperare l'ID di un luogo chiamando Place.getId()
.
Il servizio Place Autocomplete restituisce anche un ID luogo per ogni località corrispondente alla query di ricerca e al filtro forniti. Puoi archiviare l'ID luogo e utilizzarlo di nuovo per recuperare l'oggetto Place
.
Per ricevere un luogo in base all'ID, chiama
PlacesClient.fetchPlace()
,
passando un FetchPlaceRequest
.
L'API restituisce un
FetchPlaceResponse
in
Task
.
FetchPlaceResponse
contiene un oggetto Place
corrispondente all'ID luogo fornito.
L'esempio di codice riportato di seguito mostra la chiamata a fetchPlace()
per ricevere i dettagli del luogo specificato.
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. } });
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") } }
Attribuzioni display nella tua app
Quando nell'app vengono visualizzate informazioni sul luogo, l'app deve mostrare anche le attribuzioni. Consulta la documentazione sulle attribuzione.
Scopri di più sugli ID luogo
L'ID luogo utilizzato nell'SDK Places per Android è lo stesso identificatore utilizzato nell'API Places. Ogni ID luogo può fare riferimento a un solo luogo, ma un singolo luogo può avere più un ID luogo. In altri casi, è possibile che un luogo riceva un nuovo ID luogo. Questo può succedere, ad esempio, se un'attività si trasferisce in una nuova località.
Quando richiedi un luogo specificando un ID luogo, puoi avere la certezza che riceverai sempre lo stesso luogo nella risposta (se il luogo esiste ancora). Tuttavia, tieni presente che la risposta potrebbe contenere un ID luogo diverso da quello indicato nella richiesta.
Per scoprire di più, consulta la panoramica sull'ID luogo.