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: 1309
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: 20416
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 3109
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: 1309
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: 3109
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: 7135
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