

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conceitos básicos sobre o Amazon Location Service
<a name="getting-started"></a>

Este tópico apresenta a você os conceitos básicos do Amazon Location Service. Siga estas etapas para criar sua primeira aplicação e entender como escolher a API do Amazon Location apropriada com base em casos de uso comuns. 

1. **Configure a conta AWS e o acesso.**

   Se você ainda não tiver uma conta, precisará criar uma. Com o nível gratuito da AWS, você tem três meses para usar o Amazon Location Service sem pagar nada.

   Se você já tiver uma conta, precisará fornecer acesso ao Amazon Location Service.

   Continue com o tópico [Configurar a conta.](set-up.md).

1. **Entenda e configure a autenticação.**

   Para usar o Amazon Location, o usuário deve ter acesso aos recursos e às APIs que compõem o Amazon Location. Chave de API, Amazon Cognito e AWS Identity and Access Management (IAM) são três opções para conceder acesso aos seus recursos e ações (APIs). 

   Continue com o tópico [Autenticação com o Amazon Location Service](access.md).

1. **Crie sua primeira aplicação de localização.**

   Consulte [Criar sua primeira aplicação de Mapas e Locais do Amazon Location](first-app.md) para criar sua primeira aplicação “Hello World”.

1. **Escolha a API certa.**

   O Amazon Location oferece um conjunto completo de APIs de locais, rotas, mapas, geocercas e rastreadores para resolver vários casos de uso de negócios. 

   Para saber mais sobre como escolher uma API do Amazon Location, consulte [Escolher a API certa](choose-an-api.md) para obter mais informações.

# Configurar a conta.
<a name="set-up"></a>

Esta seção descreve o que você precisa fazer para usar o Amazon Location Service. Você deve ter uma Conta da AWS e ter configurado o acesso ao Amazon Location para os usuários que desejam usá-lo.

## Eu sou novo em AWS
<a name="new-user"></a>

### Inscreva-se para um Conta da AWS
<a name="sign-up-for-aws"></a>

Se você não tiver um Conta da AWS, conclua as etapas a seguir para criar um.

**Para se inscrever em um Conta da AWS**

1. Abra a [https://portal.aws.amazon.com/billing/inscrição.](https://portal.aws.amazon.com/billing/signup)

1. Siga as instruções online.

   Parte do procedimento de inscrição envolve receber uma chamada telefônica ou uma mensagem de texto e inserir um código de verificação pelo teclado do telefone.

   Quando você se inscreve em um Conta da AWS, um *Usuário raiz da conta da AWS*é criado. O usuário-raiz tem acesso a todos os Serviços da AWS e recursos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar [tarefas que exigem acesso de usuário-raiz](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS envia um e-mail de confirmação após a conclusão do processo de inscrição. A qualquer momento, você pode visualizar a atividade atual da sua conta e gerenciar sua conta acessando [https://aws.amazon.com/e](https://aws.amazon.com/) escolhendo **Minha conta**.

### Criar um usuário com acesso administrativo
<a name="create-an-admin"></a>

Depois de se inscrever em um Conta da AWS, proteja seu Usuário raiz da conta da AWS Centro de Identidade do AWS IAM, habilite e crie um usuário administrativo para que você não use o usuário root nas tarefas diárias.

**Proteja seu Usuário raiz da conta da AWS**

1.  Faça login [Console de gerenciamento da AWS](https://console.aws.amazon.com/)como proprietário da conta escolhendo **Usuário raiz** e inserindo seu endereço de Conta da AWS e-mail. Na próxima página, insira a senha.

   Para obter ajuda ao fazer login usando o usuário-raiz, consulte [Fazer login como usuário-raiz](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) no *Guia do usuário do Início de Sessão da AWS *.

1. Habilite a autenticação multifator (MFA) para o usuário-raiz.

   Para obter instruções, consulte [Habilitar um dispositivo de MFA virtual para seu usuário Conta da AWS raiz (console) no Guia](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) do *usuário do IAM*.

**Criar um usuário com acesso administrativo**

1. Habilita o Centro de Identidade do IAM.

   Para obter instruções, consulte [Habilitar o Centro de Identidade do AWS IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.

1. No Centro de Identidade do IAM, conceda o acesso administrativo a um usuário.

   Para ver um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como fonte de identidade, consulte [Configurar o acesso do usuário com o padrão Diretório do Centro de Identidade do IAM](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) no *Guia Centro de Identidade do AWS IAM do usuário*.

**Iniciar sessão como o usuário com acesso administrativo**
+ Para fazer login com o seu usuário do Centro de Identidade do IAM, use o URL de login enviado ao seu endereço de e-mail quando o usuário do Centro de Identidade do IAM foi criado.

  Para obter ajuda para fazer login usando um usuário do IAM Identity Center, consulte Como [fazer login no portal de AWS acesso](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) no *Guia Início de Sessão da AWS do usuário*.

**Atribuir acesso a usuários adicionais**

1. No Centro de Identidade do IAM, crie um conjunto de permissões que siga as práticas recomendadas de aplicação de permissões com privilégio mínimo.

   Para obter instruções, consulte [Criar um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.

1. Atribua usuários a um grupo e, em seguida, atribua o acesso de logon único ao grupo.

   Para obter instruções, consulte [Adicionar grupos](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.

## Eu já tenho uma AWS conta
<a name="existing-user"></a>

**Conceda acesso ao Amazon Location Service**

Por padrão, os usuários não administrativos não têm nenhuma permissão. Antes que eles possam acessar o Amazon Location, você deve conceder permissão anexando uma política do IAM com permissões específicas. Lembre-se de seguir o princípio de privilégio mínimo ao conceder acesso a recursos. 

**nota**  
Para obter informações sobre como dar aos usuários não autenticados acesso à funcionalidade do Amazon Location Service (por exemplo, em um aplicativo baseado na Web), consulte [Autenticação com o Amazon Location Service](access.md).

O exemplo de política a seguir dá permissão ao usuário para acessar todas as operações do Amazon Location. Para obter mais exemplos, consulte [Exemplos de políticas baseadas em identidade do 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"
    }
  ]
}
```

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
+ Usuários e grupos em Centro de Identidade do AWS IAM:

  Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.
+ Usuários gerenciados no IAM com provedor de identidades:

  Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
+ Usuários do IAM:
  + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
  + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

Ao criar aplicativos que usam o Amazon Location Service, talvez seja necessário que alguns usuários tenham acesso não autenticado. Para esses casos, consulte [Enabling unauthenticated access using Amazon Cognito](authenticating-using-cognito.md).

# Usar o console do Amazon Location Service para se autenticar
<a name="set-up-auth"></a>

**nota**  
Para saber mais sobre autenticação, consulte [Autenticação com o Amazon Location Service](access.md).

Para usar o Amazon Location Service, um usuário deve ter acesso aos recursos e APIs que compõem o Amazon Location. Por padrão, as APIs do Amazon Location exigem autenticação para serem usadas. Você pode usar o Amazon Cognito ou as chaves de API para fornecer autenticação e autorização para usuários anônimos. 

No tutorial [Criar sua primeira aplicação de Mapas e Locais do Amazon Location](first-app.md), o aplicativo tem uso anônimo, o que significa que seus usuários não precisam fazer login. Nesse tutorial, você criará chaves de API para uso no aplicativo de exemplo.

Siga os procedimentos apresentados abaixo para criar sua primeira chave de API.

1. No [https://console.aws.amazon.com/location](https://console.aws.amazon.com/location), selecione **chaves de API** no menu à esquerda.

1. Na página **Chaves de API**, selecione **Criar chave de API**.

1. Na página **Criar chave de API**, preencha as seguintes informações:
   + **Nome**: um nome para sua chave de API, do tipo `MyHelloWorldApp`.
   + **Descrição**: uma descrição opcional para a sua chave de API.
   + **Ações**: especifique as ações que você deseja autorizar com essa chave de API. Você deve selecionar pelo menos **geo-maps:Get\$1** e **geo-places:Search\$1**.
   + **Prazo**: opcional, adicione uma data e um horário de expiração para sua chave de API. Para obter mais informações, consulte [Práticas recomendadas da chave de API](using-apikeys.md#api-keys-best-practices).
   + **Restrições de cliente** – Opcionalmente, adicione um ou mais domínios da web ou um ou mais aplicativos para Android ou Apple nos quais você pode usar a chave de API. Por exemplo, se a chave de API for para permitir que um aplicativo seja executado no site `example.com`, você poderá colocar `*.example.com/` como referenciador permitido.
   + **Tags**: opcional, adicione tags à chave de API.
**Importante**  
É recomendável que você proteja o uso da chave de API definindo um prazo de expiração ou um referenciador ou os dois.

1. Selecione **Criar chave de API** para criar a chave de API.

1. Na página de detalhes da chave de API, você pode ver informações sobre a chave de API que você criou. 

   Escolha **Mostrar chave de API** e copie o valor da chave para uso posterior no tutorial do [Criar sua primeira aplicação de Mapas e Locais do Amazon Location](first-app.md). O valor da chave terá o formato `v1.public.a1b2c3d4...`. 

# Escolher a API certa
<a name="choose-an-api"></a>

Este tópico ajuda a escolher uma API do Amazon Location Service com base em casos de uso comuns que talvez você queira resolver com dados e serviços baseados em localização. 

Mapas  
Os mapas oferecem acesso a tipos de mapas dinâmicos e estáticos para uma variedade de aplicações. Para obter mais informações, consulte [Mapas do Amazon Location Service](maps.md).  
+ **Mapas dinâmicos**: mapas interativos que podem ser personalizados em tempo real para que os usuários movam, ampliem e sobreponham dados. Para obter mais informações, consulte [Mapas dinâmicos](dynamic-maps.md).
+ **Mapas estáticos**: imagens estáticas de mapas que exibem locais ou rotas específicas sem elementos interativos, adequadas para aplicações com interatividade limitada. Para obter mais informações, consulte [Mapas estáticos](static-maps.md).

Rotas  
As rotas fornecem funcionalidades para calcular caminhos otimizados entre locais. Esses atributos ajudam aplicações que exigem planejamento logístico, cálculos de distância e otimização de rotas. Os usuários também podem colocar pontos de localização em estradas para melhorar a precisão. Para obter mais informações, consulte[Rotas do Amazon Location Service](routes.md).  
+ **CalculateIsolines**: gera isolinhas com base no tempo de viagem ou na distância, úteis para definir áreas de serviço ou zonas de acessibilidade. Para obter mais informações, consulte[Calcular isolinhas](calculate-isolines.md).
+ **CalculateRouteMatrix**: Fornece uma matriz de distâncias e tempos de viagem entre várias origens e destinos, apoiando a logística e o planejamento de viagens. Para obter mais informações, consulte[Calcular matriz de rotas](calculate-route-matrix.md).
+ **CalculateRoutes**: calcula rotas otimizadas para navegação em várias point-to-point paradas, incluindo preferências de roteamento personalizáveis. Para obter mais informações, consulte[Calcular rotas](calculate-routes.md).
+ **OptimizeWaypoints**: otimiza a ordem dos pontos de referência para a rota de viagem mais eficiente, minimizando a distância ou o tempo. Para obter mais informações, consulte[Otimizar pontos de referência](actions-optimize-waypoints.md).
+ **SnapToRoads**: alinha as coordenadas aos caminhos rodoviários mais próximos, aprimorando a precisão do GPS ao capturar pontos em estradas conhecidas. Para obter mais informações, consulte[Ajustar às estradas](snap-to-roads.md).

API de locais  
Os locais permitem que as aplicações pesquisem, encontrem e recuperem detalhes sobre pontos de interesse, endereços e localizações específicas. Essas funcionalidades aprimoram os serviços baseados em localização, pois fornecem contexto e melhoram a experiência do usuário nas funções de pesquisa. Para obter mais informações, consulte[API de locais do Amazon Location Service](places.md).   
+ **Código geográfico**: converte endereços ou nomes de lugares em coordenadas geográficas (longitude, latitude), oferecendo suporte a aplicativos que exigem address-to-location transformação para mapeamento e análise espacial. Para obter mais informações, consulte [Geocodificação](geocode.md).
+ **Código geográfico reverso**: converte as coordenadas geográficas no endereço ou nome do local mais próximo, fornecendo contexto para uma localização. Para obter mais informações, consulte [Geocodificação reversa](reverse-geocode.md).
+ **Preenchimento automático**: sugere possíveis preenchimentos para o texto que o usuário insere, melhorando a eficiência na entrada de pesquisa. Para obter mais informações, consulte[Autocompletar](autocomplete.md).
+ **GetPlace**: recupera informações detalhadas sobre um local específico, incluindo atributos como endereço, detalhes de contato e horário de funcionamento. Para obter mais informações, consulte[GetPlace](get-place.md).
+ **SearchNearby**: encontra lugares dentro de um raio específico de um determinado ponto geográfico, adequados para pesquisas “perto de mim”. Para obter mais informações, consulte[Pesquisar nas proximidades](search-nearby.md).
+ **SearchText**: permite a pesquisa baseada em texto de lugares ou pontos de interesse com base em uma palavra-chave ou frase, ideal para encontrar locais por nome ou descrição. Para obter mais informações, consulte[Pesquisar texto](search-text.md).
+ **Sugerir**: apresenta sugestões de termos de pesquisa à medida que os usuários digitam, aprimorando a relevância da pesquisa e a experiência do usuário. Para obter mais informações, consulte [Sugestão](suggest.md).

Geocercas  
A geocerca permite que as aplicações definam limites geográficos e monitorem eventos de entrada ou saída nessas regiões. Os atributos incluem criar, atualizar e excluir geocercas, bem como configurar notificações ou gatilhos para ações baseadas em localização quando dispositivos rastreados ultrapassam os limites da geocerca. Ideal para notificações baseadas em proximidade, monitoramento de segurança e rastreamento de ativos em áreas predefinidas. Para obter mais informações, consulte [Geocercas do Amazon Location Service](geofences.md).

Rastreadores  
O rastreamento permite o monitoramento em tempo real da localização de dispositivos ou ativos ao longo do tempo. Os atributos incluem adicionar dispositivos rastreados, atualizar seus dados de localização e recuperar dados históricos de posição. Os rastreadores são úteis para gerenciar frotas, monitorar pessoal e garantir a segurança de ativos valiosos, fornecendo dados de up-to-date localização e padrões de movimento. Para obter mais informações, consulte[Rastreadores do Amazon Location Service](trackers.md).

# Criar sua primeira aplicação de Mapas e Locais do Amazon Location
<a name="first-app"></a>

Nesta seção, você criará sua primeira aplicação com Mapas e Locais.

**Pré-requisito:**

Se você já criou uma chave de API nas etapas [Usar o console do Amazon Location Service para se autenticar](set-up-auth.md), vamos começar. 

Se você ainda não criou uma chave de API, siga [Usar o console do Amazon Location Service para se autenticar](set-up-auth.md) antes de continuar a criar a aplicação. Se você tiver dúvidas, consulte [Usar chaves de API para se autenticar](using-apikeys.md) e [Regiões do Amazon Location](location-regions.md) para obter mais informações.

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

Aqui está um step-by-step tutorial para criar um aplicativo de mapas do Amazon Location Service com o MapLibre GL JS. Este guia traz orientações para configurar o mapa, adicionar opções de estilo e habilitar as funcionalidades de pesquisa de lugares.

### Configurar a página inicial
<a name="qs-initial-page"></a>

Nesta seção, vamos configurar a estrutura inicial de página e pasta.

#### Adicionar bibliotecas e folhas de estilo necessárias
<a name="qs-initial-add-library"></a>

Criar um arquivo `index.html` Para renderizar o mapa, você precisa do MapLibre GL JS e do GL MapLibre Geocoder. Você adicionará as folhas de estilo MapLibre e scripts do Geocoder. JavaScript 

Copie e cole o código a seguir no arquivo `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>
```

#### Criar o contêiner do mapa
<a name="qs-create-map-container"></a>

 No elemento `<body>` do arquivo HTML, crie um elemento `<div>` em seu HTML para conter o mapa. Você pode estilizar `<div>` em seu CSS para definir dimensões conforme necessário para sua aplicação. Você deve baixar o arquivo CSS,`style.css`, do nosso GitHub repositório. Isso ajudará você a se concentrar na lógica de negócios. 

 Salve os arquivos `style.css` e `index.html` na mesma pasta. 

 Baixe o `style.css` arquivo em [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>
```

#### Adicionar detalhes da chave de API e AWS da região
<a name="qs-create-add-key"></a>

Adicione a chave de API que você criou [Usar chaves de API para se autenticar](using-apikeys.md) a esse arquivo, junto com a AWS região em que a chave foi criada. 

```
<!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>
```

### Adicionar um mapa à aplicação
<a name="qs-add-map"></a>

Nesta seção, vamos adicionar recursos de mapa à aplicação. Antes de começar, seus arquivos devem estar nesta estrutura de pastas. 

 Se ainda não tiver feito isso, baixe o `style.css` arquivo em [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]
```

#### Criar uma função para inicializar o mapa
<a name="qs-initialize-map-function"></a>

Para configurar seu mapa, crie a função `initializeMap(...)` depois da linha `//Add functions`.

Escolha uma localização central inicial e um nível de zoom. Neste exemplo, definimos o centro do mapa como Vancouver, Canadá, com nível de zoom 10. Adicione controles de navegação para facilitar o 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
}
```

#### Inicializar o mapa
<a name="qs-initialize-map"></a>

Chame `initializeMap(...)` para inicializar o mapa. Você também pode inicializá-lo com seu estilo e esquema de cores preferidos após a função `initializeMap`. Para obter mais opções de estilo, consulte [AWS estilos e recursos do mapa](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
```

Abra `index.html` em um navegador para ver o mapa em ação.

#### Adicionar controle de navegação
<a name="qs-add-navigation"></a>

Como opção, você pode adicionar controles de navegação (zoom e rotação) ao mapa. Faça isso depois de chamar `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
```

#### Revisar o código do mapa
<a name="qs-add-final"></a>

Parabéns\$1 Sua primeira aplicação está pronta para usar um mapa. Em um navegador, abra `index.html`. Verifique se `style.css` está na mesma pasta que `index.html`.

O arquivo HTML final deve estar assim:

```
<!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>
```

### Adicionar locais à aplicação
<a name="qs-add-places"></a>

Nesta seção, vamos configurar recursos de locais à aplicação. Baixe o JavaScript arquivo em 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).

Antes de começar, seus arquivos devem estar nesta estrutura de pastas:

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

#### Criar função para criar GeoPlaces
<a name="qs-create-geoplaces"></a>

Para adicionar funcionalidades de pesquisa, inicialize a classe `GeoPlaces` usando `AuthHelper` e `AmazonLocationClient`. Adicione a função `getGeoPlaces(map)` a seguir antes da tag `</script>` em `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
}
```

#### Criar função para adicionar a caixa de pesquisa à aplicação
<a name="qs-add-searchbox"></a>

Adicione as funções `addSearchBox(map, geoPlaces)`, `renderPopup(feature)` e `createPopup(feature)` antes da tag `</script>` em `index.html` para concluir a configuração da funcionalidade de pesquisa.

```
/**
 * 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
}
```

#### Adicionar caixa de pesquisa à aplicação
<a name="qs-add-searchbox-to-application"></a>

Crie um objeto `GeoPlaces` chamando `getGeoPlaces(map)`, conforme definido na Seção 3.1, depois chame `addSearchBox(map, geoPlaces)` para adicionar a caixa de pesquisa à aplicação.

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

A pesquisa de local está pronta para ser usada. Abra `index.html` em um navegador para vê-la em ação.

#### Adicionar função para mostrar pop-up quando o usuário clicar no mapa
<a name="qs-add-map-click-feature"></a>

Crie uma função `addMapClick(map, geoPlaces)` para exibir um pop-up quando o usuário clicar no mapa. Adicione essa função logo antes da tag `</script>`.

```
/**
 * 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
        }
    });
}
```

#### Chamar função para adicionar atributo de clique no mapa
<a name="qs-call-map-click-feature"></a>

Para ativar a ação de clique no mapa, chame `addMapClick(map, geoPlaces)` depois da linha que contém `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);
```

#### Revisar a aplicação de Mapas e Locais
<a name="qs-review-places"></a>

Parabéns\$1 Sua primeira aplicação está pronta para usar Mapas e Locais. Em um navegador, abra `index.html`. Verifique se `style.css` e `utils.js` estão na mesma pasta com `index.html`. 

O arquivo HTML final deve estar assim:

```
<!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>
```

### Explorar mais
<a name="qs-whats-next"></a>

Você concluiu o tutorial de início rápido e deve ter uma ideia de como o Amazon Location Service é usado para criar aplicativos. Para aproveitar melhor o Amazon Location, você pode conferir os seguintes recursos:
+ **Detalhes da sugestão de consulta**: estenda a classe `GeoPlaces` ou use uma abordagem semelhante a `ReverseGeocode` para obter mais detalhes sobre os resultados retornados pela API `Suggestion`. 
+ **Escolha a API certa para as necessidades da sua empresa**: para determinar a melhor API do Amazon Location para suas necessidades, confira este recurso: [Escolher a API certa](choose-an-api.md). 
+ **Consulte os guias de “instruções” do Amazon Location**: acesse o [Guia do desenvolvedor do Amazon Location Service](https://docs.aws.amazon.com/location/) para encontrar tutoriais e mais recursos. 
+ **Documentação e informações sobre o produto**: para ver a documentação completa, acesse o [Guia do desenvolvedor do Amazon Location Service](https://docs.aws.amazon.com/location/). Para saber mais sobre o produto, acesse a página do [produto Amazon Location Service](https://aws.amazon.com/location). 

# Criar sua primeira aplicação de Geocercas e Rastreadores
<a name="first-geofence-app"></a>

Nesta seção, você criará uma aplicação que demonstra os principais atributos do uso das geocercas e rastreadores do Amazon Location. Os aplicativos demonstram como um rastreador e uma cerca geográfica interagem usando uma combinação dos recursos Lambda AWS IoT e Amazon Location. Escolha a plataforma iOS ou Android para começar. 

Antes de começar a criar a aplicação, siga os procedimentos em [Usar o console do Amazon Location Service para se autenticar](set-up-auth.md) para conceder o acesso apropriado.

**Topics**
+ [Criar uma aplicação do iOS](ios-geofence-app.md)
+ [Criar um aplicativo Android](android-geofence-app.md)

# Criar uma aplicação do iOS
<a name="ios-geofence-app"></a>

Siga estes procedimentos para criar uma aplicação para iOS usando o Amazon Location Service.

Clone os arquivos do projeto de [GitHub](https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking-with-geofence-notifications).

## Criar recursos do Amazon Location para sua aplicação
<a name="qs-ios-tracking-resources"></a>

Você pode gerar recursos do Amazon Location Service quando sua AWS conta estiver pronta. Esses recursos serão essenciais para a execução dos trechos de código fornecidos.

**nota**  
Se você ainda não criou uma AWS conta, [crie uma AWS conta](https://portal.aws.amazon.com/billing/signup#/start/email).

Para começar, você precisará criar um ID de banco de identidades do Amazon Cognito, use o seguinte procedimento:

1. No AWS console, navegue até o serviço Amazon Cognito, selecione **grupos de identidades** no menu do lado esquerdo e selecione **Criar grupo de identidades**. 

1. Verifique se a opção **Acesso de convidado** está marcada e pressione **Avançar** para continuar.

1. Escolha um perfil do IAM existente ou crie um novo.

1. Insira o nome do banco de identidades e certifique-se de que o banco de identidades tenha acesso aos recursos de `(geo)` do Amazon Location para o mapa e o rastreador que você criará no próximo procedimento.

1. 

Agora você precisa criar e estilizar um mapa no console de localização da AWS Amazon, use o seguinte procedimento:

1. Navegue até a [seção Mapas](https://console.aws.amazon.com/location/maps/home) do console do Amazon Location e selecione **Criar mapa** para visualizar os estilos de mapa disponíveis.

1. Dê um **nome** e uma **descrição** ao novo recurso de mapa. Registre o nome que você atribuir ao recurso de mapa, conforme ele será usado posteriormente no tutorial.

1. Ao escolher um estilo de mapa, considere o provedor de dados do mapa. Consulte a seção 82 dos [Termos de serviço da AWS](https://aws.amazon.com/service-terms) para obter mais detalhes.

1.  Aceite os [Termos e condições do Amazon Location](https://aws.amazon.com/service-terms/#:~:text=82.%20Amazon%20Location%20Service) e selecione **Criar mapa**. Após criar o mapa, você pode interagir com ele ampliando, reduzindo o zoom ou fazendo uma panorâmica em qualquer direção.

Para criar um rastreador usando o console do Amazon Location

1.  Abra o console do [Amazon Location Service](https://console.aws.amazon.com/location/).

1.  No painel de navegação à esquerda, selecione **Rastreadores**.

1.  Selecione **Criar rastreador**.

1.  Preencha os campos obrigatórios:

1.  Em **Filtragem de posições**, escolha a opção que melhor se adequa à forma como você pretende usar seu recurso de rastreador. Se você não definir a filtragem de posição, a configuração padrão será. TimeBased Para obter mais informações, consulte Trackers neste guia e PositionFiltering na Amazon Location Service Trackers API Reference.

1.  Escolha **Criar rastreador** para finalizar.

## Criar uma coleção de geocercas
<a name="qs-ios-tracking-geofence"></a>

Quando for criar uma coleção de geocercas, você pode usar o console, a API ou a CLI. Os procedimentos a seguir demonstram esse processo.

Para criar uma coleção de geocercas usando o console Amazon Location:

1.  Abra o console do Amazon Location Service em https://console.aws.amazon.com/location/.

1.  No painel de navegação à esquerda, selecione Coleções de geocercas.

1.  Selecione Criar coleção de geocercas.

1.  Forneça um nome e uma descrição para a coleção.

1.  Em EventBridge regra com CloudWatch como destino, você pode criar uma EventBridge regra opcional para começar a reagir aos eventos de delimitação geográfica. Isso permite que o Amazon Location publique eventos no Amazon CloudWatch Logs.

1.  Selecione Criar coleção de geocercas.

Crie uma coleção de cercas geográficas usando a localização da Amazon: APIs

Use a CreateGeofenceCollection operação da Amazon Location Geofences APIs. O exemplo a seguir usa uma solicitação de API para criar uma coleção de geocercas chamada `GOECOLLECTION_NAME`.

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

Crie uma coleção de cercas geográficas usando AWS CLI os comandos:

Use o comando   create-geofence-collection. O exemplo a seguir usa uma AWS CLI para criar uma coleção de geocercas chamada `GOECOLLECTION_NAME`.

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

## Vincule um rastreador a uma coleção de geocercas
<a name="qs-ios-tracking-link-geofence"></a>

Para vincular um rastreador a uma coleção de geocercas, você pode usar o console, a API ou a CLI. Os procedimentos a seguir demonstram esse processo.

Vincular um recurso de rastreador a uma coleção de geocercas usando o console do Amazon Location Service:

1. Abra o console do Amazon Location.

1. No painel de navegação à esquerda, selecione **Rastreadores**.

1. Em **Rastreadores de dispositivos**, selecione o link do nome do rastreador de destino.

1. Em **Coleções de geocercas vinculadas**, selecione **Vincular coleção de geocercas**.

1. Na janela **Coleção de geocercas vinculadas**, selecione uma coleção de geocercas no menu suspenso.

1. Escolha **Vincular**.

1. Depois de vincular o recurso de rastreador, ele receberá um status de Ativo.

Vincule um recurso rastreador a uma coleção de cercas geográficas usando a localização da Amazon: APIs

Use a `` AsssociateTrackerConsumer operação dos Amazon Location Trackers APIs. O exemplo a seguir usa uma solicitação de API ExampleTracker associada a uma coleção de cercas geográficas usando seu 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"
        }
```

Vincule um recurso de rastreador a uma coleção de geocercas usando comandos da AWS CLI :

Use o comando `associate-tracker-consumer `. O exemplo a seguir usa um AWS CLI para criar uma coleção de geofence chamada. `GOECOLLECTION_NAME`

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

## Use o AWS Lambda com o MQTT
<a name="qs-ios-tracking-lambda"></a>

Crie uma função do Lambda:

Para criar uma conexão entre AWS IoT Core o Amazon Location Service, você precisa de uma AWS Lambda função para processar mensagens encaminhadas por EventBridge CloudWatch eventos. Essa função extrairá todos os dados posicionais, os formatará para o Amazon Location Service e os enviará por meio da API do rastreador do Amazon Location. Você pode criar essa função por meio do AWS Lambda console ou usar o AWS Command Line Interface (AWS CLI) ou AWS Lambda APIs o. Para criar uma função do Lambda que publique atualizações de posição no Amazon Location usando o console:

1.  Abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

1. No painel de navegação à esquerda, selecione Funções.

1. Selecione Criar função e confirme se Autor do zero está selecionado.

1. Preencha as seguintes caixas:
   + um nome de Função
   + para a opção **Runtime**, selecione Node.js 16.x.

1. Selecione Criar função.

1. Selecione a guia Código para abrir o editor.

1. Substitua o código do espaço reservado em index.js pelo seguinte:

   ```
   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. Selecione Implantar para salvar a função atualizada.

1. Escolha a guia Configuração.

1. Na seção Acionadores, escolha Adicionar acionador.

1. Selecione EventBridge (CloudWatch Eventos) no campo Fonte.

1. Selecione a opção de rádio “Regras existentes”.

1. Insira o nome da regra assim `AmazonLocationMonitor-GEOFENCECOLLECTION\$1NAME`.

1. Clique no botão Adicionar.

1. Isso também anexará `Resource-based policy statements` (declarações de políticas baseadas em recursos) na guia de permissões

Cliente de teste MQTT

1. Abra a [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/).

1. No painel de navegação, escolha Cliente de teste MQTT.

1. Você verá uma seção intitulada **Cliente de teste MQTT**, na qual você pode configurar sua conexão MQTT.

1. Depois de definir as configurações necessárias, clique no botão **Connect** para estabelecer uma conexão com o broker MQTT usando os parâmetros fornecidos.

1. Anote o valor do Endpoint.

Uma vez conectado, você pode assinar os tópicos do MQTT ou publicar mensagens nos tópicos usando os respectivos campos de entrada fornecidos na interface do cliente de teste do MQTT. Em seguida, você anexará a Política do MQTT:

1.  No menu do lado esquerdo, em **Gerenciar**, expanda a opção **Segurança** e clique em **Políticas**.

1. Clique no botão **Criar política**.

1. Insira um nome de política.

1. Em **Documento de política**, selecione a guia **JSON**.

1. Copie e cole a política mostrada abaixo, mas certifique-se de atualizar todos os elementos com seu `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. Selecione o botão **Criar** para finalizar.

## Configurar o código de exemplo da aplicação
<a name="qs-ios-tracking-setup-sample"></a>

Para configurar o código de exemplo, você deve ter as seguintes ferramentas instaladas:
+ Git
+ XCode 15.3 ou posterior
+ Simulador iOS 16 ou posterior

Use este procedimento para configurar o código da aplicação de exemplo:

1. [Clone o repositório git a partir desta URL: https://github.com/aws-geospatial/amazon-location-samples-ios/-. tree/main/tracking with-geofence-notifications](https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking-with-geofence-notifications)

1. Abra o arquivo de projeto `AWSLocationSampleApp.xcodeproj`.

1. Aguarde o término do processo de resolução do pacote.

1. **Opcional**: no menu de navegação do projeto, renomeie `ConfigTemplate.xcconfig` para `Config.xcconfig` e preencha os seguintes valores:

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

## Usar a aplicação de exemplo
<a name="qs-ios-tracking-usage"></a>

Depois de configurar o código de amostra, agora você pode executar a aplicação em um simulador iOS ou em um dispositivo físico.

1. Compile e execute o código.

1. A aplicação solicitará permissões de localização e notificação. Você precisa permiti-los.

1. Toque no botão `Configuração do Cognito`.

1. Se não preencheu os valores no arquivo `Config.xcconfig`, você precisa preencher o campo com os valores dos recursos que você criou anteriormente na tela de configuração.

   ```
   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. Salvar a configuração

1. Agora você pode ver as opções de filtro para tempo, distância e precisão. Use-os conforme sua necessidade.

1. Vá para a guia `Rastreamento` na aplicação e você verá o mapa e o botão `Iniciar rastreamento`.

1. Se você instalou A aplicação em um simulador, talvez queira simular mudanças de localização. Isso pode ser feito em Atributos -> opção do menu Localização. Por exemplo, selecione Atributos -> Localização -> Freeway Drive.

1. Toque no botão `Iniciar rastreamento`. Você deve ver os pontos de rastreamento no mapa.

1. A aplicação também está rastreando os locais em segundo plano. Portanto, quando você move a aplicação em segundo plano, ela solicita sua permissão para continuar rastreando no modo de segundo plano.

1. Você pode interromper o rastreamento tocando no botão `Parar rastreamento`.

# Criar um aplicativo Android
<a name="android-geofence-app"></a>

Siga estes procedimentos para criar uma aplicação para iOS usando o Amazon Location Service.

Clone os arquivos do projeto de [GitHub](https://github.com/aws-geospatial/amazon-location-samples-android/tree/main/tracking-with-geofence-notifications).

## Criar recursos do Amazon Location para sua aplicação
<a name="qs-android-tracking-resources"></a>

Você pode gerar recursos do Amazon Location Service quando sua AWS conta estiver pronta. Esses recursos serão essenciais para a execução dos trechos de código fornecidos.

**nota**  
Se você ainda não criou uma AWS conta, [crie uma AWS conta](https://portal.aws.amazon.com/billing/signup#/start/email).

Para começar, você precisará criar um ID de banco de identidades do Amazon Cognito, use o seguinte procedimento:

1. No AWS console, navegue até o serviço Amazon Cognito, selecione **grupos de identidades** no menu do lado esquerdo e selecione **Criar grupo de identidades**. 

1. Verifique se a opção **Acesso de convidado** está marcada e pressione **Avançar** para continuar.

1. Escolha um perfil do IAM existente ou crie um novo.

1. Insira o nome do banco de identidades e certifique-se de que o banco de identidades tenha acesso aos recursos de `(geo)` do Amazon Location para o mapa e o rastreador que você criará no próximo procedimento.

1. 

Agora você precisa criar e estilizar um mapa no console de localização da AWS Amazon, use o seguinte procedimento:

1. Navegue até a [seção Mapas](https://console.aws.amazon.com/location/maps/home) do console do Amazon Location e selecione **Criar mapa** para visualizar os estilos de mapa disponíveis.

1. Dê um **nome** e uma **descrição** ao novo recurso de mapa. Registre o nome que você atribuir ao recurso de mapa, conforme ele será usado posteriormente no tutorial.

1. Ao escolher um estilo de mapa, considere o provedor de dados do mapa. Consulte a seção 82 dos [Termos de serviço da AWS](https://aws.amazon.com/service-terms) para obter mais detalhes.

1. Aceite os [Termos e condições do Amazon Location](https://aws.amazon.com/service-terms/#:~:text=82.%20Amazon%20Location%20Service) e selecione **Criar mapa**. Após criar o mapa, você pode interagir com ele ampliando, reduzindo o zoom ou fazendo uma panorâmica em qualquer direção.

Para criar um rastreador usando o console do Amazon Location

1.  Abra o console do [Amazon Location Service](https://console.aws.amazon.com/location/).

1. No painel de navegação à esquerda, selecione **Rastreadores**.

1. Selecione **Criar rastreador**.

1. Preencha os campos obrigatórios:

1. Em **Filtragem de posições**, escolha a opção que melhor se adequa à forma como você pretende usar seu recurso de rastreador. Se você não definir a filtragem de posição, a configuração padrão será. TimeBased Para obter mais informações, consulte Trackers neste guia e PositionFiltering na Amazon Location Service Trackers API Reference.

1. Escolha **Criar rastreador** para finalizar.

## Criar uma coleção de geocercas
<a name="qs-android-tracking-geofence"></a>

Quando for criar uma coleção de geocercas, você pode usar o console, a API ou a CLI. Os procedimentos a seguir demonstram esse processo.

Para criar uma coleção de geocercas usando o console Amazon Location:

1. Abra o console do Amazon Location Service em https://console.aws.amazon.com/location/.

1. No painel de navegação à esquerda, selecione Coleções de geocercas.

1. Selecione Criar coleção de geocercas.

1. Forneça um nome e uma descrição para a coleção.

1. Em EventBridge regra com CloudWatch como destino, você pode criar uma EventBridge regra opcional para começar a reagir aos eventos de delimitação geográfica. Isso permite que o Amazon Location publique eventos no Amazon CloudWatch Logs.

1. Selecione Criar coleção de geocercas.

Crie uma coleção de cercas geográficas usando a localização da Amazon: APIs

Use a CreateGeofenceCollection operação da Amazon Location Geofences APIs. O exemplo a seguir usa uma solicitação de API para criar uma coleção de geocercas chamada `GOECOLLECTION_NAME`.

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

Crie uma coleção de cercas geográficas usando AWS CLI os comandos:

Use o comando   create-geofence-collection. O exemplo a seguir usa uma AWS CLI para criar uma coleção de geocercas chamada `GOECOLLECTION_NAME`.

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

## Vincule um rastreador a uma coleção de geocercas
<a name="qs-android-tracking-link-geofence"></a>

Para vincular um rastreador a uma coleção de geocercas, você pode usar o console, a API ou a CLI. Os procedimentos a seguir demonstram esse processo.

Vincular um recurso de rastreador a uma coleção de geocercas usando o console do Amazon Location Service:

1. Abra o console do Amazon Location.

1. No painel de navegação à esquerda, selecione **Rastreadores**.

1. Em **Rastreadores de dispositivos**, selecione o link do nome do rastreador de destino.

1. Em **Coleções de geocercas vinculadas**, selecione **Vincular coleção de geocercas**.

1. Na janela **Coleção de geocercas vinculadas**, selecione uma coleção de geocercas no menu suspenso.

1. Escolha **Vincular**.

1. Depois de vincular o recurso de rastreador, ele receberá um status de Ativo.

Vincule um recurso rastreador a uma coleção de cercas geográficas usando a localização da Amazon: APIs

Use a `` AsssociateTrackerConsumer operação dos Amazon Location Trackers APIs. O exemplo a seguir usa uma solicitação de API que se ExampleTracker associa a uma coleção de cercas geográficas usando seu 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"
    }
```

Vincule um recurso de rastreador a uma coleção de geocercas usando comandos da AWS CLI :

Use o comando `associate-tracker-consumer `. O exemplo a seguir usa um AWS CLI para criar uma coleção de geofence chamada. `GOECOLLECTION_NAME`

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

## Use o AWS Lambda com o MQTT
<a name="qs-android-tracking-lambda"></a>

Crie uma função do Lambda:

Para criar uma conexão entre AWS IoT Core o Amazon Location Service, você precisa de uma AWS Lambda função para processar mensagens encaminhadas por EventBridge CloudWatch eventos. Essa função extrairá todos os dados posicionais, os formatará para o Amazon Location Service e os enviará por meio da API do rastreador do Amazon Location. Você pode criar essa função por meio do AWS Lambda console ou usar o AWS Command Line Interface (AWS CLI) ou AWS Lambda APIs o. Para criar uma função do Lambda que publique atualizações de posição no Amazon Location usando o console:

1.  Abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

1. No painel de navegação à esquerda, selecione Funções.

1. Selecione Criar função e confirme se Autor do zero está selecionado.

1. Preencha as seguintes caixas:
   + um nome de Função
   + para a opção **Runtime**, selecione Node.js 16.x.

1. Selecione Criar função.

1. Selecione a guia Código para abrir o editor.

1. Substitua o código do espaço reservado em index.js pelo seguinte:

   ```
   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. Selecione Implantar para salvar a função atualizada.

1. Escolha a guia Configuração.

1. Na seção Acionadores, escolha Adicionar acionador.

1. Selecione EventBridge (CloudWatch Eventos) no campo Fonte.

1. Selecione a opção de rádio “Regras existentes”.

1. Insira o nome da regra assim `AmazonLocationMonitor-GEOFENCECOLLECTION\$1NAME`.

1. Clique no botão Adicionar.

1. Isso também anexará `Resource-based policy statements` (declarações de políticas baseadas em recursos) na guia de permissões

Cliente de teste MQTT

1. Abra a [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/).

1. No painel de navegação, escolha Cliente de teste MQTT.

1. Você verá uma seção intitulada **Cliente de teste MQTT**, na qual você pode configurar sua conexão MQTT.

1. Depois de definir as configurações necessárias, clique no botão **Connect** para estabelecer uma conexão com o broker MQTT usando os parâmetros fornecidos.

1. Anote o valor do endpoint.

Uma vez conectado, você pode assinar os tópicos do MQTT ou publicar mensagens nos tópicos usando os respectivos campos de entrada fornecidos na interface do cliente de teste do MQTT. Em seguida, você anexará a Política do MQTT:

1.  No menu do lado esquerdo, em **Gerenciar**, expanda a opção **Segurança** e clique em **Políticas**.

1. Clique no botão **Criar política**.

1. Insira um nome de política.

1. Em **Documento de política**, selecione a guia **JSON**.

1. Copie e cole a política mostrada abaixo, mas certifique-se de atualizar todos os elementos com seu `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**  
Registre o nome da política e o nome do tópico para usar no próximo procedimento.

1. Selecione o botão **Criar** para finalizar.

Depois de concluir o procedimento anterior, agora você atualizará as permissões para a função de convidado da seguinte forma:

1. Navegue até o Amazon Cognito e abra seu banco de identidades. Em seguida, vá para o acesso do usuário e selecione a função de convidado.

1. Clique nas políticas de permissão para ativar a edição.

   ```
   {
       '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. Com as mudanças de política acima, todos os AWS recursos necessários agora estão configurados adequadamente para o aplicativo.

## Configurar o código de exemplo da aplicação
<a name="qs-android-tracking-sample-app-code"></a>



1. Abra o Android Studio e selecione **Novo** e, em seguida, **Projeto no controle de versão**.

1. Navegue até o menu **Arquivo** no canto superior esquerdo do Android Studio.

1. No menu suspenso, selecione “Novo”.

1. Escolha “Projeto no controle de versão”.

1. Insira o URL do repositório na caixa de diálogo exibida, localize o campo marcado como “URL”.

1. Copie e cole o seguinte URL do aplicativo de amostra nesse campo: [https://github.com/aws-geospatial/amazon-location-samples-android.git](https://github.com/aws-geospatial/amazon-location-samples-android.git)

1. Decida em qual diretório você deseja clonar o repositório. Use o diretório padrão ou opte por um local personalizado.

1. Depois de definir o URL do repositório e as preferências do diretório, clique no botão “Clonar”. O Android Studio continuará clonando o repositório no local especificado.

1. Agora você clonou a aplicação em sua máquina e pode começar a usá-lo.

## Usar a aplicação de exemplo
<a name="qs-android-tracking-use"></a>

Para usar a amostra, siga estes procedimentos:
+ **Crie um `custom.properties`**:

  Para configurar seu arquivo `custom.properties`, siga estas etapas:

  1. Abra o seu editor de texto ou IDE de preferência.

  1. Criar um novo arquivo.

  1. Salve o arquivo com o nome `custom.properties`.

  1. Atualize o `custom.properties` com o exemplo de código a seguir e substitua o `MQTT_END_POINT`, `POLICY_NAME`, `GEOFENCE_COLLECTION_NAME` e `TOPIC_TRACKER` pelos valores reais:

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

  1. Limpe e reconstrua o projeto. Após isso, você poderá executar o projeto.
+ **Faça login**:

  Para fazer login na aplicação, siga as etapas abaixo:

  1. Pressione o botão **Entrar**.

  1. Forneça um **ID do banco de identidades**, um **nome do rastreador** e um **nome do mapa**.

  1. Pressione **Entrar** novamente para finalizar.
+ **Gerenciar filtros**:

  Abra a tela de configuração e faça o seguinte:

  1. Alterne os filtros on/off usando a interface do switch.

  1. Atualize os filtros de tempo e distância quando necessário.
+ **Operações de rastreamento:**

  Abra a tela de rastreamento e faça o seguinte:
  + Você pode iniciar e interromper o rastreamento em primeiro plano, segundo plano ou no modo de economia de bateria pressionando os respectivos botões.