Skip to content

[FRONTEND] Mapa interativo para o comércio informar seu endereço #45

Description

@JSangaleti

Objetivo

Implementar a seleção de localização do comércio no frontend usando uma tela com mapa interativo, permitindo que o usuário escolha com precisão o ponto do estabelecimento.

Essa funcionalidade deve facilitar o cadastro/edição de comércios, evitando que o usuário precise digitar manualmente todo o endereço e permitindo que o backend receba coordenadas confiáveis para uso em mapas, rotas e localização.

Contexto

O backend já foi preparado para armazenar dados de localização dos comércios, incluindo:

  • rua/logradouro;
  • número;
  • bairro;
  • cidade;
  • estado;
  • CEP;
  • país;
  • latitude;
  • longitude.

Também retorna, para os comércios, campos derivados como:

  • formattedAddress;
  • mapLinks.googleMaps;
  • mapLinks.waze.

A ideia desta issue é implementar a parte visual no app Flutter, permitindo que o usuário selecione a latitude/longitude em um mapa.

Pacotes sugeridos

Sugestões de pacotes Flutter:

  • google_maps_flutter: para exibir o mapa. O pacote fornece um widget de Google Maps para Flutter, mas exige chave da Google Maps Platform e ativação dos SDKs necessários.
  • geolocator: para obter a localização atual do dispositivo e centralizar inicialmente o mapa. O pacote permite obter localização atual, última localização conhecida e verificar permissões/serviços de localização.
  • url_launcher: para abrir links externos de mapa, se necessário, como Google Maps ou Waze.

Referências:

  • google_maps_flutter: plugin oficial para integrar Google Maps em apps Flutter. :contentReference[oaicite:0]{index=0}
  • geolocator: plugin de geolocalização com suporte a localização atual e permissões. :contentReference[oaicite:1]{index=1}
  • url_launcher: pacote para abrir URLs externas no dispositivo. :contentReference[oaicite:2]{index=2}

Fluxo esperado

  1. Usuário acessa a tela de cadastro ou edição de comércio.
  2. Na seção de localização, toca em Selecionar no mapa.
  3. O app abre uma tela de mapa.
  4. O mapa tenta iniciar na localização atual do dispositivo.
  5. Caso a permissão de localização seja negada, usar uma localização padrão, por exemplo Campo Mourão/PR.
  6. O usuário ajusta o ponto do estabelecimento no mapa.
  7. O usuário confirma a localização.
  8. O app salva a latitude e longitude selecionadas.
  9. O usuário pode preencher/corrigir manualmente os campos de endereço.
  10. Ao salvar o comércio, o frontend envia os dados para o backend.

Sugestão de interação no mapa

Preferencialmente, usar o padrão de pin fixo no centro da tela.

Nesse modelo:

  • o mapa se move;
  • o pin permanece fixo no centro;
  • ao confirmar, o app pega a coordenada central atual do mapa.

Esse padrão costuma ser mais confortável no celular do que arrastar um marcador pequeno com o dedo.

Exemplo visual conceitual:

┌─────────────────────────┐
│                         │
│          📍             │
│                         │
│      mapa se move       │
│                         │
└─────────────────────────┘

[Usar minha localização atual]
[Confirmar localização]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    • Status
      Ready

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions