Raio 1Km Google Maps

24,876 views
Skip to first unread message

Rogerio Esteves

unread,
Nov 7, 2012, 6:55:07 AM11/7/12
to androidb...@googlegroups.com
Bom dia Pessoal,

Existe uma maneira de eu calcular um raio de 1Km de uma posição especifica de latitude e longitude? Qual a melhor forma?

Artur Gonçalves

unread,
Nov 7, 2012, 8:16:22 AM11/7/12
to androidb...@googlegroups.com
Bom dia, Rogério.

O que você quer é calcular a distância entre um ponto de referência e outros pontos para determinar se esses outros pontos estão dentro ou fora do raio de 1 Km de distância do ponto de referência?

Artur

Em 7 de novembro de 2012 08:55, Rogerio Esteves <rol...@gmail.com> escreveu:
Bom dia Pessoal,

Existe uma maneira de eu calcular um raio de 1Km de uma posição especifica de latitude e longitude? Qual a melhor forma?

--
 
 



Danilo Mendonça

unread,
Nov 7, 2012, 8:20:21 AM11/7/12
to androidb...@googlegroups.com
Rogério, da uma olhada aqui: http://en.wikipedia.org/wiki/Haversine_formula

Danilo Mendonça Yotta Apps – Desenvolvendo Aplicativos
+55 (48) 9119.9291 | dan...@yottaapps.com.br
Site | Blog Facebook | Twitter |   
 | 
**Já viu nossos games: Delivery Box Robot Escape?



--
 
 

Leonardo S

unread,
Nov 7, 2012, 8:20:06 AM11/7/12
to androidb...@googlegroups.com
Se vc utilizar um BD tipo PostGis, ele já tem essa função.
Mas isso implica em uma estrutura de servidor. Se for para algo simples, use a API do Gmaps que retorna para vc esse valor.


Em 7 de novembro de 2012 10:16, Artur Gonçalves <martur...@gmail.com> escreveu:
--
 
 

Luiz Carvalho

unread,
Nov 7, 2012, 8:48:22 AM11/7/12
to androidb...@googlegroups.com
Olá Rogério, já tive que solucionar um problema até um pouco mais complicado que o seu. Eu tinha uma posição inicial e meu raio não era fixo ( de 1Km como no seu caso) era variável! então ficava algo bem irregular, Solucionei usando um fórmulá bem legal! disponibilizei o algorítimo em meu blog. Fique a vontade: http://www.redrails.com.br/2010/11/parte-1-calculando-coordenadas-finais-possuindo-um-ponto-inicial-a-distancia-e-o-azimute-angulo/



Boa sorte!

luciofm

unread,
Nov 7, 2012, 8:50:32 AM11/7/12
to androidb...@googlegroups.com
Se é para calcular distancia entre dois pontos, ou saber se um ponto está dentro de uma determinada area (definida por um ponto geografico e um raio), basta utilizar Location.distanceTo() https://developer.android.com/reference/android/location/Location.html#distanceTo(android.location.Location)

Lúcio Maciel
luc...@gmail.com


2012/11/7 Luiz Carvalho <maxim...@gmail.com>
--
 
 

Rogerio Esteves

unread,
Nov 7, 2012, 9:41:38 AM11/7/12
to androidb...@googlegroups.com
Isso mesmo Artur!

Conectado pelo MOTOBLUR™


-----Mensagem Original-----
--
 
 

Rogerio Esteves

unread,
Nov 7, 2012, 9:44:35 AM11/7/12
to androidb...@googlegroups.com
Legal o meu também será dinâmico vou dar uma olhada. Valeu

Conectado pelo MOTOBLUR™


-----Mensagem Original-----
--
 
 

Rogerio Esteves

unread,
Nov 7, 2012, 10:02:33 AM11/7/12
to androidb...@googlegroups.com
Lúcio é a segunda opção, coloquei no tópico uma forma que pode ser interpretada de vários jeitos. Eu tenho um ponto especifico no mapa certo. Terei outro ponto que será recebido pelo celular e eu queria saber se este ponto recebido pelo celular esta dentro do raio de 1Km do primeiro ponto especifico.
Estou colocando um exemplo de uma imagem que criei para esboçar a ideia. Queria capturar o evento quando o ponto capturado pelo celular estiver dentro do raio(vermelho que esta imagem). 

att,

Rogerio Esteves
Exemplo.png

Neto Lima

unread,
Nov 7, 2012, 10:41:15 AM11/7/12
to androidb...@googlegroups.com
Rogerio na Classe Location tem o método distanceTo que calcula a distância entre dua coordenadas (isso do lado do Android). Mas o ideal mesmo é seu servidor fazer esse trabalho.


2012/11/7 Rogerio Esteves <rol...@gmail.com>
--
 
 



--
SMS DIVERSOS - Envie mais de 400 sms divertidos para quem você gosta


luciofm

unread,
Nov 7, 2012, 11:16:30 AM11/7/12
to androidb...@googlegroups.com
No Android você teria 2 cirtulos,

Um com a area de interesse, com ponto e 1km de raio por exemplo.

E um segundo circulo, o da sua localização mais um raio determinado pela precisão da localização.

Nem sempre se o seu ponto de localização está dentro do circulo de interesse (ainda mais quando se tem um circulo pequeno) significa que você está seguramente dentro desta area...

Segue um exemplo onde tenho uma area de interesse em vermelho com um raio de 200m, e 2 pontos de localização, ambos com 77m de precisão, um desses pontos eu garanto que está dentro da area de atuação, pois o seu circulo está inteiramente dentro da area de interesse, no segundo caso, o ponto pode estar dentro como pode estar fora, devido a margem de erro reportada pelo device.


Lúcio Maciel
luc...@gmail.com


2012/11/7 Neto Lima <des...@gmail.com>

--
 
 

Rogerio Esteves

unread,
Nov 7, 2012, 12:58:05 PM11/7/12
to androidb...@googlegroups.com
Como determino esse raio na minha área de interesse?Existe algum calculo??

Rogerio Esteves

unread,
Nov 7, 2012, 1:08:22 PM11/7/12
to androidb...@googlegroups.com
Será que isso resolve?

double CalculateDistance( double nLat1, double nLon1, double nLat2, double nLon2 )
{
    double nRadius = 6371; // Earth's radius in Kilometers
    // Get the difference between our two points
    // then convert the difference into radians

    double nDLat = ToRad(nLat2 - nLat1);
    double nDLon = ToRad(nLon2 - nLon1);

    // Here is the new line
    nLat1 =  ToRad(nLat1);
    nLat2 =  ToRad(nLat2);

    double nA = pow ( sin(nDLat/2), 2 ) + cos(nLat1) * cos(nLat2) * pow ( sin(nDLon/2), 2 );

    double nC = 2 * atan2( sqrt(nA), sqrt( 1 - nA ));
    double nD = nRadius * nC;

    return nD; // Return our calculated distance
}

Leonardo S

unread,
Nov 7, 2012, 8:26:19 PM11/7/12
to androidb...@googlegroups.com
Não reiventem a roda.
A maioria dos sistemas que tratam dados geolocalizados, seja no servidor ou no cliente (Android, neste caso) já possuem essas funções prontas e testadas.


2012/11/7 Rogerio Esteves <rol...@gmail.com>
--
 
 

Eldio Santos Jr.

unread,
Nov 7, 2012, 9:18:10 PM11/7/12
to androidb...@googlegroups.com
Cara, a API do Google Maps tem um recurso que te permite adicionar um "alerta de proximidade"... Você define o ponto e o raio e ele executa o que você definir...

Dá uma olhada no exemplo desse link que ele faz isso...




--
 
 



--
Eldio Santos Junior
Tel.: (21) 8884-3757
Skype: eldiojr
Twitter: @eldius
Página pessoal: http://eldiosantos.net
                        http://eldiosantos.net/sobre/ 
Email/GTalk: eldio...@gmail.com

Rogerio Esteves

unread,
Nov 8, 2012, 6:09:24 AM11/8/12
to androidb...@googlegroups.com
Era isso mesmo que eu estava precisando muito obrigado Eldius!

luciofm

unread,
Nov 8, 2012, 6:16:02 AM11/8/12
to androidb...@googlegroups.com
O problema dessa API é que ela mantém o GPS sempre ativo, internamente ela configura um requestLocationUpdates para cada Provider disponível:

for (int i = mProviders.size() - 1; i >= 0; i--) {
    LocationProviderInterface provider = mProviders.get(i);
    requestLocationUpdatesLocked(provider.getName(), 1000L, 1.0f, false, mProximityReceiver);
}

Ou seja, prepare-se para drenar bateria.


Lúcio Maciel
luc...@gmail.com


2012/11/8 Eldio Santos Jr. <eldio...@gmail.com>

--
 
 

Eldio Santos Jr.

unread,
Nov 8, 2012, 7:14:03 AM11/8/12
to androidb...@googlegroups.com

A questão do gps eu acho que não tem como fugir (a não ser que você use localização por rede ou algo do tipo), mas a questão do provider você pode adaptar e usar só um deles... Não li direito, só olhei por alto, mas até onde conheço acho que apenas um já é suficiente pra isso...

--
 
 

Rogerio Esteves

unread,
Nov 8, 2012, 8:06:49 AM11/8/12
to androidb...@googlegroups.com
Mas nao tem como eu desativar o gps e criar um serviço para eu ativa-lo em um determinado horário

Conectado pelo MOTOBLUR™


-----Mensagem Original-----
--
 
 

luciofm

unread,
Nov 8, 2012, 8:12:06 AM11/8/12
to androidb...@googlegroups.com
Sobre GeoFencing, postei como trabalho uns dias atras...



Lúcio Maciel
luc...@gmail.com


2012/11/8 Rogerio Esteves <rol...@gmail.com>
--
 
 

Reply all
Reply to author
Forward
0 new messages