API V3 - Google MAPS

Pessoal,

Alguém conseguiu implementar alguma aplicação com a API V3 do Google?

Isso muito me interessa também!

Estou estudando essa API, já fiz em websites, mas nunca implementei no SC. Sempre pego as documentações aqui: https://developers.google.com/maps/documentation/javascript/examples/map-geolocation?hl=pt-br

Na versão lançada hoje:

Novas Implementações

Atualização dos campos Google Maps para API v3, não precisa informar a API.

George,

Esta solução não serve pra mim… ele disponibilizou via GeoCode, mas Latitude e Longitude não está funcionando - e a diferença entre ambos é muito grande…

Estamos finalizando esta aplicação: http://www.sudema.pb.gov.br/index.php?option=com_content&view=article&id=78&Itemid=100013
O mapa é gerado usando a API do Google baseada nos dados cadastrados em banco de dados.
Tudo é gerado via Scriptcase.
[]s
Allan Medeiros

Allanmedeiros,

Não consegui ver o exemplo. Veja se você pode me ajudar com o meu exemplo abaixo

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

//////////////--------------------Aqui começa o script completo da API V3-------------------------------------------------------------
//Buscando as Coordenadas na tabela wpoints…

sc_lookup(data_coord,“SELECT wpoints_lat,wpoints_long FROM wpoints WHERE wpoints_id = [var_wpt]”);
$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;
}
}

// Desenhando no GoogleMaps API V3…

$_head = "

Simple Map html, body, #map-canvas { margin: 0; padding: 0; height: 100%; }

var map;
function initialize() {
var myLatlng = new google.maps.LatLng(".$latitude.",".$longitude.");
var mapOptions = {
zoom: 16,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById(‘map-canvas’),
mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: ‘Hello World!’
});
}

google.maps.event.addDomListener(window, ‘load’, initialize);

</script>
"; $escrever = ($_head); echo $escrever; ///////////////////---------------Aqui termina o script----------------------------------------------------

Para que tudo funcione bem é preciso que haja uma tabela denominada wpoints com os seguintes campos

wpoints_id
wpoints_lat
wpoints_long

Um exemplo de latidue é: S9 45.817
Um exemplo de longitude é: W36 39.296

Se você executar o código ele abre o GoogleMaps

Verá as imagens abaixo

Como vocês podem observar existe uma diferença grosseira entre o Mapa e o Satélite - [size=14pt]O correto é o Modo Satélite[/size]

Meu problema atual é alterar o código acima de modo que abra apenas o Google Earth e não o Google Maps.

Será que alguém pode me ajudar?

Forte Abraço

Jovito,
Na function initialize() altere o mapTypeId de google.maps.MapTypeId.ROADMAP para mapTypeId:google.maps.MapTypeId.SATELLITE (ou mapTypeId:google.maps.MapTypeId.HYBRID)
Deve funcionar.
[]s

Funfou legal…

Agora tá 10…

Obrigado cara… só não consegui ver o que você fez…

Bem, fica o exemplo pra quem quiser utilizar, tá legal, não precisa da Chave…

Vejam o resultado final dentro do meu sistema SC

Salam Aleikum

Tava fora do ar mas tá ok agora.

[]s

bom dia,

qual o tipo de conveção das cordenadas,

eu estou pegando do meu gps e tá dando erado.

Atenciosamente

Fabricico

fabriciod,

Formato das coordenadas => GG MM.MMM (Graus Minutos.Décimos_de_minutos)

Bom dia.
Isso Funciona no SC6?

Funcioando redondo,

100%, muito bom mesmo.

Agradeço jovito melo

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 = "

Simple Map html, body, #map-canvas { margin: 0; padding: 0; height: 100%; }
"; $escrever = ($_head); echo $escrever; ///////////////////---------------Aqui termina o script----------------------------------------------------

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

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

Minha pergunta é exatamente essa rsrs…

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 = "

linestring_example.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

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

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;

[b]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.[/b]

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.