Uma das coisas que me encantam no rádio é imaginar a distância entre as pessoas que estão conversando. Uma voz chega pelo equipamento e, do outro lado, existe alguém em outra cidade, com outra paisagem e outra rotina. Quis trazer um pouco dessa dimensão para o QSObook.
O projeto ganhou um mapa opcional das cidades dos contatos confirmados. A proposta é relacionar os registros a lugares, mantendo o foco na simplicidade e no controle sobre os dados.
Um mapa do histórico de contatos
O mapa fica na tela inicial e usa a cidade, o estado e o país guardados em cada QSO confirmado. Ele agrupa os contatos por localidade e permite abrir os registros ligados àquela cidade.

Demonstração com um contato fictício em São Paulo. Cartografia e dados © contribuidores do OpenStreetMap, com dados sob ODbL. A localização representa a cidade, não o endereço de uma estação.
O marcador é uma posição aproximada da cidade. Ele não identifica a casa de um colega nem mede a distância exata entre antenas. Também não é um mapa de propagação ou uma simulação de cobertura: é uma maneira de visualizar as localidades do histórico.
Quem está sem cidade informada continua no total de contatos, mas não ganha um ponto no mapa.
O lugar do contato continua ligado àquele momento
Procurei manter a mesma lógica do restante do caderno: cada contato conserva uma cópia dos dados do momento em que foi registrado. O mapa usa essa localização histórica.
Se depois eu atualizar a cidade no cadastro de uma estação, os contatos anteriores não são deslocados automaticamente. Isso ajuda a preservar o contexto dos registros.

O cadastro de estações pode ser atualizado sem reescrever os contatos anteriores. Tela com dados fictícios de demonstração.
Gosto dessa separação porque o cadastro facilita os próximos preenchimentos, enquanto o caderno conta o que ficou registrado em cada conversa. São informações relacionadas, com funções diferentes.
Ativar o mapa é uma escolha
Mantive o mapa desativado por padrão. Para usá-lo, a pessoa precisa escolher ativá-lo. O caderno e a lista de cidades continuam disponíveis sem depender dele, inclusive sem conexão com a internet.
A base cartográfica padrão é o OpenStreetMap. Ao ativar, o navegador busca as imagens do mapa no provedor, que recebe informações da conexão, como o IP e a área visualizada.
Para localizar uma cidade ainda sem coordenadas, existe a ação manual Localizar cidade. Nessa consulta, o programa envia cidade, estado e país ao serviço de geocodificação. Indicativos, nomes e observações não fazem parte dessa consulta.
Quero que essa diferença fique clara para quem usa. A escolha de manter o caderno local combina com explicar quando um recurso opcional precisa conversar com um serviço externo.
Uma consulta por necessidade
O QSObook guarda localmente as coordenadas obtidas para reaproveitá-las. A busca depende da ação da pessoa; não acontece automaticamente a cada letra digitada no cadastro.
Resultados em que a cidade não foi encontrada também ficam guardados. Na versão atual, ainda não existe um editor para refazer ou limpar esse resultado. Por isso, vale conferir a localidade do contato antes da primeira busca.
É uma parte que quero continuar refinando. O mapa acrescenta uma maneira interessante de olhar para o histórico, mas o funcionamento do caderno continua sendo a prioridade.
Um projeto pequeno também pode contar histórias
Para mim, cada linha do caderno pode lembrar uma conversa. Ver uma cidade no mapa é uma oportunidade de voltar à anotação e lembrar o assunto, o indicativo e o momento.
Estou tentando desenvolver recursos que acrescentem alguma coisa a essa experiência. O mapa é um deles: opcional, ligado aos contatos confirmados e com as escolhas de privacidade explicadas na documentação.
Visite o repositório do QSObook. O código é livre, sob AGPL-3.0, e está aberto para estudo e contribuições. No README estão as telas e os detalhes do funcionamento atual.
Se conhece alguém que gosta de radioamadorismo e software livre, compartilhe a ideia. Quero que o QSObook vá crescendo com conversas e sugestões de quem também gosta de guardar a memória dos contatos pelo rádio.
Capturas da interface: projeto QSObook, com dados fictícios. Código e licença. Os créditos do OpenStreetMap permanecem na imagem e na legenda.