Página 1 de 1

Pontos no google maps, um help

Enviado: 18 Mar 2016 17:52
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.

Pontos no google maps, um help

Enviado: 20 Mar 2016 16:27
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"

Pontos no google maps, um help

Enviado: 20 Mar 2016 19:26
por rbonotto
Obrigado Rochina, vou testar amanhã e posto o resultado.

Abração !

Pontos no google maps, um help

Enviado: 21 Mar 2016 10:03
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,

Pontos no google maps, um help

Enviado: 21 Mar 2016 13:47
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 ?

Pontos no google maps, um help

Enviado: 21 Mar 2016 14:20
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

Pontos no google maps, um help

Enviado: 21 Mar 2016 14:24
por Toledo
Amigos, não seria assim:

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

Abraços,

Pontos no google maps, um help

Enviado: 21 Mar 2016 16:26
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

Pontos no google maps, um help

Enviado: 21 Mar 2016 19:10
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

Pontos no google maps, um help

Enviado: 21 Mar 2016 21:50
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.

Pontos no google maps, um help

Enviado: 21 Mar 2016 22:14
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...

Pontos no google maps, um help

Enviado: 22 Mar 2016 00:22
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.... :%

Pontos no google maps, um help

Enviado: 23 Mar 2016 17:33
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,

Pontos no google maps, um help

Enviado: 23 Mar 2016 19:03
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.

Pontos no google maps, um help

Enviado: 30 Abr 2016 09:03
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