Alternativa ao GoogleMaps para distância entre 2 pontos

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Alternativa ao GoogleMaps para distância entre 2 pontos

Mensagem por ANDRIL »

A api do Google passou a ser paga. Antes usava ela para obter a distância entre 2 locais através do endereço. As que achei precisam da latitude e longitude para buscarem o resultado.
Usava assim:

Código: Selecionar todos

url = [http://maps.googleapis.com/maps/api/distancematrix/xml?origins=']+endloja+['|&destinations=']+endcliente+"'|&mode='CAR'|&language='PT'|&sensor='FALSE'"
Alguém usando outra api que localize pelo endereço e que seja gratuita e menos burocratica que a do Google?
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Alternativa ao GoogleMaps para distância entre 2 pontos

Mensagem por JoséQuintas »

Tenho anotado isto, mas nunca usei:

Código: Selecionar todos

/*

DLA = diferença de latitude
DLO = diferença de longitude
maximo 180 graus

a medida varia em 60, igual horas, graus 60 unidades, minutos 1 unidade, segundos 1/60

23,30,36
23 X 60
30 X 1
36 X 1/60

multiplica no final por 1.852, que é o fator de conversão de milha náutica para quilômetros

pra considerar curvatura da terra:
x = 60 * ( ( ACos( Sen( Lat1 * PI / 180 ) * Sen( Lat2 * PI / 180 ) +
Cos( Lat1 * PI / 180 ) * Cos( Lat2 * PI / 180 ) * Cos( Abs( ( Long2 - long1 ) ) * PI / 180 ) ) ) * 180 / PI )
E multiplica o resultado por 1.852
mas trabalhar em graus:   g + m / 60 + s / 3600



p1 := { 1, 1, 1 }
p2 := { 1, 1, 1 }
L1 := p1[ 1 ] + p1[ 2 ] / 60 + p1[ 3 ] / 3600
L2 := p2[ 1 ] + p2[ 2 ] / 60 + p2[ 3 ] / 3600
PI := 3.1415926535979323846
nMN := 60 * ( ( Acos( Sen( L1 * PI / 180 ) * Sen( L2 * PI / 180 ) + ;
   Cos( L1 * PI / 180 ) * Cos( L2 * PI / 180 ) * Cos( Abs( ( L2 - L1 ) ) * PI / 180 ) ) ) * 180 / PI )
nKm := nMN * 1.852
*/
seria um cálculo a partir de latitude e longitude, pra calcular distância em linha reta.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Alternativa ao GoogleMaps para distância entre 2 pontos

Mensagem por alxsts »

Olá!

O ideal é ter, nos cadastros de endereços, colunas para armazenar a latitude e longitude.

Calcular as distâncias até que não é difícil. O exemplo postado acima está mais detalhado no artigo Calculando distancias com base em coordenadas de gps/.

Difícil é substituir os recursos que a API do Google oferece, como mostrar pontos no mapa.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Alternativa ao GoogleMaps para distância entre 2 pontos

Mensagem por ANDRIL »

José, não é bem o cálculo que preciso, mas um serviço que através do endereço do ponto A e B me de a distância sem saber a Latitude e Longitude. Isto é possível através da API do Google. Procuro um serviço alternativo, que aceite passar o endereço e não o LATI e LONG. As que tenho visto funcionam com estes parâmetros apenas.
alxsts escreveu:Difícil é substituir os recursos que a API do Google oferece, como mostrar pontos no mapa.
No meu caso, só preciso obter a distância para cálculo do frete.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Alternativa ao GoogleMaps para distância entre 2 pontos

Mensagem por alxsts »

Olá!

Encontrei isso na internet: Mapacep
É uma base de dados onde se pode localizar a latlong de casa endereço. Depois é só calcular. Barato: de 180 por 150 reais. Atualização gratuita.

O problema é que está fórmula só calcula a distância em linha reta e não serve para calcular distâncias rodoviárias...
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Alternativa ao GoogleMaps para distância entre 2 pontos

Mensagem por sygecom »

Você pode usar OpenStreet map, vai precisar hospedar um link de consulta, mas não muito complicado.

https://www.openstreetmap.org/
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder