

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Inizia a usare Amazon Location Service
<a name="getting-started"></a>

Questo argomento ti aiuta a iniziare a usare Amazon Location Service. Segui questi passaggi per creare la tua prima applicazione e capire come scegliere l'API Amazon Location appropriata in base a casi d'uso comuni. 

1. **Configura il tuo AWS account e accedi.**

   Se non hai già un account, ti verrà richiesto di crearne uno. Con il piano AWS gratuito, puoi ottenere tre mesi di piano gratuito per Amazon Location Service.

   Se disponi già di un account, devi fornire l'accesso ad Amazon Location Service.

   Continua con l'[Configurare l’account](set-up.md)argomento.

1. **Comprendi e configura l'autenticazione.**

   Per utilizzare Amazon Location, a un utente deve essere concesso l'accesso alle risorse APIs che compongono Amazon Location. API Key, Amazon Cognito e AWS Identity and Access Management (IAM) sono tre opzioni per concedere l'accesso alle tue risorse e azioni ()APIs. 

   Continua con l'[Autenticazione con Amazon Location Service](access.md)argomento.

1. **Crea la tua prima applicazione di localizzazione.**

   Scopri come [Crea la tua prima applicazione Amazon Location Maps and Places](first-app.md) creare la tua prima applicazione «Hello World».

1. **Scegli l'API giusta.**

   Amazon Location offre una vasta APIs gamma di luoghi, percorsi, mappe, geofence e tracker per risolvere una varietà di casi d'uso aziendali. 

   Per ulteriori informazioni su come scegliere un'API Amazon Location, consulta [Scegli l'API giusta](choose-an-api.md) per ulteriori informazioni.

# Configurare l’account
<a name="set-up"></a>

Questa sezione descrive cosa devi fare per usare Amazon Location Service. È necessario disporre Account AWS e configurare l'accesso ad Amazon Location per gli utenti che desiderano utilizzarlo.

## Sono nuovo a AWS
<a name="new-user"></a>

### Iscriviti per un Account AWS
<a name="sign-up-for-aws"></a>

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

**Per iscriverti a un Account AWS**

1. Apri la [https://portal.aws.amazon.com/billing/registrazione.](https://portal.aws.amazon.com/billing/signup)

1. Segui le istruzioni online.

   Nel corso della procedura di registrazione riceverai una telefonata o un messaggio di testo e ti verrà chiesto di inserire un codice di verifica attraverso la tastiera del telefono.

   Quando ti iscrivi a un Account AWS, *Utente root dell'account AWS*viene creato un. L’utente root dispone dell’accesso a tutte le risorse e tutti i Servizi AWS nell’account. Come best practice di sicurezza, assegna l’accesso amministrativo a un utente e utilizza solo l’utente root per eseguire [attività che richiedono l’accesso di un utente root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS ti invia un'email di conferma dopo il completamento della procedura di registrazione. In qualsiasi momento, puoi visualizzare l'attività corrente del tuo account e gestirlo accedendo a [https://aws.amazon.com/](https://aws.amazon.com/)e scegliendo **Il mio account**.

### Crea un utente con accesso amministrativo
<a name="create-an-admin"></a>

Dopo esserti registrato Account AWS, proteggi Utente root dell'account AWS AWS IAM Identity Center, abilita e crea un utente amministrativo in modo da non utilizzare l'utente root per le attività quotidiane.

**Proteggi i tuoi Utente root dell'account AWS**

1.  Accedi [Console di gestione AWS](https://console.aws.amazon.com/)come proprietario dell'account scegliendo **Utente root** e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.

   Per informazioni sull’accesso utilizzando un utente root, consulta la pagina [Accedere come utente root](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) nella *Guida per l’utente di Accedi ad AWS *.

1. Abilita l’autenticazione a più fattori (MFA) per l’utente root.

   Per istruzioni, consulta [Abilitare un dispositivo MFA virtuale per l'utente Account AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) nella Guida per l'*utente IAM*.

**Crea un utente con accesso amministrativo**

1. Abilita il Centro identità IAM.

   Per istruzioni, consulta [Abilitazione del AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) nella *Guida per l’utente di AWS IAM Identity Center *.

1. Nel Centro identità IAM, assegna l’accesso amministrativo a un utente.

   Per un tutorial sull'utilizzo di IAM Identity Center directory come fonte di identità, consulta [Configurare l'accesso utente con l'impostazione predefinita IAM Identity Center directory](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) nella *Guida per l'AWS IAM Identity Center utente*.

**Accesso come utente amministratore**
+ Per accedere come utente del Centro identità IAM, utilizza l’URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l’utente del Centro identità IAM.

  Per informazioni sull'accesso utilizzando un utente IAM Identity Center, consulta [AWS Accedere al portale di accesso](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) nella *Guida per l'Accedi ad AWS utente*.

**Assegnazione dell’accesso ad altri utenti**

1. Nel Centro identità IAM, crea un set di autorizzazioni conforme alla best practice per l’applicazione di autorizzazioni con il privilegio minimo.

   Segui le istruzioni riportate nella pagina [Creazione di un set di autorizzazioni](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) nella *Guida per l’utente di AWS IAM Identity Center *.

1. Assegna al gruppo prima gli utenti e poi l’accesso con autenticazione unica (Single Sign-On).

   Per istruzioni, consulta [Aggiungere gruppi](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) nella *Guida per l’utente di AWS IAM Identity Center *.

## Ho già un AWS account
<a name="existing-user"></a>

**Concedi l'accesso ad Amazon Location Service**

Per impostazione predefinita, i tuoi utenti non amministratori non dispongono di autorizzazioni. Prima che possano accedere ad Amazon Location, devi concedere l'autorizzazione allegando una policy IAM con autorizzazioni specifiche. Assicurati di seguire il principio del privilegio minimo quando concedi l'accesso alle risorse. 

**Nota**  
Per informazioni su come concedere agli utenti non autenticati l'accesso alla funzionalità di Amazon Location Service (ad esempio, in un'applicazione basata sul Web), consulta. [Autenticazione con Amazon Location Service](access.md)

La seguente policy di esempio fornisce all'utente l'autorizzazione ad accedere a tutte le operazioni di Amazon Location. Per ulteriori esempi, consulta [Esempi di policy basate sull'identità per Amazon Location Service](security-iam.md#security_iam_id-based-policy-examples).

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "geo:*",
        "geo-maps:*",
        "geo-places:*",
        "geo-routes:*"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
+ Utenti e gruppi in AWS IAM Identity Center:

  Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) (Creazione di un set di autorizzazioni) nella *Guida per l’utente di AWS IAM Identity Center *.
+ Utenti gestiti in IAM tramite un provider di identità:

  Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) della *Guida per l’utente IAM*.
+ Utenti IAM:
  + Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) della *Guida per l’utente IAM*.
  + (Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina [Aggiunta di autorizzazioni a un utente (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente IAM*.

Quando crei applicazioni che utilizzano Amazon Location Service, potrebbe essere necessario che alcuni utenti dispongano di un accesso non autenticato. Per questi casi d'uso, consulta [Abilitare l'accesso non autenticato utilizzando Amazon Cognito](authenticating-using-cognito.md).

# Usa la console Amazon Location Service per l'autenticazione
<a name="set-up-auth"></a>

**Nota**  
Per ulteriori informazioni sull'autenticazione, consulta[Autenticazione con Amazon Location Service](access.md).

Per utilizzare Amazon Location Service, a un utente deve essere concesso l'accesso alle risorse APIs che compongono Amazon Location. Per impostazione predefinita, Amazon Location APIs richiede l'autenticazione per l'uso. Puoi utilizzare Amazon Cognito o le chiavi API per fornire l'autenticazione e l'autorizzazione agli utenti anonimi. 

Nel [Crea la tua prima applicazione Amazon Location Maps and Places](first-app.md) tutorial, l'applicazione viene utilizzata in modo anonimo, il che significa che gli utenti non sono tenuti ad accedere. Nel tutorial, creerai delle chiavi API da utilizzare nell'applicazione di esempio.

Segui le procedure riportate di seguito per creare la tua prima chiave API.

1. Nella [https://console.aws.amazon.com/location](https://console.aws.amazon.com/location) e scegli **le chiavi API** dal menu a sinistra.

1. Nella pagina delle **chiavi API**, scegli **Crea chiave API**.

1. Nella pagina **Crea chiave API**, inserisci le seguenti informazioni:
   + **Nome**: un nome per la tua chiave API, ad esempio`MyHelloWorldApp`.
   + **Descrizione**: una descrizione opzionale per la tua chiave API.
   + **Azioni**: specifica le azioni che desideri autorizzare con questa chiave API. **Devi selezionare almeno **Geo-maps:get\$1 e Geo-places:search\$1**.**
   + Ora di **scadenza: facoltativamente, aggiungi una data e un'ora** di scadenza per la tua chiave API. Per ulteriori informazioni, consulta [Le migliori pratiche relative alle chiavi API](using-apikeys.md#api-keys-best-practices).
   + **Restrizioni per i client**: facoltativamente, aggiungi uno o più domini Web o una o più app Android o Apple in cui puoi utilizzare la chiave API. Ad esempio, se la chiave API serve a consentire l'esecuzione di un'applicazione sul sito Web`example.com`, puoi inserirla `*.example.com/` come referente consentito.
   + **Tag**: facoltativamente, aggiungi tag alla chiave API.
**Importante**  
Ti consigliamo di proteggere l'utilizzo della chiave API impostando un orario di scadenza o un referente, se non entrambi.

1. Scegli **Crea chiave API** per creare la chiave API.

1. Nella pagina dei dettagli della chiave API, puoi visualizzare le informazioni sulla chiave API che hai creato. 

   Scegli **Mostra chiave API** e copia il valore della chiave da utilizzare più avanti nel [Crea la tua prima applicazione Amazon Location Maps and Places](first-app.md) tutorial. Il valore della chiave avrà il formato`v1.public.a1b2c3d4...`. 

# Scegli l'API giusta
<a name="choose-an-api"></a>

Questo argomento ti aiuta a scegliere un'API Amazon Location Service in base a casi d'uso comuni che potresti voler risolvere con dati e servizi basati sulla posizione. 

Mappe  
Le mappe forniscono l'accesso a tipi di mappe dinamiche e statiche per una varietà di applicazioni. Per ulteriori informazioni, vedere[Mappe del servizio di posizione Amazon](maps.md).  
+ **Mappe dinamiche: mappe** interattive che possono essere personalizzate in tempo reale, che consentono agli utenti di eseguire panoramiche, ingrandire e sovrapporre i dati. Per ulteriori informazioni, vedere[Mappe dinamiche](dynamic-maps.md).
+ **Mappe statiche**: immagini statiche di mappe che mostrano posizioni o percorsi specifici senza elementi interattivi, adatte per applicazioni con interattività limitata. Per ulteriori informazioni, vedere[Mappe statiche](static-maps.md).

Percorsi  
I percorsi offrono funzionalità per il calcolo di percorsi ottimizzati tra le località. Queste funzionalità supportano applicazioni che richiedono pianificazione logistica, calcolo delle distanze e ottimizzazione dei percorsi. Gli utenti possono anche agganciare i punti di posizione alle strade per una maggiore precisione. Per ulteriori informazioni, vedere[Route del servizio di posizione Amazon](routes.md).  
+ **CalculateIsolines**: Genera isolinee in base al tempo o alla distanza di viaggio, utili per definire aree di servizio o zone di raggiungibilità. Per ulteriori informazioni, vedere. [Calcola isolinee](calculate-isolines.md)
+ **CalculateRouteMatrix**: fornisce una matrice di distanze e tempi di viaggio tra più origini e destinazioni, a supporto della logistica e della pianificazione dei viaggi. Per ulteriori informazioni, vedere[Calcola la matrice del percorso](calculate-route-matrix.md).
+ **CalculateRoutes**: calcola percorsi ottimizzati per la point-to-point navigazione con più fermate, incluse le preferenze di percorso personalizzabili. Per ulteriori informazioni, vedere. [Calcola percorsi](calculate-routes.md)
+ **OptimizeWaypoints**: ottimizza l'ordine dei waypoint per l'itinerario di viaggio più efficiente, riducendo al minimo la distanza o il tempo. Per ulteriori informazioni, vedere. [Ottimizza i waypoint](actions-optimize-waypoints.md)
+ **SnapToRoads**: allinea le coordinate ai percorsi stradali più vicini, migliorando la precisione del GPS associando i punti alle strade conosciute. Per ulteriori informazioni, vedere. [Snap to Roads](snap-to-roads.md)

Luoghi  
Places consente alle applicazioni di cercare, trovare e recuperare dettagli su punti di interesse, indirizzi e località specifiche. Queste funzionalità migliorano i servizi basati sulla posizione fornendo un contesto e migliorando l'esperienza dell'utente nelle funzioni di ricerca. Per ulteriori informazioni, vedere. [Luoghi del servizio di posizione Amazon](places.md)   
+ **Geocodifica**: converte gli indirizzi o i nomi dei luoghi in coordinate geografiche (longitudine, latitudine), supportando applicazioni che richiedono la address-to-location trasformazione per la mappatura e l'analisi spaziale. Per ulteriori informazioni, consulta [Geocodifica](geocode.md).
+ **Geocodifica inversa**: converte le coordinate geografiche nell'indirizzo o nel nome del luogo più vicino, fornendo il contesto per una posizione. Per ulteriori informazioni, vedere. [Geocodifica inversa](reverse-geocode.md)
+ **Completamento automatico**: suggerisce possibili completamenti per il testo inserito dall'utente, migliorando l'efficienza nell'immissione di ricerca. Per ulteriori informazioni, vedere. [Completamento automatico](autocomplete.md)
+ **GetPlace**: recupera informazioni dettagliate su un luogo specifico, inclusi attributi come indirizzo, dettagli di contatto e orari di apertura. Per ulteriori informazioni, vedere[GetPlace](get-place.md).
+ **SearchNearby**: trova luoghi entro un raggio specificato da un determinato punto geografico, adatto per ricerche «vicino a me». Per ulteriori informazioni, vedere[Cerca nelle vicinanze](search-nearby.md).
+ **SearchText**: consente la ricerca testuale di luoghi o punti di interesse in base a una parola chiave o una frase, ideale per trovare località per nome o descrizione. Per ulteriori informazioni, vedere. [Testo di ricerca](search-text.md)
+ **Suggerisci**: fornisce suggerimenti sui termini di ricerca durante la digitazione degli utenti, migliorando la pertinenza della ricerca e l'esperienza utente. Per ulteriori informazioni, vedere[Suggerimento](suggest.md).

Geofence  
Il geofencing consente alle applicazioni di definire i confini geografici e monitorare gli eventi di entrata o uscita all'interno di queste regioni. Le funzionalità includono la creazione, l'aggiornamento e l'eliminazione dei geofence, nonché la configurazione di notifiche o trigger per azioni basate sulla posizione quando i dispositivi tracciati attraversano i confini del geofence. Ideale per notifiche basate sulla prossimità, monitoraggio della sicurezza e tracciamento delle risorse all'interno di aree predefinite. Per ulteriori informazioni, vedere. [Geofence del servizio di Localizzazione Amazon](geofences.md)

Localizzatori  
Il tracciamento consente il monitoraggio in tempo reale della posizione dei dispositivi o delle risorse nel tempo. Le funzionalità includono l'aggiunta di dispositivi tracciati, l'aggiornamento dei dati sulla posizione e il recupero dei dati storici sulla posizione. I tracker sono utili per gestire le flotte, monitorare il personale e garantire la sicurezza di risorse preziose fornendo up-to-date dati sulla posizione e modelli di movimento. Per ulteriori informazioni, vedere. [Localizzatori Amazon Location Service](trackers.md)

# Crea la tua prima applicazione Amazon Location Maps and Places
<a name="first-app"></a>

In questa sezione creerai la tua prima applicazione con Maps and Places.

**Prerequisito:**

Se hai già creato una chiave API durante i [Usa la console Amazon Location Service per l'autenticazione](set-up-auth.md) passaggi, iniziamo. 

Se non hai ancora creato una chiave API, [Usa la console Amazon Location Service per l'autenticazione](set-up-auth.md) procedi prima di continuare a creare l'applicazione. In caso di domande, consulta [Usa le chiavi API per l'autenticazione](using-apikeys.md) e [Regioni supportate da Amazon Location](location-regions.md) per ulteriori informazioni.

## App
<a name="qs-web"></a>

Ecco un step-by-step tutorial per creare un'applicazione cartografica Amazon Location Service con MapLibre GL JS. Questa guida ti illustrerà come configurare la mappa, aggiungere opzioni di stile e abilitare la funzionalità di ricerca dei luoghi.

### Configura la pagina iniziale
<a name="qs-initial-page"></a>

In questa sezione, configureremo la pagina iniziale e la struttura delle cartelle.

#### Aggiungi le librerie e i fogli di stile richiesti
<a name="qs-initial-add-library"></a>

Creare un file `index.html` Per renderizzare la mappa, sono necessari MapLibre GL JS e GL Geocoder. MapLibre Aggiungerai i fogli di stile MapLibre e gli script di Geocoder. JavaScript 

Copia e incolla il seguente codice nel tuo file. `index.html`

```
<!DOCTYPE html>
<html lang="en">
<head>

    <title>Amazon Location Service - Getting Started with First Map App</title>
    <meta charset='utf-8'>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Interactive map application using Amazon Location Service">

    <!--Link to MapLibre CSS and JavaScript library for map rendering and visualization -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.css" />
    <script src="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.js"></script>
    
    <!--Link to MapLibre Geocoder CSS and JavaScript library for place search and geocoding -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.css" />
    <script src="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.js"></script>
    
    <!--Link to amazon-location JavaScript librarie -->
    <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-utilities-auth-helper@1"></script>
    <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-client@1.2"></script>
    
    <!-- Link to the first Amazon Location Map App's CSS and JavaScript -->
    <script src="utils.js"></script>
    <link rel="stylesheet" href="style.css"/>
   

</head>
<body>
    <main> 
        
    </main>
    <script> 
        // Step 1: Setup API Key and AWS Region 
        // Step 2.1 Add maps to application
        // Step 2.2 initialize the map
        // Step 3: Add places features to application
        // Step 3.1: Get GeoPlaces instance. It will be used for addion search box and map click functionality
        // Step 3.2: Add search box to the map
        // Step 3.3.: Setup map click functionality
        // Add functions
    </script>
</body>
</html>
```

#### Crea il contenitore Map
<a name="qs-create-map-container"></a>

 Sotto l'`<body>`elemento del file HTML, crea un `<div>` elemento nel codice HTML per contenere la mappa. Puoi modificarlo `<div>` nel tuo CSS per impostare le dimensioni necessarie per la tua applicazione. È necessario scaricare il file CSS dal nostro GitHub repository. `style.css` Questo ti aiuterà a concentrarti sulla logica aziendale. 

 Salva i `index.html` file `style.css` and nella stessa cartella. 

 Scarica il `style.css` file da [GitHub](https://github.com/aws-geospatial/amazon-location-samples-js/blob/quick_start_sample_js/quick-start/style.css). 

```
<main role="main" aria-label="Map Container">
    <div id="map"></div>
</main>
```

#### Aggiungi la chiave API e i dettagli AWS della regione
<a name="qs-create-add-key"></a>

Aggiungi la chiave API che hai creato [Usa le chiavi API per l'autenticazione](using-apikeys.md) a questo file, insieme alla AWS regione in cui è stata creata la chiave. 

```
<!DOCTYPE html>
<html lang="en">
.....
.....
<body>
    <main role="main" aria-label="Map Container">
        <div id="map"></div>
    </main>
    <script>
        // Step 1: Setup API Key and AWS Region 
        const API_KEY = "Your_API_Key";
        const AWS_REGION = "Region_where_you_created_API_Key";
        // Step 2: Add maps to application
            // Step 2.1 initialize the map
            // Step 2.2 Add navigation controls to the map
        // Step 3: Add places feature to application        
            // Step 3.1: Get GeoPlaces instance. It will be used for addion search box and map click functionality
            // Step 3.2: Add search box to the map
            // Step 3.3.: Setup map click functionality
    </script>
</body>
</html>
```

### Aggiungi Map alla tua applicazione
<a name="qs-add-map"></a>

In questa sezione, aggiungeremo le funzionalità di Map all'applicazione. Prima di iniziare, i file devono trovarsi in questa struttura di cartelle. 

 Se non l'hai ancora fatto, scarica il `style.css` file da [GitHub](https://github.com/aws-geospatial/amazon-location-samples-js/blob/quick_start_sample_js/quick-start/style.css). 

```
|---FirstApp [Folder]
|-------------- index.html [File]
|-------------- style.css [File]
```

#### Crea una funzione per inizializzare la mappa
<a name="qs-initialize-map-function"></a>

Per configurare la mappa, crea la seguente funzione`initializeMap(...)`, dopo la riga`//Add functions`.

Scegli una posizione centrale iniziale e un livello di zoom. In questo esempio, impostiamo il centro della mappa su Vancouver, Canada, con un livello di zoom di 10. Aggiungi controlli di navigazione per semplificare lo zoom.

```
/**
 * Initializes the map with the specified style and color scheme.
 */
function initializeMap(mapStyle = "Standard", colorScheme = "Dark") {
     const styleUrl = `https://maps.geo.${AWS_REGION}.amazonaws.com/v2/styles/${mapStyle}/descriptor?key=${API_KEY}&color-scheme=${colorScheme}`;
     const map = new maplibregl.Map({
         container: 'map',                 // The ID of the map container
         style: styleUrl,                  // The style URL for the map
         center: [-123.116226, 49.246292], // Starting center coordinates
         zoom: 10,                         // Initial zoom level
         validateStyle: false              // Disable style validation
     });
     return map;                           // Return the initialized map
}
```

#### Inizializza la mappa
<a name="qs-initialize-map"></a>

Chiama `initializeMap(...)` per inizializzare la mappa. Facoltativamente, è possibile inizializzarla con lo stile e lo schema di colori preferiti dopo la funzione. `initializeMap` Per ulteriori opzioni di stile, consulta. [AWS stili e caratteristiche delle mappe](map-styles.md)

```
// Step 1: Setup API Key and AWS Region 
const API_KEY = "Your_API_Key";
const AWS_REGION = "Region_where_you_created_API_Key";

// Step 2.1 Add maps to application
// Step 2.2 initialize the map
const map = initializeMap("Standard","Light");

// Step 3: Add places features to application
```

Apri `index.html` in un browser per vedere la mappa in azione.

#### Aggiungi Navigation Control
<a name="qs-add-navigation"></a>

Facoltativamente, puoi aggiungere controlli di navigazione (zoom e rotazione) alla mappa. Questo dovrebbe essere fatto dopo la chiamata`initializeMap(...)`.

```
// Step 2.1 initialize the map
const map = initializeMap("Standard","Light");

// Step 2.2 Add navigation controls to the map
map.addControl(new maplibregl.NavigationControl());

// Step 3: Add places features to application
```

#### Controlla il codice della mappa
<a name="qs-add-final"></a>

Complimenti\$1 La tua prima app è pronta per usare una mappa. Apri `index.html` in un browser. Assicurati che `style.css` si trovi nella stessa cartella di`index.html`.

Il codice HTML finale dovrebbe avere il seguente aspetto:

```
<!DOCTYPE html>
<html lang="en">
<head>

   <title>Amazon Location Service - Getting Started with First Map App</title>
   <meta charset='utf-8'>
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <meta name="description" content="Interactive map application using Amazon Location Service">

   <!-- Link to MapLibre CSS and JavaScript library for map rendering and visualization -->
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.css" />
   <script src="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.js"></script>
   
   <!-- Link to MapLibre Geocoder CSS and JavaScript library for place search and geocoding -->
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.css" />
   <script src="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.js"></script>
   
   <!-- Link to amazon-location JavaScript library -->
   <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-utilities-auth-helper@1"></script>
   <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-client@1.2"></script>
   
   <!-- Link to the first Amazon Location Map App's CSS and JavaScript -->
   <script src="utils.js"></script>
   <link rel="stylesheet" href="style.css"/>
</head>

<body>
    <main role="main" aria-label="Map Container">
        <div id="map"></div>
    </main>
    <script>
        const API_KEY = "Your_API_Key";
        const AWS_REGION = "Region_where_you_created_API_Key";
        
        function initializeMap(mapStyle, colorScheme) {
            const styleUrl = `https://maps.geo.${AWS_REGION}.amazonaws.com/v2/styles/${mapStyle}/descriptor?key=${API_KEY}&color-scheme=${colorScheme}`;
        
            const map = new maplibregl.Map({
                container: 'map',                 // ID of the HTML element for the map
                style: styleUrl,                  // URL for the map style
                center: [-123.116226, 49.246292], // Initial map center [longitude, latitude]
                zoom: 10                          // Initial zoom level
            });
            map.addControl(new maplibregl.NavigationControl());    
            return map;
        }
        
        const map = initializeMap("Standard", "Light");
        
    </script>
</body>
</html>
```

### Aggiungi Places alla tua applicazione
<a name="qs-add-places"></a>

In questa sezione, configureremo le funzionalità di aggiunta di luoghi all'applicazione. Scarica il JavaScript file da GitHub, [https://github.com/aws-geospatial/amazon-location-samples-js/blob/quick_start_sample_js/quick-start/utils.js](https://github.com/aws-geospatial/amazon-location-samples-js/blob/quick_start_sample_js/quick-start/utils.js).

Prima di iniziare, i file devono trovarsi in questa struttura di cartelle:

```
|---FirstApp [Folder]
|-------------- index.html [File]
|-------------- style.css [File]
|-------------- utils.js [File]
```

#### Crea una funzione da creare GeoPlaces
<a name="qs-create-geoplaces"></a>

Per aggiungere funzionalità di ricerca, inizializza la `GeoPlaces` classe utilizzando `AuthHelper` and`AmazonLocationClient`. Aggiungete la seguente `getGeoPlaces(map)` funzione prima del `</script>` tag in`index.html`.

```
/**
 * Gets a GeoPlaces instance for Places operations.
 */
function getGeoPlaces(map) {
    const authHelper = amazonLocationClient.withAPIKey(API_KEY, AWS_REGION);                      // Authenticate using the API key and AWS region
    const locationClient = new amazonLocationClient.GeoPlacesClient(authHelper.getClientConfig()); // Create a GeoPlaces client
    const geoPlaces = new GeoPlaces(locationClient, map);                                          // Create GeoPlaces instance
    return geoPlaces;                                                                              // Return the GeoPlaces instance
}
```

#### Crea una funzione per aggiungere la casella di ricerca all'applicazione
<a name="qs-add-searchbox"></a>

Aggiungi le seguenti `addSearchBox(map, geoPlaces)` `createPopup(feature)` funzioni prima del `</script>` tag in `index.html` per completare la configurazione della funzionalità di ricerca. `renderPopup(feature)`

```
/**
 * Adds search box to the map.
 */
function addSearchBox(map, geoPlaces) {
    const searchBox = new MaplibreGeocoder(geoPlaces, {
        maplibregl,
        showResultsWhileTyping: true,                    // Show results while typing
        debounceSearch: 300,                             // Debounce search requests
        limit: 30,                                       // Limit number of results
        popuprender: renderPopup,                        // Function to render popup
        reverseGeocode: true,                            // Enable reverse geocoding
        zoom: 14,                                        // Zoom level on result selection
        placeholder: "Search text or nearby (lat,long)"  // Placeholder text for search box.
    });
    
    // Add the search box to the map
    map.addControl(searchBox, 'top-left'); 

    // Event listener for when a search result is selected
    searchBox.on('result', async (event) => {
        const { id, result_type } = event.result;                     // Get result ID and type
        if (result_type === "Place") {                                // Check if the result is a place
            const placeResults = await geoPlaces.searchByPlaceId(id); // Fetch details for the selected place
            if (placeResults.features.length) {
                createPopup(placeResults.features[0]).addTo(map);     // Create and add popup for the place
            }
        }
    });
}

/**
 * Renders the popup content for a given feature.
 */
function renderPopup(feature) {
    return `
        <div class="popup-content">
            <span class="${feature.place_type.toLowerCase()} badge">${feature.place_type}</span><br>
            ${feature.place_name}
        </div>`;
}

/**
 * Creates a popup for a given feature and sets its position.
 */
function createPopup(feature) {
    return new maplibregl.Popup({ offset: 30 })      // Create a new popup
        .setLngLat(feature.geometry.coordinates)     // Set the popup position
        .setHTML(renderPopup(feature));              // Set the popup content
}
```

#### Aggiungi la casella di ricerca all'applicazione
<a name="qs-add-searchbox-to-application"></a>

Crea un `GeoPlaces` oggetto chiamando `getGeoPlaces(map)` come definito nella Sezione 3.1, quindi chiama `addSearchBox(map, geoPlaces)` per aggiungere la casella di ricerca all'applicazione.

```
// Step 2: Add maps to application
// Step 2.1 initialize the map
const map = initializeMap("Standard","Light");
// Step 2.2 Add navigation controls to the map
map.addControl(new maplibregl.NavigationControl()); 

// Step 3: Add places feature to application        
// Step 3.1: Get GeoPlaces instance. It will be used for adding search box and map click functionality
const geoPlaces = getGeoPlaces(map);
// Step 3.2: Add search box to the map
addSearchBox(map, geoPlaces);
```

La ricerca dei luoghi è pronta per l'uso. Apri `index.html` in un browser per vederlo in azione.

#### Aggiungi funzione per mostrare il popup all'utente Fai clic sulla mappa
<a name="qs-add-map-click-feature"></a>

Crea una funzione `addMapClick(map, geoPlaces)` per visualizzare un popup quando l'utente fa clic sulla mappa. Aggiungi questa funzione appena prima del `</script>` tag.

```
/**
 * Sets up reverse geocoding on map click events.
 */
function addMapClick(map, geoPlaces) {
    map.on('click', async ({ lngLat }) => {                     // Listen for click events on the map
        const response = await geoPlaces.reverseGeocode({ query: [lngLat.lng, lngLat.lat], limit: 1, click: true }); // Perform reverse geocoding

        if (response.features.length) {                         // If there are results
            const clickMarker = new maplibregl.Marker({ color: "orange" }); // Create a marker
            const feature = response.features[0];               // Get the clicked feature
            const clickedPopup = createPopup(feature);          // Create popup for the clicked feature
            clickMarker.setLngLat(feature.geometry.coordinates) // Set marker position
                .setPopup(clickedPopup)                         // Attach popup to marker
                .addTo(map);                                    // Add marker to the map

            clickedPopup.on('close', () => clickMarker.remove()).addTo(map); // Remove marker when popup is closed
        }
    });
}
```

#### Funzione di chiamata per aggiungere la funzione Map Click
<a name="qs-call-map-click-feature"></a>

Per abilitare l'azione del clic sulla mappa, chiama `addMapClick(map, geoPlaces)` dopo la riga contenente`addSearchBox(map, geoPlaces)`.

```
// Step 3: Add places feature to application        
// Step 3.1: Get GeoPlaces instance. It will be used for adding search box and map click functionality
const geoPlaces = getGeoPlaces(map);
// Step 3.2: Add search box to the map
addSearchBox(map, geoPlaces);
// Step 3.3: Setup map click functionality
addMapClick(map, geoPlaces);
```

#### Applicazione Review Maps and Places
<a name="qs-review-places"></a>

Complimenti\$1 La tua prima applicazione è pronta per l'uso di Maps and Places. Apri `index.html` in un browser. Assicurati `style.css` di `utils.js` trovarti nella stessa cartella con`index.html`. 

Il codice HTML finale dovrebbe assomigliare a questo:

```
<!DOCTYPE html>
<html lang="en">
<head>

   <title>Amazon Location Service - Getting Started with First Map App</title>
    <meta charset='utf-8'>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Interactive map application using Amazon Location Service">

    <!--Link to MapLibre CSS and JavaScript library for map rendering and visualization -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.css" />
    <script src="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.js"></script>
    
    <!--Link to MapLibre Geocoder CSS and JavaScript library for place search and geocoding -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.css" />
    <script src="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.js"></script>
    
    <!--Link to amazon-location JavaScript librarie -->
    <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-utilities-auth-helper@1"></script>
    <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-client@1.2"></script>
    
    <!-- Link to the first Amazon Location Map App's CSS and JavaScript -->
    <script src="utils.js"></script>
    <link rel="stylesheet" href="style.css"/>
   

</head>
<body>
    <main role="main" aria-label="Map Container">
        <div id="map"></div>
    </main>
    <script>
        // Step 1: Setup API Key and AWS Region
        const API_KEY = "Your_API_Key";
        const AWS_REGION = "Region_where_you_created_API_Key";
        
        
        // Step 2: Add maps to application
        // Step 2.1 initialize the map
        const map = initializeMap("Standard","Light");
        // Step 2.2 Add navigation controls to the map
        map.addControl(new maplibregl.NavigationControl()); 

        // Step 3: Add places feature to application        
        // Step 3.1: Get GeoPlaces instance. It will be used for addion search box and map click functionality
        const geoPlaces =  getGeoPlaces(map);
        // Step 3.2: Add search box to the map
        addSearchBox(map, geoPlaces);
        // Step 3.3.: Setup map click functionality
        addMapClick(map, geoPlaces); 
                
 

        /**
         * Functions to add maps and places feature.
         */
         
         /**
         * Initializes the map with the specified style and color scheme.
         */ 
        function initializeMap(mapStyle = "Standard", colorScheme = "Dark") {
            const styleUrl = `https://maps.geo.${AWS_REGION}.amazonaws.com/v2/styles/${mapStyle}/descriptor?key=${API_KEY}&color-scheme=${colorScheme}`;
            const map = new maplibregl.Map({
                container: 'map',                   // The ID of the map container
                style: styleUrl,                    // The style URL for the map
                center: [-123.116226, 49.246292],   // Starting center coordinates
                zoom: 10,                           // Initial zoom level
                validateStyle: false                // Disable style validation
            });
            return map;                             // Return the initialized map
        }
        
        /**
         * Gets a GeoPlaces instance for Places operations.
         */
        function getGeoPlaces(map) {
            const authHelper =  amazonLocationClient.withAPIKey(API_KEY, AWS_REGION);                      // Authenticate using the API key and AWS region
            const locationClient = new amazonLocationClient.GeoPlacesClient(authHelper.getClientConfig()); // Create a GeoPlaces client
            const geoPlaces = new GeoPlaces(locationClient, map);                                          // Create GeoPlaces instance
                return geoPlaces;                                                                          // Return the GeoPlaces instance
        }
        
         /**
         * Adds search box to the map.
         */
        
        function addSearchBox(map, geoPlaces) {
            const searchBox = new MaplibreGeocoder(geoPlaces, {
                maplibregl,
                showResultsWhileTyping: true,                    // Show results while typing
                debounceSearch: 300,                             // Debounce search requests
                limit: 30,                                       // Limit number of results
                popuprender: renderPopup,                        // Function to render popup
                reverseGeocode: true,                            // Enable reverse geocoding
                zoom: 14,                                        // Zoom level on result selection
                placeholder: "Search text or nearby (lat,long)"  // Place holder text for search box.  
            });
            
            // Add the search box to the map
            map.addControl(searchBox, 'top-left'); 

            // Event listener for when a search result is selected
            searchBox.on('result', async (event) => {
                const { id, result_type } = event.result;                     // Get result ID and type
                if (result_type === "Place") {                                // Check if the result is a place
                    const placeResults = await geoPlaces.searchByPlaceId(id); // Fetch details for the selected place
                    if (placeResults.features.length) {
                        createPopup(placeResults.features[0]).addTo(map);     // Create and add popup for the place
                    }
                }
            });
        }

        /**
         * Renders the popup content for a given feature.
         */
        function renderPopup(feature) {
            return `
                <div class="popup-content">
                    <span class="${feature.place_type.toLowerCase()} badge">${feature.place_type}</span><br>
                    ${feature.place_name}
                </div>`;
        }

        /**
         * Creates a popup for a given feature and sets its position.
         */
        function createPopup(feature) {
            return new maplibregl.Popup({ offset: 30 })      // Create a new popup
                .setLngLat(feature.geometry.coordinates)     // Set the popup position
                .setHTML(renderPopup(feature));              // Set the popup content
        }
        
        /**
         * Sets up reverse geocoding on map click events.
         */
        function addMapClick(map, geoPlaces) {
            map.on('click', async ({ lngLat }) => {                     // Listen for click events on the map
                const response = await geoPlaces.reverseGeocode({ query: [lngLat.lng, lngLat.lat], limit: 1, click:true }); // Perform reverse geocoding

                if (response.features.length) {                         // If there are results
                    const clickMarker = new maplibregl.Marker({ color: "orange" }); // Create a marker
                    const feature = response.features[0];               // Get the clicked feature
                    const clickedPopup = createPopup(feature);          // Create popup for the clicked feature
                    clickMarker.setLngLat(feature.geometry.coordinates) // Set marker position
                        .setPopup(clickedPopup)                         // Attach popup to marker
                        .addTo(map);                                    // Add marker to the map

                    clickedPopup.on('close', () => clickMarker.remove()).addTo(map); // Remove marker when popup is closed
                }
            });
        }
        
    </script>
</body>
</html>
```

### Esplora di più
<a name="qs-whats-next"></a>

Hai completato il tutorial di avvio rapido e dovresti avere un'idea di come Amazon Location Service viene utilizzato per creare applicazioni. Per ottenere di più da Amazon Location, puoi consultare le seguenti risorse:
+ **Informazioni sui suggerimenti relativi alle query**: valuta la possibilità di estendere la `GeoPlaces` classe o utilizzare un approccio simile `ReverseGeocode` per ottenere maggiori dettagli sui risultati restituiti dall'`Suggestion`API. 
+ **Scegli l'API giusta per le tue esigenze aziendali** - Per determinare l'API di Amazon Location migliore per le tue esigenze, consulta questa risorsa:[Scegli l'API giusta](choose-an-api.md). 
+ **Consulta le guide pratiche su Amazon Location**: consulta la [Amazon Location Service Developer Guide](https://docs.aws.amazon.com/location/) per tutorial e altre risorse. 
+ **Documentazione e informazioni sul prodotto** - Per la documentazione completa, consulta la [Amazon Location Service Developer Guide](https://docs.aws.amazon.com/location/). Per ulteriori informazioni sul prodotto, vai alla pagina del [prodotto Amazon Location Service](https://aws.amazon.com/location). 

# Crea la tua prima applicazione Geofences and Trackers
<a name="first-geofence-app"></a>

In questa sezione, creerai un'applicazione che dimostra le caratteristiche principali dell'uso di Amazon Location Geofences and Trackers. Le applicazioni dimostrano come interagiscono un tracker e un geofence utilizzando una combinazione di funzionalità Lambda AWS IoT e Amazon Location. Scegli la piattaforma iOS o Android per iniziare. 

Prima di iniziare a creare l'applicazione, segui le procedure indicate [Usa la console Amazon Location Service per l'autenticazione](set-up-auth.md) per concedere l'accesso appropriato.

**Topics**
+ [Creare un'applicazione iOS](ios-geofence-app.md)
+ [Creazione di un'applicazione Android](android-geofence-app.md)

# Creare un'applicazione iOS
<a name="ios-geofence-app"></a>

Segui queste procedure per creare un'applicazione iOS utilizzando Amazon Location Service.

Clona i file di progetto da [GitHub](https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking-with-geofence-notifications).

## Crea risorse Amazon Location per la tua app
<a name="qs-ios-tracking-resources"></a>

Puoi generare risorse Amazon Location Service una volta che il tuo AWS account è pronto. Queste risorse saranno essenziali per eseguire i frammenti di codice forniti.

**Nota**  
Se non hai ancora creato un AWS account, [crea un AWS](https://portal.aws.amazon.com/billing/signup#/start/email) account.

Per iniziare devi creare un ID del pool di identità di Amazon Cognito, utilizza la seguente procedura:

1. Nella AWS console, accedi al servizio Amazon Cognito, quindi seleziona Pool di **identità dal menu a sinistra e seleziona Crea pool** **di identità**. 

1. Assicurati che **Guest Access** sia selezionato e premi **Avanti** per continuare.

1. Quindi crea un nuovo ruolo IAM o utilizza un ruolo IAM esistente.

1. Inserisci il nome di un pool di identità e assicurati che Identity Pool abbia accesso alle `(geo)` risorse di Amazon Location per la mappa e il tracker che creerai nella procedura successiva.

1. 

Ora devi creare e definire lo stile di una mappa nella console AWS Amazon Location, utilizza la seguente procedura:

1. Vai alla [sezione Mappe](https://console.aws.amazon.com/location/maps/home) nella console Amazon Location e seleziona **Crea mappa** per visualizzare in anteprima gli stili di mappa disponibili.

1. Assegna un **nome** e una **descrizione alla nuova risorsa cartografica**. Registra il nome che assegni alla risorsa cartografica, poiché verrà utilizzato più avanti nel tutorial.

1. Quando scegli uno stile di mappa, considera il fornitore dei dati cartografici. Per maggiori dettagli, consulta la sezione 82 dei [termini del AWS servizio](https://aws.amazon.com/service-terms).

1.  Accetta i [termini e le condizioni di Amazon Location](https://aws.amazon.com/service-terms/#:~:text=82.%20Amazon%20Location%20Service), quindi seleziona **Crea mappa**. Dopo aver creato la mappa, puoi interagire con essa ingrandendo, rimpicciolendo o spostandola in qualsiasi direzione.

Per creare un tracker utilizzando la console Amazon Location

1.  Apri la [console Amazon Location Service](https://console.aws.amazon.com/location/).

1.  Nel riquadro di navigazione a sinistra, scegli **Trackers**.

1.  Scegli **Crea tracker**.

1.  Compila tutti i campi obbligatori.

1.  In **Filtro di posizione**, scegli l'opzione più adatta al modo in cui intendi utilizzare la risorsa del tracker. Se non imposti il filtro di posizione, l'impostazione predefinita è. TimeBased Per ulteriori informazioni, consulta Trackers in questa guida e PositionFiltering nell'Amazon Location Service Trackers API Reference.

1.  Scegli **Crea tracker per terminare**.

## Crea una collezione Geofence
<a name="qs-ios-tracking-geofence"></a>

Quando si crea una raccolta di geofence, è possibile utilizzare la console, l'API o la CLI. Le seguenti procedure illustrano ciascuna opzione.

Crea una raccolta di geofence utilizzando la console Amazon Location:

1.  Apri la console Amazon Location Service all'indirizzo https://console.aws.amazon.com/location/.

1.  Nel riquadro di navigazione a sinistra, scegli Geofence Collections.

1.  Scegli Crea collezione geofence.

1.  Fornisci un nome e una descrizione per la raccolta.

1.  In EventBridge rule with CloudWatch as a target, puoi creare una EventBridge regola opzionale per iniziare a reagire agli eventi di geofence. Ciò consente ad Amazon Location di pubblicare eventi su Amazon CloudWatch Logs.

1.  Scegli Create geofence collection.

Crea una raccolta di geofence utilizzando Amazon Location: APIs

Usa l' CreateGeofenceCollection operazione di Amazon Location Geofences APIs. L'esempio seguente utilizza una richiesta API per creare una raccolta di geofence chiamata. `GOECOLLECTION_NAME`

```
POST /geofencing/v0/collections
Content-type: application/json
    {
        "CollectionName": "GOECOLLECTION_NAME",
        "Description": "Geofence collection 1 for shopping center",
        "Tags": { 
            "Tag1" : "Value1"
                }
    }
```

Crea una raccolta di geofence usando i comandi: AWS CLI 

Utilizza il comando create-geofence-collection. L'esempio seguente utilizza an AWS CLI per creare una raccolta di geofence chiamata. `GOECOLLECTION_NAME`

```
aws location \ create-geofence-collection \
    --collection-name "GOECOLLECTION_NAME" \
    --description "Shopping center geofence collection" \
    --tags Tag1=Value1                 
```

## Collega un tracker a una raccolta di geofence
<a name="qs-ios-tracking-link-geofence"></a>

Per collegare un tracker a una raccolta di geofence puoi utilizzare la console, l'API o la CLI. Le seguenti procedure illustrano ciascuna opzione.

Collega una risorsa tracker a una raccolta di geofence utilizzando la console Amazon Location Service:

1. Apri la console Amazon Location.

1. Nel riquadro di navigazione a sinistra, scegli **Trackers**.

1. In **Device Trackers**, seleziona il link del nome del tracker di destinazione.

1. **In **Collezioni Geofence collegate, scegli Collega collezione Geofence**.**

1. Nella **finestra Linked Geofence Collection, seleziona una collezione** di geofence dal menu a discesa.

1. Scegliere **Link (Collegamento)**.

1. Dopo aver collegato la risorsa tracker, ad essa verrà assegnato uno stato Attivo.

Collega una risorsa tracker a una raccolta di geofence utilizzando Amazon Location: APIs

Usa l'``AsssociateTrackerConsumer operazione di Amazon Location Trackers APIs. L'esempio seguente utilizza una richiesta API associata ExampleTracker a una raccolta di geofence utilizzando il relativo Amazon Resource Name (ARN).

```
POST /tracking/v0/trackers/ExampleTracker/consumers
Content-type: application/json
        {
           "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME"
        }
```

Collega una risorsa tracker a una raccolta di geofence utilizzando i comandi: AWS CLI 

Utilizza il comando `associate-tracker-consumer `. L'esempio seguente utilizza an AWS CLI per creare una raccolta di geofence chiamata. `GOECOLLECTION_NAME`

```
aws location \
associate-tracker-consumer \
    --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \
    --tracker-name "ExampleTracker"
```

## Usa AWS Lambda con MQTT
<a name="qs-ios-tracking-lambda"></a>

Crea una funzione Lambda:

Per creare una connessione tra Amazon Location Service AWS IoT Core e Amazon, è necessaria una AWS Lambda funzione per elaborare i messaggi inoltrati dagli EventBridge CloudWatch eventi. Questa funzione estrarrà tutti i dati di posizione, li formatterà per Amazon Location Service e li invierà tramite l'API Amazon Location Tracker. Puoi creare questa funzione tramite la AWS Lambda console oppure puoi usare AWS Command Line Interface (AWS CLI) o. AWS Lambda APIs Per creare una funzione Lambda che pubblichi aggiornamenti di posizione su Amazon Location utilizzando la console:

1.  Apri la AWS Lambda console all'indirizzo. https://console.aws.amazon.com/lambda/

1. Dalla barra di navigazione a sinistra, scegli Funzioni.

1. Scegli Crea funzione e assicurati che sia selezionato Author from zero.

1. Compila le seguenti caselle:
   + a) Nome della funzione
   + per l'opzione **Runtime**, scegliete Node.js 16.x.

1. Scegli Crea funzione.

1. Scegliete la scheda Codice per aprire l'editor.

1. Sovrascrivi il codice segnaposto in index.js con quanto segue:

   ```
   const AWS = require('aws-sdk')
   const iot = new AWS.Iot();
   exports.handler =  function(event) {
                 console.log("event===>>>", JSON.stringify(event));
                 var param = {
                   endpointType: "iot:Data-ATS"
                 };
                 iot.describeEndpoint(param, function(err, data) {
                   if (err) {
                     console.log("error===>>>", err, err.stack); // an error occurred
                   } else {
                     var endp = data['endpointAddress'];
                     const iotdata = new AWS.IotData({endpoint: endp});    
                     const trackerEvent = event["detail"]["EventType"];
                     const src = event["source"];
                     const time = event["time"];
                     const gfId = event["detail"]["GeofenceId"];
                     const resources = event["resources"][0];  
                     const splitResources = resources.split(".");  
                     const geofenceCollection = splitResources[splitResources.length - 1];
                     const coordinates = event["detail"]["Position"];                               
                     const deviceId = event["detail"]["DeviceId"]; 
                     console.log("deviceId===>>>", deviceId);
                     const msg =  {
                         "trackerEventType" : trackerEvent,
                         "source" : src,
                         "eventTime" : time,
                         "geofenceId" : gfId,
                         "coordinates": coordinates, 
                         "geofenceCollection": geofenceCollection
                       };
                     const params = {
                       topic: `${deviceId}/tracker`,
                       payload: JSON.stringify(msg),
                       qos: 0
                     };
                     iotdata.publish(params, function(err, data) {
                         if (err) {
                           console.log("error===>>>", err, err.stack); // an error occurred
                         } else {
                           console.log("Ladmbda triggered===>>>", trackerEvent);  // successful response 
                         }
                     }); 
                   }
                 });
               }
   ```

1. Scegliete Deploy per salvare la funzione aggiornata.

1. Scegli la scheda Configurazione.

1. Nella sezione Trigger, fai clic su Aggiungi trigger.

1. Seleziona EventBridge (CloudWatch Eventi) nel campo Origine.

1. Seleziona l'opzione radio `Regole esistenti`.

1. Inserisci il nome della regola in questo modo `-GEOFENCECOLLECTION\$1NAME`. AmazonLocationMonitor

1. Fate clic sul pulsante Aggiungi.

1. Verranno inoltre allegate le `dichiarazioni politiche basate sulle risorse` nella scheda delle autorizzazioni

Client di test MQTT

1. Apri la [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/).

1. Nel riquadro di navigazione a sinistra, scegli MQTT test client.

1. Vedrai una sezione intitolata **Client di test MQTT** in cui puoi configurare la tua connessione MQTT.

1. Dopo aver configurato le impostazioni necessarie, fare clic sul pulsante **Connect** per stabilire una connessione al broker MQTT utilizzando i parametri forniti.

1. Prendi nota del valore Endpoint.

Una volta connesso, è possibile abbonarsi agli argomenti MQTT o pubblicare messaggi sugli argomenti utilizzando i rispettivi campi di input forniti nell'interfaccia del client di test MQTT. Successivamente allegherai la politica MQTT:

1.  Nel menu a sinistra, sotto **Gestisci**, espandi l'opzione **Sicurezza** e fai clic su **Politiche**.

1. Fai clic sul pulsante **Crea politica**.

1. Inserire un nome per la policy.

1. In **Policy Document** seleziona la scheda **JSON**.

1. Copia e incolla la politica mostrata di seguito, ma assicurati di aggiornare tutti gli elementi con il tuo `REGION` e`ACCOUNT_ID`:

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
                   {
                     "Action": [
                       "iot:Connect",
                       "iot:Publish",
                       "iot:Subscribe",
                       "iot:Receive"
                     ],
                     "Resource": [
                       "arn:aws:iot:REGION:ACCOUNT_ID:client/${cognito-identity.amazonaws.com:sub}",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/${cognito-identity.amazonaws.com:sub}/",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}/tracker"
                      ],
                      "Effect": "Allow"
                    }
                  ]
   }
   ```

1. Seleziona il pulsante **Crea** per terminare.

## Imposta un codice di esempio per l'app
<a name="qs-ios-tracking-setup-sample"></a>

Per configurare il codice di esempio è necessario che siano installati i seguenti strumenti:
+ Git
+ XCode 15.3 o versione successiva
+ iOS Simulator 16 o versioni successive

Usa questa procedura per configurare il codice dell'app di esempio:

1. Clona il repository git da questo URL: [https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking](https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking-with-geofence-notifications)-. with-geofence-notifications

1. Apri il file di progetto `AWSLocationSampleApp.xcodeproj`.

1. Attendi il processo di risoluzione del pacchetto.

1. **Facoltativo**: nel menu di navigazione del progetto, `ConfigTemplate.xcconfig` rinominare `Config.xcconfig` e inserire i seguenti valori:

   ```
   IDENTITY_POOL_ID = `YOUR_IDENTITY_POOL_ID`
   MAP_NAME = `YOUR_MAP_NAME`
   TRACKER_NAME = `YOUR_TRACKER_NAME`
   WEBSOCKET_URL = `YOUR_MQTT_TEST_CLIENT_ENDPOINT`
   GEOFENCE_ARN = `YOUR_GEOFENCE_COLLECTION_NAME`
   ```

## Usa l'app di esempio
<a name="qs-ios-tracking-usage"></a>

Dopo aver impostato il codice di esempio, ora puoi eseguire l'app su un simulatore iOS o su un dispositivo fisico.

1. Crea ed esegui l'app.

1. L'app ti chiederà le autorizzazioni di localizzazione e notifica. Devi consentirli.

1. Tocca il pulsante `Configurazione Cognito`.

1. Se non hai inserito i valori nel file `config.xcconfig`, devi compilare il campo con i valori delle risorse che hai creato in precedenza nella schermata di configurazione.

   ```
   IDENTITY_POOL_ID = `YOUR_IDENTITY_POOL_ID`
   MAP_NAME = `YOUR_MAP_NAME`
   TRACKER_NAME = `YOUR_TRACKER_NAME`
   WEBSOCKET_URL = `YOUR_MQTT_TEST_CLIENT_ENDPOINT`
   GEOFENCE_ARN = `YOUR_GEOFENCE_COLLECTION_NAME`
   ```

1. Salva la configurazione

1. Ora puoi vedere le opzioni di filtro per tempo, distanza e precisione. Usali secondo le tue necessità.

1. Vai alla scheda `Tracciamento` dell'app e vedrai la mappa e il pulsante `Avvia tracciamento`.

1. Se hai installato l'app su un simulatore, potresti voler simulare i cambiamenti di posizione. Questo può essere fatto nell'opzione del menu Caratteristiche -> Posizione. Ad esempio, seleziona Caratteristiche -> Posizione -> Freeway Drive.

1. Tocca il pulsante `Avvia tracciamento`. Dovresti vedere i punti di tracciamento sulla mappa.

1. L'app monitora anche le posizioni in background. Pertanto, quando sposti l'app in background, ti chiederà l'autorizzazione per continuare il tracciamento in modalità background.

1. Puoi interrompere il tracciamento toccando il pulsante `Stop Tracking`.

# Creazione di un'applicazione Android
<a name="android-geofence-app"></a>

Segui queste procedure per creare un'applicazione iOS utilizzando Amazon Location Service.

Clona i file di progetto da [GitHub](https://github.com/aws-geospatial/amazon-location-samples-android/tree/main/tracking-with-geofence-notifications).

## Crea risorse Amazon Location per la tua app
<a name="qs-android-tracking-resources"></a>

Puoi generare risorse Amazon Location Service una volta che il tuo AWS account è pronto. Queste risorse saranno essenziali per l'esecuzione dei frammenti di codice forniti.

**Nota**  
Se non hai ancora creato un AWS account, [crea un AWS](https://portal.aws.amazon.com/billing/signup#/start/email) account.

Per iniziare devi creare un ID del pool di identità di Amazon Cognito, utilizza la seguente procedura:

1. Nella AWS console, accedi al servizio Amazon Cognito, quindi seleziona Pool di **identità dal menu a sinistra e seleziona Crea pool** **di identità**. 

1. Assicurati che **Guest Access** sia selezionato e premi **Avanti** per continuare.

1. Quindi crea un nuovo ruolo IAM o utilizza un ruolo IAM esistente.

1. Inserisci il nome di un pool di identità e assicurati che Identity Pool abbia accesso alle `(geo)` risorse di Amazon Location per la mappa e il tracker che creerai nella procedura successiva.

1. 

Ora devi creare e definire lo stile di una mappa nella console AWS Amazon Location, utilizza la seguente procedura:

1. Vai alla [sezione Mappe](https://console.aws.amazon.com/location/maps/home) nella console Amazon Location e seleziona **Crea mappa** per visualizzare in anteprima gli stili di mappa disponibili.

1. Assegna un **nome** e una **descrizione alla nuova risorsa cartografica**. Registra il nome che assegni alla risorsa cartografica, poiché verrà utilizzato più avanti nel tutorial.

1. Quando scegli uno stile di mappa, considera il fornitore dei dati cartografici. Per maggiori dettagli, consulta la sezione 82 dei [termini del AWS servizio](https://aws.amazon.com/service-terms).

1. Accetta i [termini e le condizioni di Amazon Location](https://aws.amazon.com/service-terms/#:~:text=82.%20Amazon%20Location%20Service), quindi seleziona **Crea mappa**. Dopo aver creato la mappa, puoi interagire con essa ingrandendo, rimpicciolendo o spostandola in qualsiasi direzione.

Per creare un tracker utilizzando la console Amazon Location

1.  Apri la [console Amazon Location Service](https://console.aws.amazon.com/location/).

1. Nel riquadro di navigazione a sinistra, scegli **Trackers**.

1. Scegli **Crea tracker**.

1. Compila tutti i campi obbligatori.

1. In **Filtro di posizione**, scegli l'opzione più adatta al modo in cui intendi utilizzare la risorsa del tracker. Se non imposti il filtro di posizione, l'impostazione predefinita è. TimeBased Per ulteriori informazioni, consulta Trackers in questa guida e PositionFiltering nell'Amazon Location Service Trackers API Reference.

1. Scegli **Crea tracker per terminare**.

## Crea una collezione Geofence
<a name="qs-android-tracking-geofence"></a>

Quando si crea una raccolta di geofence, è possibile utilizzare la console, l'API o la CLI. Le seguenti procedure illustrano ciascuna opzione.

Crea una raccolta di geofence utilizzando la console Amazon Location:

1. Apri la console Amazon Location Service all'indirizzo https://console.aws.amazon.com/location/.

1. Nel riquadro di navigazione a sinistra, scegli Geofence Collections.

1. Scegli Crea collezione geofence.

1. Fornisci un nome e una descrizione per la raccolta.

1. In EventBridge rule with CloudWatch as a target, puoi creare una EventBridge regola opzionale per iniziare a reagire agli eventi di geofence. Ciò consente ad Amazon Location di pubblicare eventi su Amazon CloudWatch Logs.

1. Scegli Create geofence collection.

Crea una raccolta di geofence utilizzando Amazon Location: APIs

Usa l' CreateGeofenceCollection operazione di Amazon Location Geofences APIs. L'esempio seguente utilizza una richiesta API per creare una raccolta di geofence chiamata. `GOECOLLECTION_NAME`

```
POST /geofencing/v0/collections
Content-type: application/json
    {
    "CollectionName": "GOECOLLECTION_NAME",
    "Description": "Geofence collection 1 for shopping center",
    "Tags": { 
        "Tag1" : "Value1"
            }
    }
```

Crea una raccolta di geofence usando i comandi: AWS CLI 

Utilizza il comando create-geofence-collection. L'esempio seguente utilizza an AWS CLI per creare una raccolta di geofence chiamata. `GOECOLLECTION_NAME`

```
aws location \ create-geofence-collection \
    --collection-name "GOECOLLECTION_NAME" \
    --description "Shopping center geofence collection" \
    --tags Tag1=Value1               
```

## Collega un tracker a una raccolta di geofence
<a name="qs-android-tracking-link-geofence"></a>

Per collegare un tracker a una raccolta di geofence puoi utilizzare la console, l'API o la CLI. Le seguenti procedure illustrano ciascuna opzione.

Collega una risorsa tracker a una raccolta di geofence utilizzando la console Amazon Location Service:

1. Apri la console Amazon Location.

1. Nel riquadro di navigazione a sinistra, scegli **Trackers**.

1. In **Device Trackers**, seleziona il link del nome del tracker di destinazione.

1. **In **Collezioni Geofence collegate, scegli Collega collezione Geofence**.**

1. Nella **finestra Linked Geofence Collection, seleziona una collezione** di geofence dal menu a discesa.

1. Scegliere **Link (Collegamento)**.

1. Dopo aver collegato la risorsa tracker, ad essa verrà assegnato uno stato Attivo.

Collega una risorsa tracker a una raccolta di geofence utilizzando Amazon Location: APIs

Usa l'``AsssociateTrackerConsumer operazione di Amazon Location Trackers APIs. L'esempio seguente utilizza una richiesta API associata ExampleTracker a una raccolta di geofence utilizzando il relativo Amazon Resource Name (ARN).

```
POST /tracking/v0/trackers/ExampleTracker/consumers
Content-type: application/json
    {
    "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME"
    }
```

Collega una risorsa tracker a una raccolta di geofence utilizzando i comandi: AWS CLI 

Utilizza il comando `associate-tracker-consumer `. L'esempio seguente utilizza an AWS CLI per creare una raccolta di geofence chiamata. `GOECOLLECTION_NAME`

```
aws location \
associate-tracker-consumer \
    --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \
    --tracker-name "ExampleTracker"
```

## Usa AWS Lambda con MQTT
<a name="qs-android-tracking-lambda"></a>

Crea una funzione Lambda:

Per creare una connessione tra Amazon Location Service AWS IoT Core e Amazon, è necessaria una AWS Lambda funzione per elaborare i messaggi inoltrati dagli EventBridge CloudWatch eventi. Questa funzione estrarrà tutti i dati di posizione, li formatterà per Amazon Location Service e li invierà tramite l'API Amazon Location Tracker. Puoi creare questa funzione tramite la AWS Lambda console oppure puoi usare AWS Command Line Interface (AWS CLI) o. AWS Lambda APIs Per creare una funzione Lambda che pubblichi aggiornamenti di posizione su Amazon Location utilizzando la console:

1.  Apri la AWS Lambda console all'indirizzo. https://console.aws.amazon.com/lambda/

1. Dalla barra di navigazione a sinistra, scegli Funzioni.

1. Scegli Crea funzione e assicurati che sia selezionato Author from zero.

1. Compila le seguenti caselle:
   + a) Nome della funzione
   + per l'opzione **Runtime**, scegliete Node.js 16.x.

1. Scegli Crea funzione.

1. Scegliete la scheda Codice per aprire l'editor.

1. Sovrascrivi il codice segnaposto in index.js con quanto segue:

   ```
   const AWS = require('aws-sdk')
   const iot = new AWS.Iot();
   exports.handler =  function(event) {
       console.log("event===>>>", JSON.stringify(event));
       var param = {
           endpointType: "iot:Data-ATS"
           };
       iot.describeEndpoint(param, function(err, data) {
           if (err) {
               console.log("error===>>>", err, err.stack); // an error occurred
            } else {
                     var endp = data['endpointAddress'];
                     const iotdata = new AWS.IotData({endpoint: endp});    
                     const trackerEvent = event["detail"]["EventType"];
                     const src = event["source"];
                     const time = event["time"];
                     const gfId = event["detail"]["GeofenceId"];
                     const resources = event["resources"][0];  
                     const splitResources = resources.split(".");  
                     const geofenceCollection = splitResources[splitResources.length - 1];
                     const coordinates = event["detail"]["Position"];                               
                     const deviceId = event["detail"]["DeviceId"]; 
                     console.log("deviceId===>>>", deviceId);
                     const msg =  {
                         "trackerEventType" : trackerEvent,
                         "source" : src,
                         "eventTime" : time,
                         "geofenceId" : gfId,
                         "coordinates": coordinates, 
                         "geofenceCollection": geofenceCollection
                     };
       const params = {
           topic: `${deviceId}/tracker`,
           payload: JSON.stringify(msg),
           qos: 0
                };
       iotdata.publish(params, function(err, data) {
           if (err) {
               console.log("error===>>>", err, err.stack); // an error occurred
           } else {
               console.log("Ladmbda triggered===>>>", trackerEvent);  // successful response 
                  }
           }); 
          }
         });
        }
   ```

1. Scegliete Deploy per salvare la funzione aggiornata.

1. Scegli la scheda Configurazione.

1. Nella sezione Trigger, fai clic su Aggiungi trigger.

1. Seleziona EventBridge (CloudWatch Eventi) nel campo Origine.

1. Seleziona l'opzione radio `Regole esistenti`.

1. Inserisci il nome della regola in questo modo `-GEOFENCECOLLECTION\$1NAME`. AmazonLocationMonitor

1. Fai clic sul pulsante Aggiungi.

1. Verranno inoltre allegate le `dichiarazioni politiche basate sulle risorse` nella scheda delle autorizzazioni

Client di test MQTT

1. Apri la [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/).

1. Nel riquadro di navigazione a sinistra, scegli MQTT test client.

1. Vedrai una sezione intitolata **Client di test MQTT** in cui puoi configurare la tua connessione MQTT.

1. Dopo aver configurato le impostazioni necessarie, fare clic sul pulsante **Connect** per stabilire una connessione al broker MQTT utilizzando i parametri forniti.

1. Annota il valore dell'endpoint.

Una volta connesso, è possibile abbonarsi agli argomenti MQTT o pubblicare messaggi sugli argomenti utilizzando i rispettivi campi di input forniti nell'interfaccia client di test MQTT. Successivamente allegherai la politica MQTT:

1.  Nel menu a sinistra, sotto **Gestisci**, espandi l'opzione **Sicurezza** e fai clic su **Politiche**.

1. Fai clic sul pulsante **Crea politica**.

1. Inserire un nome per la policy.

1. In **Policy Document** seleziona la scheda **JSON**.

1. Copia e incolla la politica mostrata di seguito, ma assicurati di aggiornare tutti gli elementi con il tuo `REGION` e`ACCOUNT_ID`:

   ```
   {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
                   {
                     "Action": [
                       "iot:Connect",
                       "iot:Publish",
                       "iot:Subscribe",
                       "iot:Receive"
                        ],
                     "Resource": [
                       "arn:aws:iot:REGION:ACCOUNT_ID:client/${cognito-identity.amazonaws.com:sub}",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/${cognito-identity.amazonaws.com:sub}/",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}/tracker"
                       ],
                     "Effect": "Allow"
                   }
                 ]
   }
   ```
**Nota**  
Registra il nome della politica e il nome dell'argomento da utilizzare nella procedura successiva.

1. Seleziona il pulsante **Crea** per terminare.

Dopo aver completato la procedura precedente, ora aggiornerai le autorizzazioni per il ruolo di ospite come segue:

1. Accedi ad Amazon Cognito e apri il tuo pool di identità. Quindi, procedi all'accesso utente e seleziona il ruolo di ospite.

1. Fai clic sulle politiche di autorizzazione per abilitare la modifica.

   ```
   {
       'Version': '2012-10-17		 	 	 ',
       'Statement': [
           {
               'Action': [
                   'geo:GetMap*',
                   'geo:BatchUpdateDevicePosition',
                   'geo:BatchEvaluateGeofences',
                   'iot:Subscribe',
                   'iot:Publish',
                   'iot:Connect',
                   'iot:Receive',
                   'iot:AttachPrincipalPolicy',
                   'iot:AttachPolicy',
                   'iot:DetachPrincipalPolicy',
                   'iot:DetachPolicy'
               ],
               'Resource': [
                   'arn:aws:geo:us-east-1:{USER_ID}:map/{MAP_NAME}',
                   'arn:aws:geo:us-east-1:{USER_ID}:tracker/{TRACKER_NAME}',
                   'arn:aws:geo:us-east-1:{USER_ID}:geofence-collection/{GEOFENCE_COLLECTION_NAME}',
                   'arn:aws:iot:us-east-1:{USER_ID}:client/${cognito-identity.amazonaws.com:sub}',
                   'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}',
                   'arn:aws:iot:us-east-1:{USER_ID}:topicfilter/${cognito-identity.amazonaws.com:sub}/*',
                   'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}/tracker'
               ],
               'Effect': 'Allow'
           },
           {
               'Condition': {
                   'StringEquals': {
                       'cognito-identity.amazonaws.com:sub': '${cognito-identity.amazonaws.com:sub}'
                   }
               },
               'Action': [
                   'iot:AttachPolicy',
                   'iot:DetachPolicy',
                   'iot:AttachPrincipalPolicy',
                   'iot:DetachPrincipalPolicy'
               ],
               'Resource': [
                   '*'
               ],
               'Effect': 'Allow'
           }
       ]
   }
   ```

1. Con le modifiche alle policy di cui sopra, tutte le AWS risorse necessarie sono ora configurate in modo appropriato per l'applicazione.

## Configura il codice dell'app di esempio
<a name="qs-android-tracking-sample-app-code"></a>



1. Apri Android Studio e seleziona **Nuovo** e poi **Project da Version Control**.

1. Vai al menu **File** nell'angolo in alto a sinistra di Android Studio.

1. Seleziona «Nuovo» dal menu a discesa.

1. Scegli «Project from Version Control».

1. Inserisci l'URL del repository Nella finestra di dialogo che appare, trova il campo contrassegnato con «URL».

1. [Copia e incolla il seguente URL per l'app di esempio in questo campo: .git https://github.com/aws-geospatial/ amazon-location-samples-android](https://github.com/aws-geospatial/amazon-location-samples-android.git)

1. Decidi la directory in cui vuoi clonare il repository. Usa la directory predefinita o opta per una posizione personalizzata.

1. Dopo aver impostato l'URL del repository e le preferenze della directory, premi il pulsante «Clona». Android Studio procederà a clonare il repository nella posizione specificata.

1. Ora hai clonato l'applicazione sul tuo computer e puoi iniziare a usarla.

## Usa l'app di esempio
<a name="qs-android-tracking-use"></a>

Per utilizzare l'esempio segui queste procedure:
+ **Crea un `custom.properties`**:

  Per configurare il `custom.properties` file, segui questi passaggi:

  1. Apri il tuo editor di testo o IDE preferito.

  1. Crea un nuovo file.

  1. Salva il file con il nome `custom.properties`.

  1. Aggiorna il file `custom.properties` con il seguente esempio di codice e sostituisci il`MQTT_END_POINT`, `POLICY_NAME``GEOFENCE_COLLECTION_NAME`, e `TOPIC_TRACKER` con i valori effettivi:

     ```
     MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com
     POLICY_NAME=xxxxxxxxx
     GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx
     TOPIC_TRACKER=xxxxxxxxxx
     ```

  1. Pulisci e ricostruisci il progetto. Dopodiché, puoi eseguire il progetto.
+ **Accedi**:

  Per accedere all'applicazione, procedi nel seguente modo:

  1. Premi il pulsante **Accedi**.

  1. Fornisci un **ID del pool di identità**, un **nome del tracker** e un **nome della mappa**.

  1. Premi nuovamente **Accedi** per terminare.
+ **Gestisci filtri**:

  Apri la schermata di configurazione ed esegui le seguenti operazioni:

  1. Attiva i filtri on/off utilizzando l'interfaccia utente dello switch.

  1. Aggiorna i filtri Tempo e Distanza quando necessario.
+ **Operazioni di tracciamento:**

  Apri la schermata di tracciamento ed esegui quanto segue:
  + È possibile avviare e interrompere il tracciamento in primo piano, sullo sfondo o in modalità risparmio energetico premendo i rispettivi pulsanti.