ID luogo

Seleziona la piattaforma:Android iOS JavaScript Servizio web
Sviluppatori dello Spazio economico europeo (SEE)

Introduzione

Gli ID luogo identificano in modo unico un luogo nel database di Google Places e su Google Maps. Gli ID luogo sono accettati nelle richieste alle seguenti API di Google Maps:

  • Recupero di un indirizzo per un ID luogo nell'API Geocoding e nel servizio Geocoding, API Maps JavaScript.
  • Specifica di origine, destinazione e tappe intermedie nelle API Routes e Directions (legacy) e nel servizio Directions, API Maps JavaScript (legacy).
  • Specifica di origini e destinazioni nelle API Routes e API Distance Matrix (legacy) e nel servizio Distance Matrix, API Maps JavaScript (legacy).
  • Recupero dei dettagli del luogo nelle API Places (nuovo), SDK Places per Android (nuovo), SDK Places per iOS (nuovo) e libreria Places.
  • Utilizzo dei parametri ID luogo nell'API Maps Embed.
  • Recupero delle query di ricerca negli URL di Maps.
  • Visualizzazione dei limiti di velocità nell'API Roads.
  • Ricerca e applicazione di stili ai poligoni dei confini negli stili basati sui dati per i confini.

Trovare l'ID di un luogo specifico

Stai cercando l'ID luogo di un luogo specifico? Utilizza lo strumento di ricerca dell'ID luogo riportato di seguito per cercare un luogo e ottenere il relativo ID:

In alternativa, puoi visualizzare lo strumento di ricerca degli ID luogo con il relativo codice nella documentazione dell'API Maps JavaScript.

Panoramica

Un ID luogo è un identificatore testuale che identifica in modo univoco un luogo. La lunghezza dell'identificatore può variare (non esiste una lunghezza massima per gli ID località). Esempi:

  • ChIJgUbEo8cfqokR5lP9_Wh_DaM
  • GhIJQWDl0CIeQUARxks3icF8U8A
  • EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0EiGhIYChQKEgnRTo6ixx-qiRHo_bbmkCm7ZRAN
  • EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0E
  • IhoSGAoUChIJ0U6OoscfqokR6P225pApu2UQDQ

Gli ID luogo sono disponibili per la maggior parte delle località, tra cui attività, punti di interesse, parchi e incroci. È possibile che lo stesso luogo o posizione abbia più ID luogo diversi. Gli ID luogo possono cambiare nel tempo.

Puoi utilizzare lo stesso ID luogo nell'API Places e in diverse API di Google Maps Platform. Ad esempio, puoi utilizzare lo stesso ID luogo per fare riferimento a un luogo nell'API Places, nell'API Maps JavaScript, nell'API Geocoding, nell'API Maps Embed e nell'API Roads.

Recupera i Place Details utilizzando l'ID luogo

Un modo comune per utilizzare gli ID luogo è cercare un luogo utilizzando l'API Places o la libreria Places nell'API Maps JavaScript. Poi, utilizza l'ID luogo restituito per recuperare i dettagli del luogo. Puoi memorizzare l'ID luogo e utilizzarlo per recuperare in un secondo momento gli stessi dettagli del luogo. Scopri di più sul salvataggio degli ID luogo più avanti in questo documento.

Esempio di utilizzo di Places SDK for Android (nuovo)

In Places SDK per Android (New), puoi recuperare l'ID di un luogo chiamando Place.getId(). Il servizio Place Autocomplete (legacy) restituisce anche un ID luogo per ogni luogo che corrisponde alla query di ricerca e al filtro forniti. Utilizza l'ID luogo per recuperare di nuovo l'oggetto Place in un secondo momento.

Per recuperare un luogo in base all'ID, chiama PlacesClient.fetchPlace(), passando un FetchPlaceRequest.

L'API restituisce un FetchPlaceResponse in un Task. FetchPlaceResponse contiene un oggetto Place corrispondente all'ID luogo fornito.

Il seguente esempio di codice mostra la chiamata a fetchPlace() per ottenere i dettagli del luogo specificato.

Kotlin

// Define a Place ID.
val placeId = PlaceIdProvider.getRandomPlaceId()

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

// 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

        val name = place.displayName
        val address = place.formattedAddress
        val location = place.location

        binding.placeName.text = name
        binding.placeAddress.text = address
        if (location != null) {
            binding.placeLocation.text = getString(
                R.string.place_location, location.latitude, location.longitude
            )
        } else {
            binding.placeLocation.text = null
        }
        Log.i(TAG, "Place found: ${place.displayName}")
    }.addOnFailureListener { exception: Exception ->
        if (exception is ApiException) {
            val message = getString(R.string.place_not_found, exception.message)
            binding.placeName.text = message
            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 = PlaceIdProvider.getRandomPlaceId();

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

// 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();

    final CharSequence name = place.getDisplayName();
    final CharSequence address = place.getFormattedAddress();
    final LatLng location = place.getLocation();

    binding.placeName.setText(name);
    binding.placeAddress.setText(address);
    if (location != null) {
        binding.placeLocation.setText(
                getString(R.string.place_location, location.latitude, location.longitude)
        );
    } else {
        binding.placeLocation.setText(null);
    }

    Log.i(TAG, "Place found: " + place.getDisplayName());
}).addOnFailureListener((exception) -> {
    if (exception instanceof ApiException apiException) {
        final String message = getString(R.string.place_not_found, apiException.getMessage());
        binding.placeName.setText(message);
        Log.e(TAG, "Place not found: " + exception.getMessage());
        final int statusCode = apiException.getStatusCode();
        // TODO: Handle error with given status code.
    }
});

      

Salva gli ID luogo per utilizzarli in un secondo momento

Gli ID luogo sono esenti dalle limitazioni di memorizzazione nella cache indicate nella sezione 3.2.3(b) dei Termini di servizio di Google Maps Platform. Pertanto, puoi memorizzare i valori degli ID luogo per un utilizzo successivo.

Aggiornare gli ID luogo memorizzati

Poiché gli ID luogo possono cambiare a causa degli aggiornamenti del database di Google Maps, Google consiglia di aggiornarli se hanno più di 12 mesi. Puoi aggiornare gli ID luogo senza costi effettuando una richiesta Place Details, specificando solo il campo Place.Field.ID nel parametro fields.

Questa chiamata attiva lo SKU Places Details - ID Refresh.

Codici di errore durante l'utilizzo degli ID luogo

INVALID_REQUEST

Il codice di stato INVALID_REQUEST indica che l'ID luogo specificato non è valido. INVALID_REQUEST può essere restituito quando l'ID luogo è stato troncato o modificato in altro modo e non è più corretto.

NOT_FOUND

Il codice di stato NOT_FOUND indica che l'ID luogo specificato è obsoleto. Un ID luogo può diventare obsoleto se un'attività chiude o si trasferisce in una nuova sede. Gli ID luogo possono cambiare anche a causa di aggiornamenti del database di Google Maps. In questi casi, un luogo potrebbe ricevere un nuovo ID luogo e il vecchio ID restituisce una risposta NOT_FOUND.

Per aggiornare i risultati in caso di ID luogo obsoleto, memorizza la richiesta originale che ha restituito ogni ID luogo ed emetti nuovamente la richiesta in base alle esigenze. Tieni presente che la richiesta riemessa viene fatturata con lo SKU appropriato.

Alcuni tipi di ID luogo a volte possono causare una risposta NOT_FOUND oppure l'API può restituire un ID luogo diverso nella risposta. Questi tipi di ID luogo includono:

  • Indirizzi che non esistono in Google Maps come indirizzi precisi, ma vengono dedotti da un intervallo di indirizzi.
  • Segmenti di un percorso lungo, in cui la richiesta specifica anche una città o una località.
  • Incroci.
  • Luoghi con un componente di indirizzo di tipo subpremise.

Questi ID spesso assumono la forma di una stringa lunga (non esiste una lunghezza massima per gli ID luogo). Ad esempio:

EpID4LC14LC_4LCo4LCv4LGN4LCo4LCX4LCw4LGNIC0g4LC44LGI4LCm4LGN4LCs4LC-4LCm4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSAmIOCwteCwv-CwqOCwr-CxjSDgsKjgsJfgsLDgsY0g4LCu4LGG4LCv4LC_4LCo4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSwg4LC14LC_4LCo4LCv4LGNIOCwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwsuCwleCxjeCwt-CxjeCwruCwv-CwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwuOCwsOCxguCwsOCxjSDgsKjgsJfgsLDgsY0g4LC14LGG4LC44LGN4LCf4LGNLCDgsLjgsK_gsYDgsKbgsL7gsKzgsL7gsKbgsY0sIOCwueCxiOCwpuCwsOCwvuCwrOCwvuCwpuCxjSwg4LCk4LGG4LCy4LCC4LCX4LC-4LCjIDUwMDA1OSwg4LCt4LC-4LCw4LCk4LCm4LGH4LC24LCCImYiZAoUChIJ31l5uGWYyzsR9zY2qk9lDiASFAoSCd9ZebhlmMs7Efc2NqpPZQ4gGhQKEglDz61OZpjLOxHgDJCFY-o1qBoUChIJi37TW2-YyzsRr_uv50r7tdEiCg1MwFcKFS_dyy4