Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementar endpoint de frequência média de pessoas por hora em uma área visível do mapa (zoom / viewport) #43

Closed
manoelcampos opened this issue May 21, 2020 · 0 comments · Fixed by #169
Assignees
Labels
Milestone

Comments

@manoelcampos
Copy link
Contributor

manoelcampos commented May 21, 2020

Método HTTP URI Descrição
GET /localizacao/frequencia-pessoas/{area} Frequência (média) de pessoas que visitam um local por hora em uma determinada área visível do mapa (viewport). O retorno pode ser um objeto contendo todas essas estatísticas.

O sistema não saberá qual o nome do local selecionado pelo usuário, mas o usuário como usará o mapa para encontrar o lugar desejado (clicando ou digitando o nome do lugar), ele sabe a que local se refere.
Ele pode controlar o zoom para definir a área visível do mapa. A partir daí podemos obter o viewport, que é um retângulo para a área visivel. Desta forma, conseguimos filtrar os pontos que estejam dentro deste retângulo e computar estatísticas.

O viewport representa dois pontos de um retângulo: o ponto superior esquerdo e o ponto inferior direito. Com estes pontos podemos facilmente filtrar os dados no select que estejam dentro de tal área. Para as cada estatística será uma consulta diferente, agrupando os dados por hora, dia, semana ou mês.

No app/frontend usuário terá então algumas possibilidades (isto deve ser outra issue):

No app/frontend, tais informações podem aparecer no Marker onde o usuário clicou/selecionou (que será implementado em issue específica).

Detalhes de implementação

Cada endereço tem um ID único no Google Maps chamado Place ID.
Este ID pode ser salvo no banco para uso posterior, sem infringir as políticas de uso do serviço.

Como o servidor irá receber um único ponto, ele fará uma única requisição à API de reverse geocoding para obter o Place ID.
Mas como a Places API aparentemente só aceita o nome do endereço, deve ser usada a API de reverse geocoding do Maps para, a partir de um ponto, descobrir qual o endereço/nome do local.

Um exemplo de uso da Places API está disponível aqui (lá tem outro link para o código fonte do exemplo, abaixo do mapa).

Depois de termos o Place ID, podemos obter os detalhes do local.
A resposta será um objeto PlaceResult. Na requisição devemos indicar quais detalhes queremos obter.
Um dos detalhes indicados no link acima é o atributo geometry.
Tal atributo é um objeto contendo o campo viewport que representa um retângulo delimitando a área visiível no mapa. No link anterior, tem outro link para a documentação deste atributo que mostra isso.

Se o viewport for muito grande, é preciso pedir que o usuário selecione uma área mais específica aumentando o zoom.

AVISO

Observar que o atributo geometry de viewport é opcional, então teremos problema se ele não existir.

Issues Relacionadas

@silvioantonio silvioantonio linked a pull request Jun 23, 2020 that will close this issue
@manoelcampos manoelcampos changed the title Implementar endpoints REST para estatísticas de localização Implementar endpoint de tempo médio de permanência das pessoas por local Jun 23, 2020
@manoelcampos manoelcampos changed the title Implementar endpoint de tempo médio de permanência das pessoas por local Implementar endpoint de tempo médio de permanência das pessoas por área visível do mapa (zoom / viewport) Jun 25, 2020
@manoelcampos manoelcampos changed the title Implementar endpoint de tempo médio de permanência das pessoas por área visível do mapa (zoom / viewport) Implementar endpoint de tempo médio de permanência das pessoas no raio de uma área visível do mapa (zoom / viewport) Jun 25, 2020
@manoelcampos manoelcampos changed the title Implementar endpoint de tempo médio de permanência das pessoas no raio de uma área visível do mapa (zoom / viewport) Implementar endpoint de tempo médio de permanência das pessoas em uma área visível do mapa (zoom / viewport) Jun 25, 2020
@manoelcampos manoelcampos changed the title Implementar endpoint de tempo médio de permanência das pessoas em uma área visível do mapa (zoom / viewport) Implementar endpoint de média de pessoas em uma área visível do mapa (zoom / viewport) Jun 25, 2020
@manoelcampos manoelcampos changed the title Implementar endpoint de média de pessoas em uma área visível do mapa (zoom / viewport) Implementar endpoint de frequência média de pessoas em uma área visível do mapa (zoom / viewport) Jun 25, 2020
@silvioantonio silvioantonio mentioned this issue Jul 3, 2020
@silvioantonio silvioantonio linked a pull request Jul 3, 2020 that will close this issue
This was unlinked from pull requests Jul 4, 2020
@silvioantonio silvioantonio linked a pull request Jul 7, 2020 that will close this issue
@silvioantonio silvioantonio mentioned this issue Jul 7, 2020
@manoelcampos manoelcampos added this to the AglomerouApp 1.0.0 milestone Jul 7, 2020
manoelcampos added a commit that referenced this issue Jul 8, 2020
* Adiciona rota GET /localizacao/frequencia-pessoas/:lat1/:lng1/:lat2/:lng2

Co-authored-by: Manoel Campos <[email protected]>
@manoelcampos manoelcampos changed the title Implementar endpoint de frequência média de pessoas em uma área visível do mapa (zoom / viewport) Implementar endpoint de frequência média de pessoas por hora em uma área visível do mapa (zoom / viewport) Jul 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants