Pontos no google maps, um help

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

Moderador: Moderadores

rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Pontos no google maps, um help

Mensagem por rbonotto »

Boa tarde pessoal, um cliente está começou a usar um sistema de localização de seus veículos via satélite e o pepino
sobrou para mim.

O sistema manda a cada um minuto um arquivo .txt com os dados da localização de cada veículo para uma asta no servidor dele.
O conteúdo é este:

Código: Selecionar todos

SeqControleArquivo;IdIntegracao;DataGeracaoArquivo;ClienteCnpj;IdHistorico;DataSistema;VeiculoPlaca;VeiculoDescricao;VeiculoClienteCnpj;DataOcorrencia;Localizacao;Referencia;Tensao;Latitude;Longitude;Velocidade;Ignicao;Odometro;Horimetro;Temperatura1;Umidade1
1166444;1;2016-03-17 09:22:35;1761298000115       ;968693778;2016-03-17 09:22:24;MJW 2878;MJW 2878;1761298000115       ;2016-03-17 09:21:40;Av Atlântica, 1311 -  (Balneário Camboriú) - SC - BR;;14.1;-48.63425400;-26.98175600;28;1;160492.268;652;-12.6;95
1166444;1;2016-03-17 09:22:35;1761298000115       ;968693924;2016-03-17 09:22:26;QHD 0753;QHD 0753;1761298000115       ;2016-03-17 09:21:49;Rod BR-280 -  (Guaramirim) - SC - BR;;14.4;-48.91982600;-26.45364900;70;1;37314.252;949;;
1166444;1;2016-03-17 09:22:35;1761298000115       ;968693944;2016-03-17 09:22:27;MLW 6907;MLW 6907;1761298000115       ;2016-03-17 09:21:50;R Bahia, 272 -  (Araucária) - PR - BR;LANCHONETE AVENIDA;14.1;-49.38658900;-25.59807000;20;1;40620.14;761;;

Os dados importantes serão a placa e a latitude e longitude. E deve ser sempre aberto o último .txt enviado ( encia um a cada minuto)


Do meu lado tenho um arquivo .dbf que tem os campos:

svc_cod
cidade
bairro
endereco

Exemplo:

Código: Selecionar todos

svc_cod    cidade     bairro             endereco
0003476    Curitiba   Santa Candida      Rua Joaquin Nabuco, 125
0005478    Curitiba   Boa Vista          Rua Canada, 550
0008654    Curitiba   Centro             Rua Nilo Cairo,770
O cliente me pediu para fazer uma rotina que o usuário entra com o código da ordem de serviço e
uma vez que a ordem exista abrir o Google Maps com os pontos dos veículos em uma cor e o ponto
do endereço do cliente em outra cor.

A única experiencia que tive com o google maps foi a de traçar o caminho entre o endereço
da loja até o cliente que foi baseada em um sample postado aqui no fórum:

Código: Selecionar todos

**************************************
FUNCTION goo_cmda()
**************************************
LOCAL oMapa, mde_uf, mpara_uf, mde_cid, mpara_cid, mde_rua, mpara_rua, mweb

WHILE .T.
   mYcomand := 0
   @ 07,08 SAY 'N§ COMANDA.: ' GET mYcomand PICT('9999999999') VALID(mYcomand > 0)
   cur(1); READ; cur(0)
   IF LASTKEY() == K_ESC; RETURN; END
   SELE hist_vda; sset(1); SEEK STRZERO(mYcomand,10)
   IF EOF()
      avs('COMANDA NŽO ENCONTRADA...')
      LOOP
   END
   SELE cliente ; sset(5); SEEK hist_vda->cod_cli
   @ 08,07 SAY REPL('-',50)
   @ 09,07 SAY 'CLIENTE..: ' + razao_scl
   @ 10,07 SAY 'ENDERE€O.: ' + endereco
   @ 11,07 SAY 'BAIRRO...: ' + bairro
   IF !conf('DADOS CORRETOS ?',17,30)
      LOOP
   END

   mde_uf  := mpara_uf  := space(20)
   mde_cid := mpara_cid := space(40)
   mde_rua := mpara_rua := space(50)

   *** "DE" ***
   mde_uf    := mAps_uf
   mde_cid   := mAps_cid
   mde_rua   := mAps_end

   *** "PARA" ***
   mpara_uf  := mAps_uf
   mpara_cid := mAps_cid
   mpara_rua := cliente->endereco

   mde_uf  := alltrim( mde_uf ) ; mpara_uf  := alltrim( mpara_uf )
   mde_cid := alltrim( mde_cid ); mpara_cid := alltrim( mpara_cid )
   mde_rua := alltrim( mde_rua ); mpara_rua := alltrim( mpara_rua )

   mweb := "https://maps.google.com.br/maps?f=d&source=s_d&saddr="+;
           lower(strtran(alltrim(mde_rua)," ","+"))+"+"+;
           lower(strtran(alltrim(mde_cid)," ","+"))+"+-+"+;
           lower(strtran(alltrim(mde_uf)," ","+"))+;
           "&daddr="+lower(strtran(alltrim(mpara_rua)," ","+"))+"+"+;
           lower(strtran(alltrim(mpara_cid)," ","+"))+"+-+"+;
           lower(strtran(alltrim(mpara_uf)," ","+"))

   myrun( mYbrow + " " + mweb, .F. )
   **************************
   * mYbrow é o browser que o cliente escolheu para abrir, chrome, firefox, opera, IE, etc
   **************************
   EXIT

END

**********************************
FUNCTION MyRun( cComando, lTip )
**********************************
LOCAL oShell, RET:=0
oShell := win_oleCreateObject( "WScript.Shell" )
IF lTip
 RET    := oShell:Run( "%comspec% /c " + cComando, 0, .T. )
ELSE
 oShell:Exec( cComando )
END
oShell := NIL
RETURN IIF( RET = 0, .T., .F. )

Alguém pode me dar uma luz de como começar esta rotina, agradeçeria muito.
mixsistemas@gmail.com
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Pontos no google maps, um help

Mensagem por rochinha »

Amiguinhos,

rbonotto
Quando queremos que o google nos mostre o mapa através de coordenadas de gps devemos comandar:

https://www.google.com.br/maps/@-26.981 ... 634254,14z

No exemplo acima peguei os valores de longitude e latitude em seu exemplo referente a AV Atlantica. Veja que inverti os numeros encontrados e acrescentei uma medida de zoom para melhorar a visualização.

o 14z quer dizem um zoom nivel 14, tente outros numeros mas dependendo da região o mapa pode não ser visualizado.

Então voce precisará criar uma rotina idêntica a esta que apresentou e mudar sua variavel mweb para conter a sentença:

mweb := "https://www.google.com.br/maps/@" + val1 + "," + val2 + ",14z"
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Pontos no google maps, um help

Mensagem por rbonotto »

Obrigado Rochina, vou testar amanhã e posto o resultado.

Abração !
mixsistemas@gmail.com
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Pontos no google maps, um help

Mensagem por rbonotto »

Bom dia !

Testei colocando a linha:
https://www.google.com.br/maps/@-26.981 ... 634254,14z

Ele abre o googlemaps no local, mas não faz nenhuma marcação visual das coordenadas, será que está faltando algum comando apos a linha ?

Abraços,
mixsistemas@gmail.com
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Pontos no google maps, um help

Mensagem por rbonotto »

Alterei o link para:

ttps://www.google.com.br/maps/place//var1,var,14z e funcionou mostrando o pino de localização, mas
não consigo inserir mais do que uma coordenada.

Alguém teria alguma sugestão ?
mixsistemas@gmail.com
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Pontos no google maps, um help

Mensagem por alxsts »

Olá!

O que você está fazendo é exibir um ponto no mapa. O que você precisa é traçar e exibir uma rota entre pontos. Isto é conhecido como Directions na API do Google Maps. Veja se isto ajuda: The Google Maps Directions API
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Pontos no google maps, um help

Mensagem por Toledo »

Amigos, não seria assim:

https://www.google.com.br/maps/dir/-26. ... 3425400,9z

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Pontos no google maps, um help

Mensagem por rbonotto »

Boas pessoal.

Alxsts, o cliente precisa mesmo é só dos pontos, sem rota.

Estes pontos representam a posição de cada veículo de entrega dele, e a outra é a posição do cliente; desta forma ele visualmete
verá o veículo mais próximo do cliente.

O .txt vem de um em um minuto diretamente para uma pasta no computador dele.

Pequei esta duas coordenadas e estou tentando colocar os dois pinos em uma tela só.

https://www.google.com.br/maps/place//@ ... 634254,14z
https://www.google.com.br/maps/place//@ ... 386589,14z
mixsistemas@gmail.com
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Pontos no google maps, um help

Mensagem por rbonotto »

Talvez uma luzinha:

Documentação :

Código: Selecionar todos

https://developers.google.com/maps/documentation/static-maps/intro#URL_Parameters
Tem este sample:

Código: Selecionar todos

https://maps.googleapis.com/maps/api/st ... pe=roadmap
&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318
&markers=color:red%7Clabel:C%7C40.718217,-73.998284
&key=YOUR_API_KEY
Não entendi o &key=YOUR_API_KEY

Cheguei até aqui, centralizando em cima de Curitiba, mas os pinos não apareceram:

Código: Selecionar todos

https://maps.googleapis.com/maps/api/staticmap?center=curitiba&size=1280x1024&maptype=roadmap&markers=color:blue%7Clabel:-25.377564,%20-49.227220
mixsistemas@gmail.com
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Pontos no google maps, um help

Mensagem por rochinha »

Amiguinhos,

rbonotto
Para obter sua api key você precisa ter uma conta gmail para facilitar o acesso a ferramentas e serviços do google. Serviços (quase)gratuítos google

Sem o uso de uma api key depois de algum tempo não serão atualizadas as buscas.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Pontos no google maps, um help

Mensagem por alxsts »

Olá!

Esta chave (API KEy) dá direito a até 2500 consultas diárias.

Acho que este exemplo faz o que você quer mas, foi escrito em Javascript. Dá para ter uma ideia do que fazer. Generating a Google Map with multiple markers and info windows 8/2/13. Deve haver outros exemplos mas não achei nada em xBase...
[]´s
Alexandre Santos (AlxSts)
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Pontos no google maps, um help

Mensagem por rbonotto »

O interessante é que no sample da página de documentação ele funciona perfeitamente, mesmo sem a api key e diretamente
na linha do browser.
Mas ao mudar as coordenadas os pinos de localização desaparecem.... :%
mixsistemas@gmail.com
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

Pontos no google maps, um help

Mensagem por rbonotto »

Done !...pelo menos a primeira parte....

zoom, cor e label:

Código: Selecionar todos

https://maps.googleapis.com/maps/api/staticmap?center=curitiba,&zoom=10&size=1280x1024&maptype=roadmap&markers=color:blue%7Clabel:S%7C-25.377564,-49.227220
O pinos por segundo,terceiro,quarto,etc é só acrescentar no fim &markers=color:blue%7Clabel:S%7C-xx.xxxxxx,-xx.xxxxxx

Coloquei o conteudo do txt em um .dbf:

Código: Selecionar todos

SELE 0
USE INTEGRA EXCLUSIVE ALIAS integra
ZAP
APPEND FROM '<nome do arquivo>' SDF
Como fazer para dentro da pasta ver qual foi o último .txt mandado; dentro da pasta (que é zerada todo dia as 23:59 ) acumula um
número bem grande destes arquivos.

Tentei desta forma, mas não sei se seria confiável:

Código: Selecionar todos

cFile  :=  FileSeek("*.TXT")
DO WHILE .NOT. EMPTY(cFile)
   ? cFile, FileTime()              // File name and clock time
   mYfile := cFile
   cFile  := FileSeek()             // Search for next entry
ENDDO
Este comando sempre começa do arquivo mais antigo para o mais novo ?

Abraços,
mixsistemas@gmail.com
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Pontos no google maps, um help

Mensagem por rochinha »

Amiguinhos,

rbonotto
Procure informações sobre a função Directory(), ela retorna um vetor contendo colunas onde figuram nome do arquivo, tamanho, data, etc. Com o vetor em mãos você pode ordenar pela coluna que quiser e obter os nomes na ordem que desejar.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
aedurocha
Usuário Nível 1
Usuário Nível 1
Mensagens: 22
Registrado em: 31 Ago 2011 20:28
Localização: Iguatu-Ceara

Pontos no google maps, um help

Mensagem por aedurocha »

Bom dia

Estou incluindo em meu sistema um acompanhamento de entregas por GPS para que meu cliente possa saber o tempo de cada entrega e o tempo medio de todas as entregas.
Estou precisando exatamente mostra um mapa com cinco veiculos disponiveis na cidade para entrega e saber qual está mais próximo do cliente que faz um pedido.
A duvida e a seguinte:

Como foi postado acima para localizar um ponto abro o seguinte endereço
https://maps.googleapis.com/maps/api/st ... -49.227220
para colocar os demais pontos tenho que colocar "&markers=color:blue%7Clabel:S%7C-25.377564,-49.227220" todos estes dados para cada ponto ou somente as coordenadas (-25.377564,-49.227220) e quais os separadores (, - / )
Se poderem me ajudar fico muito grato
Eduardo Rocha
Responder