Autor Tópico: API V3 - Google MAPS  (Lida 8974 vezes)

fabriciod

  • Intermediário
  • ***
  • Mensagens: 103
  • sp 8.1
    • callcenter para Sac empresarial
    • Email
Re:API V3 - Google MAPS
« Responder #15 Online: Maio 25, 2013, 07:47:54 am »
bom dia,

como fazemos para traçar um rota de um cordenada a outra e aparecer o caminha no mapa?

de um ponto a outros pela as ruas


Atenciosamente

Fabricio Dantas

Fabricio Dantas
Etherline Callcenter 24 horas
www.omnesistema.com.br
sistema para provedor de internet
Serviço de callcenter Sac Empresarial.
skyper fabriciodantas
ffdbarbosace@gmail.com
grupo scriptcase zapzap 85 98558084

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:API V3 - Google MAPS
« Responder #16 Online: Maio 25, 2013, 08:48:03 am »
Minha pergunta é exatamente essa rsrs...

Jovito Boa tarde.
Me perdoe se a minha pergunta é tola.
Essa tabela wpoints 'e alimentada na mão tipo, a pessoa vai a campo com um gps e levanta as coordenadas?

Um abraço

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:API V3 - Google MAPS
« Responder #17 Online: Maio 25, 2013, 10:42:52 am »
Celso,

Se o seu trabalho exigir precisão e confiabilidade então uma pessoa terá que capturar as coordenadas do cliente in-logo.

Abaixo segue um script para traçar rotas. Esse script ainda não está na API V3 (está na API-V2 que só funcionará até NOVEMBRO-2013. Quando eu tiver um tempo disponível farei a conversão para a V3.


Este código pode ser colocado em uma aplicação tipo blank, basta copiar e colar - mais nada.

///////////////////---------------Aqui inicia o script----------------------------------------------------

// Buscando cor da rota...
sc_lookup(data_cor,"SELECT redes_cor FROM redes WHERE redes_id = [var_rede]");

$color = explode("#",{data_cor[0][0]});
$cor = '99'.$color[1];

// Gerando o mapa...
sc_lookup(data_coord,"SELECT redeswpoints_lat,redeswpoints_long FROM redeswpoints WHERE redes_id = [var_rede] ORDER BY redeswpoints_seq ASC");
$latitude = {data_coord[0][0]};
$longitude = {data_coord[0][1]};
$lat = explode(' ',TRIM($latitude));
$lat_sinal = substr($lat[0],0,1);
$lat_grau  = substr($lat[0],1,2);
$lat_min   = $lat[1];
$long = explode(' ',$longitude);
$long_sinal = substr($long[0],0,1);
$long_grau  = substr($long[0],1,2);
$long_min   = $long[1];
$latitude_1 = $lat_grau + ($lat_min /60);
$longitude_1 = $long_grau + ($long_min /60);
if($lat_sinal == 'S')
{
   $latitude_1 = $latitude_1 * -1;
}
if($long_sinal == 'W')
{
   $longitude_1 = $longitude_1 * -1;
}

$_coord = '';
foreach({data_coord} as $coordenadas)
{
   $latitude = $coordenadas[0];
   $longitude = $coordenadas[1];
   $lat = explode(' ',TRIM($latitude));
   $lat_sinal = substr($lat[0],0,1);
   $lat_grau  = substr($lat[0],1,2);
   $lat_min   = $lat[1];
   $long = explode(' ',$longitude);
   $long_sinal = substr($long[0],0,1);
   $long_grau  = substr($long[0],1,2);
   $long_min   = $long[1];
   $latitude = $lat_grau + ($lat_min /60);
   $longitude = $long_grau + ($long_min /60);
   if($lat_sinal == 'S')
   {
      $latitude = $latitude * -1;
   }
   if($long_sinal == 'W')
   {
      $longitude = $longitude * -1;
   }
   $_coord = $_coord.'         lineString.getCoordinates().pushLatLngAlt('.$latitude.', '.$longitude.',10)'."\n";;
}

$_head = "<html>
<head>
   <title>linestring_example.html</title>
   <script src='http://www.google.com/jsapi?key=ABQIAAAAnRQBs5ayZsDYXagoIkMIyxTLuv2TDvAkLZA_sSplPoTR1ZYVbBSFSNi9IO1a_R3shEIIIehzMPC40A'></script>
   <script type='text/javascript'>
      var ge;
      google.load('earth', '1');

      function init() {
         google.earth.createInstance('map3d', initCB, failureCB);
      }

      function initCB(instance) {
         ge = instance;
         ge.getWindow().setVisibility(true);
         ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW);

         var la = ge.createLookAt('');
         la.set(".$latitude_1.", ".$longitude_1.", 2000, ge.ALTITUDE_RELATIVE_TO_GROUND, ".$latitude_1.", ".$longitude_1.", 800);
         ge.getView().setAbstractView(la);

         // Create the placemark.
         var lineStringPlacemark = ge.createPlacemark('');

         // Create the LineString; set it to extend down to the ground
         // and set the altitude mode.
         var lineString = ge.createLineString('');
         lineStringPlacemark.setGeometry(lineString);
         lineString.setExtrude(true);
         lineString.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND)
         // ********* Adicionar as coordenadas aqui **************"."\n";
$_coord = $_head.$_coord."

         // ********* Adicionar as coordenadas ate aqui **********

         // Create a style and set width and color of line.
         lineStringPlacemark.setStyleSelector(ge.createStyle(''));
         var lineStyle = lineStringPlacemark.getStyleSelector().getLineStyle();
         lineStyle.setWidth(3);
         lineStyle.getColor().set('".$cor."');  // aabbggrr format

         // Add the feature to Earth.
         ge.getFeatures().appendChild(lineStringPlacemark);
      }

      function failureCB(errorCode) {
      }

      google.setOnLoadCallback(init);
   </script>

</head>
<body>

   <div id='map3d' style='height:800px; width:1000px;'></div>

</body>
</html>";

//         lineStyle.getColor().set('9900ffff');  // aabbggrr format


$escrever = ($_coord);
echo $escrever;

///////////////////---------------Aqui termina o script----------------------------------------------------

No SC




Detalhes:

a) Você precisa ter uma tabela de suas redes (rotas), cada rede/rota terá uma sequência p1 -> p2 -> p3 -> p54 -> p6 -> ....
b) Como você pode desenhar várias rotas/redes então eu coloquei uma cor para cada rede/rota


Tentem e retornem alguma coisa.

Salam Aleikum

Jovito Melo
Maceió - Alagoas

fabriciod

  • Intermediário
  • ***
  • Mensagens: 103
  • sp 8.1
    • callcenter para Sac empresarial
    • Email
Re:API V3 - Google MAPS
« Responder #18 Online: Maio 25, 2013, 12:52:46 pm »
bom dia,

qual e o formato da tabela da rede, e o da redeswpoint por não consequi aparecer nada.

Agradeço desde já.

Fabricio Dantas
 
Fabricio Dantas
Etherline Callcenter 24 horas
www.omnesistema.com.br
sistema para provedor de internet
Serviço de callcenter Sac Empresarial.
skyper fabriciodantas
ffdbarbosace@gmail.com
grupo scriptcase zapzap 85 98558084

jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:API V3 - Google MAPS
« Responder #19 Online: Maio 25, 2013, 07:15:08 pm »
Tabela REDES

CREATE TABLE  `redes` (
  `redes_id` int(11) NOT NULL AUTO_INCREMENT,
  `clientes_id` int(11) NOT NULL,
  `redestipo_id` int(11) NOT NULL,
  `redes_status` varchar(45) NOT NULL DEFAULT,
  `redes_descricao` varchar(45) NOT NULL,
  `redes_gatelat` varchar(45) NOT NULL,
  `redes_gatelong` varchar(45) NOT NULL,
  `redes_gateip` varchar(45) DEFAULT NULL,
  `redes_netaddress` varchar(45) DEFAULT NULL,
  `redes_netmask` varchar(45) DEFAULT NULL,
  `redes_compr` decimal(10,2) NOT NULL,
  `redes_origem` varchar(70) NOT NULL,
  `redes_ceporigem` varchar(15) NOT NULL,
  `redes_endorigem` varchar(200) NOT NULL,
  `redes_bairorigem` varchar(200) NOT NULL,
  `redes_munorigem` varchar(200) NOT NULL,
  `redes_uforigem` varchar(2) NOT NULL DEFAULT,
  `redes_destino` varchar(70) NOT NULL,
  `redes_cepdestino` varchar(15) DEFAULT NULL,
  `redes_enddestino` varchar(200) DEFAULT NULL,
  `redes_bairdestino` varchar(200) NOT NULL,
  `redes_mundestino` varchar(200) NOT NULL,
  `redes_ufdestino` varchar(2) NOT NULL DEFAULT,
  `redes_cor` varchar(45) NOT NULL DEFAULT '#FF0000',
  `redes_obs` longtext
  PRIMARY KEY (`redes_id`),
  KEY `FK_Redes_Tipos` (`redestipo_id`),
  KEY `FK_Redes_Clientes` (`clientes_id`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Tabelas REDESWPOINTS

CREATE TABLE  `redeswpoints` (
  `redeswpoints_id` int(11) NOT NULL AUTO_INCREMENT,
  `redes_id` int(11) NOT NULL,
  `redeswpoints_descricao` varchar(45) NOT NULL,
  `redeswpoints_seq` int(11) NOT NULL,
  `redeswpoints_lat` varchar(45) NOT NULL,
  `redeswpoints_long` varchar(45) NOT NULL,
  `redeswpoints_obs` longtext,
  `redeswpoints_dtcad` datetime NOT NULL,
  `usuarios_login` varchar(200) NOT NULL,
  `prop_reg` int(11) NOT NULL,
  PRIMARY KEY (`redeswpoints_id`),
  KEY `FK_wpoints_Redes` (`redes_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Atenção:

O CAMPO redeswpoints_seq DA TABELA redeswpoints É MUITO IMPORTANTE, UMA VEZ QUE UMA REDE/ROTA TEM QUE TER UMA SEQUÊNCIA CORRETA, ELA NECESSARIAMENTE PODE NÃO SEGUIR A SEQUENCIA DO id, MAS DEVERÁ OBRIGATORIAMENTE TER A SEQUENCIA DO CAMPO seq.


Essa observação deve-se ao fato de quando a rede/rota é projetada ela pode ser de uma forma, mas quando da sua execução pode haver a necessidade de se implementar outros pontos intermediários, o que alteraria a sequência dos pontos da rota/rede.

Forte Abraço.

Jovito Melo
Maceió - Alagoas

fabriciod

  • Intermediário
  • ***
  • Mensagens: 103
  • sp 8.1
    • callcenter para Sac empresarial
    • Email
Re:API V3 - Google MAPS
« Responder #20 Online: Maio 29, 2013, 10:51:44 pm »
bom noite,

desculpa abusar dos amigos,

tem como alem da rota ter um balão em cada coordenada cadastrado   no banco de dados redeswpoints. junto com a rota que foi traçada.

Agradeço a todos,

fabricio dantas
Fabricio Dantas
Etherline Callcenter 24 horas
www.omnesistema.com.br
sistema para provedor de internet
Serviço de callcenter Sac Empresarial.
skyper fabriciodantas
ffdbarbosace@gmail.com
grupo scriptcase zapzap 85 98558084

miguell

  • Iniciante
  • **
  • Mensagens: 61
    • Email
Re:API V3 - Google MAPS
« Responder #21 Online: Setembro 11, 2013, 07:25:22 pm »
Jovino boanoite,
  voce disse que nao precisa de chave?
estou entendendo que que nao preciso me cadastrar no google e gerar uma chave , isso deixa a aplicação livre de limites de consulta?

grato,

Miguel
Sérgio Miguel
Analista de Sistemas
MS WORKS INFORMÁTICA SC LTDA
(11) 2937-8938 - Comercial
(11) 96367-6916 - Celular
Rua Hermenegildo Orsi, 149 -Jardim Acácio - Guarulhos - SP - 7144-130

jovitomelo

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 916
    • Simples Assim
    • Email
Re:API V3 - Google MAPS
« Responder #22 Online: Setembro 11, 2013, 09:47:33 pm »
Miguel,

O que eu disse foi que a API V2 foi descontinuada e consequentemente na V3 não há necessidade de se gerar uma chave... porém se o número de consultas será alterado dependerá da vontade da dona: Google. Existe um termo de licença para esses usos (site do Google Maps) explica esse lance e praticamente informa que você não poderá fazer uso comercial dessas informações.... caso contrário terá que ter uma licença especial.

Forte abraço.
Jovito Melo
Maceió - Alagoas

janderson

  • Novato
  • *
  • Mensagens: 2
Re:API V3 - Google MAPS
« Responder #23 Online: Março 06, 2014, 02:16:23 am »
Pessoal,

Ajustei o script para vários pontos.... o anterior era para um ponto apenas.

Este código pode ser colocado em uma aplicação tipo blank, basta copiar e colar - mais nada.

///////////////////---------------Aqui inicia o script----------------------------------------------------
// Buscando as Coordenadas...
sc_lookup(data_coord,"SELECT wpoints_lat,wpoints_long,wpoints_descricao FROM wpoints ");
$latitude = {data_coord[0][0]};
$longitude = {data_coord[0][1]};
$lat = explode(' ',TRIM($latitude));
$lat_sinal = substr($lat[0],0,1);
$lat_grau  = substr($lat[0],1,2);
$lat_min   = $lat[1];
$long = explode(' ',$longitude);
$long_sinal = substr($long[0],0,1);
$long_grau  = substr($long[0],1,2);
$long_min   = $long[1];
$latitude_1 = $lat_grau + ($lat_min /60);
$longitude_1 = $long_grau + ($long_min /60);
if($lat_sinal == 'S')
{
   $latitude_1 = $latitude_1 * -1;
}
if($long_sinal == 'W')
{
   $longitude_1 = $longitude_1 * -1;
}

$novo_array = '';
$novo_wpt = '';
$nome_wpt = '';
foreach({data_coord} as $coordenadas)
{
   $latitude = $coordenadas[0];
   $longitude = $coordenadas[1];
   $wpt = 'P'.$coordenadas[2];
   $lat = explode(' ',TRIM($latitude));
   $lat_sinal = substr($lat[0],0,1);
   $lat_grau  = substr($lat[0],1,2);
   $lat_min   = $lat[1];
   $long = explode(' ',$longitude);
   $long_sinal = substr($long[0],0,1);
   $long_grau  = substr($long[0],1,2);
   $long_min   = $long[1];
   $latitude = $lat_grau + ($lat_min /60);
   $longitude = $long_grau + ($long_min /60);
   if($lat_sinal == 'S')
   {
      $latitude = $latitude * -1;
   }
   if($long_sinal == 'W')
   {
      $longitude = $longitude * -1;
   }
   $novo_array = $novo_array.'    var '.$wpt.' = new google.maps.LatLng('.$latitude.','.$longitude.');'."\n";
   $novo_wpt = $novo_wpt.$wpt.',';
   $nome_wpt = $nome_wpt."'".$wpt."',";
}
$novo_wpt = 'var locationArray = ['.$novo_wpt.'];'."\n";
$nome_wpt = 'var locationNameArray = ['.$nome_wpt.'];'."\n";
$_head = "
<!DOCTYPE html>
<html>
  <head>
    <title>Simple Map</title>
    <meta name='viewport' content='initial-scale=1.0, user-scalable=no'>
    <meta charset='utf-8'>
    <style>
      html, body, #map-canvas {
        margin: 0;
        padding: 0;
        height: 100%;
      }
    </style>
    <link href='/maps/documentation/javascript/examples/default.css' rel='stylesheet'>
    <script src='https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false'></script>
    <script>\n".$novo_array.$novo_wpt.$nome_wpt."
   var map;
   function initialize()
      {
         var myLatlng = new google.maps.LatLng(".$latitude.",".$longitude.");
         var mapOptions =
         {
            zoom: 16,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.SATELLITE
           };
         map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
         var coord;
           for (coord in locationArray)
         {
            new google.maps.Marker({
            position: locationArray["."coord],
            map: map,
            title: locationNameArray["."coord]
            });
         }
      }
   google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id='map-canvas'></div>
  </body>
</html>
";
$escrever = ($_head);
echo $escrever;
///////////////////---------------Aqui termina o script----------------------------------------------------



Ola jovitomelo, obrigado pela ajuda, estou usando a API, mas a minha aplicação esta mostrando apenas um ponto. A array novo_array esta conseguindo pegar todas as coordenadas no banco de dados, mas so esta jogando uma no mapa. O que fazer?

Celso R.

  • Expert
  • *****
  • Mensagens: 941
Re:API V3 - Google MAPS
« Responder #24 Online: Março 06, 2014, 05:00:06 pm »
Legal, obrigado vou tentar usar na minha app, estava tentando fazer e não obtive sucesso. Obrigado por compartilhar.
Celso R.
________________________________
SC - V 8

italo2303

  • Iniciante
  • **
  • Mensagens: 97
Re:API V3 - Google MAPS
« Responder #25 Online: Junho 20, 2014, 02:01:27 am »
jovitomelo , tem como mudar o ícone dos marcadores dependendo de um campo ou descrição do mesmo?
Como no meu banco de dados terá muitos registros, não ficará legal por exemplo 1.000 registros(pontos no mapa) tem uma possibilidade de apresentar por exemplo, os 100 últimos pontos cadastrado no banco? desde já agradeço.

anderson_ricardo

  • Novato
  • *
  • Mensagens: 1
    • Email
Re:API V3 - Google MAPS
« Responder #26 Online: Agosto 01, 2014, 10:47:45 am »
Bom dia,
 italo2303 este caso você resolve no select do banco buscando os 100 últimos registros !  janderson você conseguiu mostrar mais de um ponto no mapa, estou com este mesmo problema !
 Alguém tem alguma dica ?!

Lucimar Magalhães

  • Iniciante
  • **
  • Mensagens: 54
Re:API V3 - Google MAPS
« Responder #27 Online: Setembro 03, 2014, 11:04:54 am »
Pessoal,

Ajustei o script para vários pontos.... o anterior era para um ponto apenas.

Este código pode ser colocado em uma aplicação tipo blank, basta copiar e colar - mais nada.

///////////////////---------------Aqui inicia o script----------------------------------------------------
// Buscando as Coordenadas...
sc_lookup(data_coord,"SELECT wpoints_lat,wpoints_long,wpoints_descricao FROM wpoints ");
$latitude = {data_coord[0][0]};
$longitude = {data_coord[0][1]};
$lat = explode(' ',TRIM($latitude));
$lat_sinal = substr($lat[0],0,1);
$lat_grau  = substr($lat[0],1,2);
$lat_min   = $lat[1];
$long = explode(' ',$longitude);
$long_sinal = substr($long[0],0,1);
$long_grau  = substr($long[0],1,2);
$long_min   = $long[1];
$latitude_1 = $lat_grau + ($lat_min /60);
$longitude_1 = $long_grau + ($long_min /60);
if($lat_sinal == 'S')
{
   $latitude_1 = $latitude_1 * -1;
}
if($long_sinal == 'W')
{
   $longitude_1 = $longitude_1 * -1;
}

$novo_array = '';
$novo_wpt = '';
$nome_wpt = '';
foreach({data_coord} as $coordenadas)
{
   $latitude = $coordenadas[0];
   $longitude = $coordenadas[1];
   $wpt = 'P'.$coordenadas[2];
   $lat = explode(' ',TRIM($latitude));
   $lat_sinal = substr($lat[0],0,1);
   $lat_grau  = substr($lat[0],1,2);
   $lat_min   = $lat[1];
   $long = explode(' ',$longitude);
   $long_sinal = substr($long[0],0,1);
   $long_grau  = substr($long[0],1,2);
   $long_min   = $long[1];
   $latitude = $lat_grau + ($lat_min /60);
   $longitude = $long_grau + ($long_min /60);
   if($lat_sinal == 'S')
   {
      $latitude = $latitude * -1;
   }
   if($long_sinal == 'W')
   {
      $longitude = $longitude * -1;
   }
   $novo_array = $novo_array.'    var '.$wpt.' = new google.maps.LatLng('.$latitude.','.$longitude.');'."\n";
   $novo_wpt = $novo_wpt.$wpt.',';
   $nome_wpt = $nome_wpt."'".$wpt."',";
}
$novo_wpt = 'var locationArray = ['.$novo_wpt.'];'."\n";
$nome_wpt = 'var locationNameArray = ['.$nome_wpt.'];'."\n";
$_head = "
<!DOCTYPE html>
<html>
  <head>
    <title>Simple Map</title>
    <meta name='viewport' content='initial-scale=1.0, user-scalable=no'>
    <meta charset='utf-8'>
    <style>
      html, body, #map-canvas {
        margin: 0;
        padding: 0;
        height: 100%;
      }
    </style>
    <link href='/maps/documentation/javascript/examples/default.css' rel='stylesheet'>
    <script src='https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false'></script>
    <script>\n".$novo_array.$novo_wpt.$nome_wpt."
   var map;
   function initialize()
      {
         var myLatlng = new google.maps.LatLng(".$latitude.",".$longitude.");
         var mapOptions =
         {
            zoom: 16,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.SATELLITE
           };
         map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);
         var coord;
           for (coord in locationArray)
         {
            new google.maps.Marker({
            position: locationArray["."coord],
            map: map,
            title: locationNameArray["."coord]
            });
         }
      }
   google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id='map-canvas'></div>
  </body>
</html>
";
$escrever = ($_head);
echo $escrever;
///////////////////---------------Aqui termina o script----------------------------------------------------



Olá Janderson,

Como você fez p/ exibir um número grande de pontos?
Pois pra mim está dando um erro de OVER_QUERY_LIMIT.

Obrigado.

Celso R.

  • Expert
  • *****
  • Mensagens: 941
Re:API V3 - Google MAPS
« Responder #28 Online: Dezembro 01, 2014, 11:10:21 pm »
Olá pessoal.
Estou com uma base que está populada com as seguintes latitude e longitude:
lat= -45,454545
lon=-22,123232
Tem como converter para utilizar esse script?
Celso R.
________________________________
SC - V 8

joni morais

  • Avançado
  • ****
  • Mensagens: 250
    • Email
Re:API V3 - Google MAPS
« Responder #29 Online: Dezembro 02, 2014, 05:17:37 pm »
Considerando que vc se equivocou ao digitar as coordenadas, pois estas do jeito que estão está no meio do atlântico e que ao contrário cai numa estrada em MG, mais coerente! Ficaria  22,123232 graus SUL (latitude) e 45,454545 graus West (longitude). A conversão é simples: basta multiplicar a parte decimal por 60:
0,12323*60 = 7,39392 minutos. Proceda assim também para longitude.

Poderá usar uma planilha eletrônica para concatenar os resultados numa string juntamente com a letra, espaços e ponto (-22 7.39392), pois o código usa um campo string no banco para guardar as coordenadas.

Lembrando que uma coordenada negativa é latitude Sul e longitude West, e a virgula é substituida por ponto.

Logo ficará S22 7.39392 e W45 27.2727
Shared Host Linux;
10.1.13-MariaDB-cll-lve;
SC 8.1.051