From 98b612755b7e6b4b465447ca245a497990a5b93b Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Mon, 25 Mar 2013 22:32:07 +0000 Subject: [PATCH] Atualização da API do Google Maps na ferramenta "googlemaps" --- ferramentas/googlemaps1/dicionario.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/googlemaps1/endereco.php | 42 ++++++++++++++++++++++++++++++++++++++++++ ferramentas/googlemaps1/index.js | 498 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/googlemaps1/index.php | 11 +++++++++++ leiame.txt | 16 ++++++++++------ 5 files changed, 624 insertions(+), 6 deletions(-) create mode 100755 ferramentas/googlemaps1/dicionario.js create mode 100755 ferramentas/googlemaps1/endereco.php create mode 100644 ferramentas/googlemaps1/index.js create mode 100755 ferramentas/googlemaps1/index.php diff --git a/ferramentas/googlemaps1/dicionario.js b/ferramentas/googlemaps1/dicionario.js new file mode 100755 index 0000000..e2d5a2f --- /dev/null +++ b/ferramentas/googlemaps1/dicionario.js @@ -0,0 +1,63 @@ +//+$trad(1,i3GEOF.googlemaps.dicionario)+ +i3GEOF.googlemaps.dicionario = { +1: [{ +pt:"", +en:"", +es:"", +it:"" +}], +2: [{ +pt:"", +en:"", +es:"", +it:"" +}], +3: [{ +pt:"", +en:"", +es:"", +it:"" +}], +4: [{ +pt:"", +en:"", +es:"", +it:"" +}], +5: [{ +pt:"", +en:"", +es:"", +it:"" +}], +6: [{ +pt:"", +en:"", +es:"", +it:"" +}], +7: [{ +pt:"", +en:"", +es:"", +it:"" +}], +8: [{ +pt:"", +en:"", +es:"", +it:"" +}], +9: [{ +pt:"", +en:"", +es:"", +it:"" +}], +10: [{ +pt:"", +en:"", +es:"", +it:"" +}] +}; \ No newline at end of file diff --git a/ferramentas/googlemaps1/endereco.php b/ferramentas/googlemaps1/endereco.php new file mode 100755 index 0000000..c073283 --- /dev/null +++ b/ferramentas/googlemaps1/endereco.php @@ -0,0 +1,42 @@ + + + + + + + + + + +
+ + \ No newline at end of file diff --git a/ferramentas/googlemaps1/index.js b/ferramentas/googlemaps1/index.js new file mode 100644 index 0000000..252dc0f --- /dev/null +++ b/ferramentas/googlemaps1/index.js @@ -0,0 +1,498 @@ +/* +Title: Google Maps + +Abre um mapa, baseado na API do Google Maps, que permite navegar de forma integrada com o mapa principal do i3Geo. + +O código da API do Google Maps é armazenada em i3geo/ms_configura.php + +Veja: + + + +Arquivo: + +i3geo/ferramentas/googlemaps/index.php + +Licenca: + +GPL2 + +i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet + +Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil +Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com + +Este programa é software livre; você pode redistribuí-lo +e/ou modificá-lo sob os termos da Licença Pública Geral +GNU conforme publicada pela Free Software Foundation; + +Este programa é distribuído na expectativa de que seja útil, +porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita +de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. +Consulte a Licença Pública Geral do GNU para mais detalhes. +Você deve ter recebido uma cópia da Licença Pública Geral do +GNU junto com este programa; se não, escreva para a +Free Software Foundation, Inc., no endereço +59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. +*/ +/* +Function: inicializa + +Cria o mapa do Google Maps e adiciona os botões especiais do i3Geo. Define os eventos que disparam modificações no mapa +principal do i3Geo quando é feita a navegação. +*/ +i3GEO = window.parent.i3GEO; +$i = function(id){ + return window.parent.document.getElementById(id); +}; +box = window.parent.$i("boxpingoogle"); +if(i3GEO){ + i3GEO.util.criaBox("boxg"); + $i("boxg").style.display = "none"; +}; +function inicializa(){ + counterClick = 0; + var m = document.getElementById("mapa"); + if(i3GEO){ + i3GEO.util.criaPin("boxpingoogle",i3GEO.configura.locaplic+'/imagens/dot1red.gif',"5px","5px"); + box = $i("boxpingoogle"); + m.style.width = (i3GEO.parametros.w / 2.5) - 20 + "px"; + m.style.height = (i3GEO.parametros.h / 2.5) -20 + "px"; + i3geoOverlay = false; + if($i("boxg")){ + $i("boxg").style.zIndex = 0; + } + navm = false; // IE + navn = false; // netscape + var app = navigator.appName.substring(0,1); + if (app=='N') navn=true; else navm=true; + var pol = i3GEO.parametros.mapexten; + var ret = pol.split(" "); + var pt1 = (( (ret[0] * -1) - (ret[2] * -1) ) / 2) + ret[0] *1; + var pt2 = (((ret[1] - ret[3]) / 2)* -1) + ret[1] *1; + var pt = pt1+","+pt2; + try{ + var coordenadas = i3GEO.navega.dialogo.google.coordenadas; + } + catch(e){} + } + else{ + var pt1 = -54; + var pt2 = -12; + } + var centro = new google.maps.LatLng(pt2,pt1); + var nz = 8; + if(i3GEO && i3GEO.Interface.ATUAL === "openlayers"){ + nz = window.parent.i3geoOL.getZoom() + 2; + } + map = new google.maps.Map(m,{zoom:nz,center:centro,scaleControl:true,mapTypeControl:true,streetViewControl:true,zoomControl:true,mapTypeId:google.maps.MapTypeId.SATELLITE}); + if(coordenadas){ + adicionaMarcasMapa(coordenadas); + } + + google.maps.event.addListener(map, "moveend", function() { + ondegoogle(map); + }); + google.maps.event.addListener(map, "bounds_changed", function() { + if(i3GEO){ + ondegoogle(); + } + }); + google.maps.event.addListener(map, "mousemove", function(ponto) { + var teladms,tela,temp, + mapexten = i3GEO.parametros.mapexten; + teladms = i3GEO.calculo.dd2dms(ponto.x,ponto.y); + window.parent.objposicaocursor = { + ddx: ponto.x, + ddy: ponto.y, + dmsx: teladms[0], + dmsy: teladms[1], + imgx:0, + imgy:0, + telax: 0, + telay: 0 + }; + i3GEO.eventos.mousemoveMapa(); + if(i3GEO.Interface.ATUAL === "googleearth") + {return;} + temp = mapexten.split(" "); + if(ponto.x < temp[2] && ponto.y < temp[3]){ + xy = i3GEO.calculo.dd2tela(ponto.x,ponto.y,$i(i3GEO.Interface.IDMAPA),mapexten,i3GEO.parametros.pixelsize); + box.style.display = "block"; + box.style.width = "5px"; + box.style.height = "5px"; + box.style.top = (parseInt(xy[1],10) + 2.5) +"px"; + box.style.left = (parseInt(xy[0],10) - 2.5) +"px"; + } + }); + + /* + function botaoI3geo() {}; + botaoI3geo.prototype = new GControl(); + botaoI3geo.prototype.initialize = function(map) { + var container = document.createElement("div"); + var i3geo = document.createElement("div"); + this.setButtonStyle_(i3geo); + container.appendChild(i3geo); + i3geo.appendChild(document.createTextNode("i3Geo")); + google.maps.event.addDomListener(i3geo, "click", function() { + try + {map.removeOverlay(wmsmap);wmsmap = null;} + catch(x){ + wmsmap = new google.maps.GroundOverlay(criaWMS(), map.getBounds()); + map.addOverlay(wmsmap); + if(typeof(console) !== 'undefined'){console.error(x);} + } + }); + var rota = document.createElement("div"); + this.setButtonStyle_(rota); + container.appendChild(rota); + rota.appendChild(document.createTextNode("Rota")); + GEvent.addDomListener(rota, "click", function() { + ativaI3geoRota(); + }); + map.getContainer().appendChild(container); + return container; + }; + botaoI3geo.prototype.getDefaultPosition = function() { + return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(50, 50)); + }; + botaoI3geo.prototype.setButtonStyle_ = function(button) { + button.style.textDecoration = "none"; + button.style.color = "black"; + button.style.backgroundColor = "white"; + button.style.font = "small Arial"; + button.style.border = "1px solid black"; + button.style.padding = "1px"; + button.style.marginBottom = "3px"; + button.style.textAlign = "center"; + button.style.width = "3em"; + button.style.cursor = "pointer"; + }; + */ + if(i3GEO){ + if(i3GEO.parametros.mapfile){ + botaoI3geo(); + } + ondegoogle(map); + } + botaoRota(); + if(coordenadas) + {adicionaMarcasMapa(coordenadas);} +} +function botaoI3geo(){ + var controlDiv = document.createElement('div'); + controlDiv.index = 1; + controlDiv.style.padding = '5px'; + // Set CSS for the control border + var controlUI = document.createElement('div'); + controlUI.style.backgroundColor = 'white'; + controlUI.style.borderStyle = 'solid'; + controlUI.style.borderWidth = '2px'; + controlUI.style.cursor = 'pointer'; + controlUI.style.textAlign = 'center'; + controlUI.title = 'Adiciona o mapa ao Google'; + controlDiv.appendChild(controlUI); + var controlText = document.createElement('div'); + controlText.style.fontFamily = 'Arial,sans-serif'; + controlText.style.fontSize = '12px'; + controlText.style.paddingLeft = '4px'; + controlText.style.paddingRight = '4px'; + controlText.innerHTML = 'i3Geo'; + controlUI.appendChild(controlText); + google.maps.event.addDomListener(controlUI, 'click', function() { + wmsmap = new google.maps.GroundOverlay(criaWMS(), map.getBounds(),{map: map}); + }); + map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv); +} +function botaoRota(){ + var controlDiv = document.createElement('div'); + controlDiv.index = 1; + controlDiv.style.padding = '5px'; + // Set CSS for the control border + var controlUI = document.createElement('div'); + controlUI.style.backgroundColor = 'white'; + controlUI.style.borderStyle = 'solid'; + controlUI.style.borderWidth = '2px'; + controlUI.style.cursor = 'pointer'; + controlUI.style.textAlign = 'center'; + controlUI.title = ''; + controlDiv.appendChild(controlUI); + var controlText = document.createElement('div'); + controlText.style.fontFamily = 'Arial,sans-serif'; + controlText.style.fontSize = '12px'; + controlText.style.paddingLeft = '4px'; + controlText.style.paddingRight = '4px'; + controlText.innerHTML = 'Rota'; + controlUI.appendChild(controlText); + google.maps.event.addDomListener(controlUI, 'click', function() { + ativaI3geoRota(); + }); + map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv); +} +/* +Function: ondegoogle + +Mostra, no mapa principal, um retângulo indicando a extensão geográfica do mapa mostrado na janela do GM +*/ +function ondegoogle(){ + if(!i3GEO || !map.getBounds()){return;} + var bd = map.getBounds(), + so = bd.getSouthWest(), + ne = bd.getNorthEast(), + xyMin = i3GEO.calculo.dd2tela(so.lng(),so.lat(),$i(i3GEO.Interface.IDMAPA),i3GEO.parametros.mapexten,i3GEO.parametros.pixelsize), + xyMax = i3GEO.calculo.dd2tela(ne.lng(),ne.lat(),$i(i3GEO.Interface.IDMAPA),i3GEO.parametros.mapexten,i3GEO.parametros.pixelsize), + box = $i("boxg"), + w = xyMax[0]-xyMin[0], + h = xyMin[1]-xyMax[1]; + if(box){ + box.style.display = "none"; + if(w < i3GEO.parametros.w || h < i3GEO.parametros.h){ + box.style.width = w + "px"; + box.style.height = h+3 + "px"; + box.style.top = xyMax[1]+"px"; + box.style.left = xyMin[0]+"px"; + box.style.display="block"; + } + } +} +function moveMapa(bd){ + if(!i3GEO){return;} + nex = bd.minX+" "+bd.minY+" "+bd.maxX+" "+bd.maxY; + var p = i3GEO.locaplic+"/classesphp/mapa_controle.php?funcao=mudaext&ext="+nex; + var cp = new cpaint(); + //cp.set_debug(2) + cp.set_response_type("JSON"); + cp.call(p,"mudaExtensao",i3GEO.atualiza); +} +/* +Function: panTogoogle + +Desloca o mapa principal conforme a extensão geográfica do mapa do GM +*/ +function panTogoogle(){ + if(!i3GEO){return;} + var b = $i("boxg"); + b.style.display="block"; + var pol = i3GEO.parametros.mapexten; + var ret = pol.split(" "); + var pt1 = (( (ret[0] * -1) - (ret[2] * -1) ) / 2) + ret[0] *1; + var pt2 = (((ret[1] - ret[3]) / 2)* -1) + ret[1] *1; + map.panTo(new google.maps.LatLng(pt2,pt1)) +} +/* +Function: bbox + +Obtém os valores de extensão geográfica do GM e converte para uma string no formato aceito pelo i3Geo + +Return: + +{String} - xmin ymin xmax ymax +*/ +function bbox(){ + var bd = map.getBounds(); + var so = bd.getSouthWest(); + var ne = bd.getNorthEast(); + var bbox = so.lng()+" "+so.lat()+" "+ne.lng()+" "+ne.lat(); + return (bbox); +} +/* +Function: criaWMS + +Formata uma URL que transforma o mapa atual do i3Geo em um WMS, possibilitando sua inclusão como uma camada na janela GM. + +Return: + +[String} - URL WMS +*/ +function criaWMS(){ + var cgi = i3GEO.configura.locaplic+"/classesphp/parse_cgi.php?g_sid="+i3GEO.configura.sid; + var parametros = "&map_size="+parseInt(document.getElementById("mapa").style.width); + parametros += ","+parseInt(document.getElementById("mapa").style.height); + parametros += "&mapext="+bbox(); + parametros += "&map_imagecolor=0 0 0&map_transparent=on"; + return(cgi+parametros); +} +function criaTile(){ + var cgi = window.parent.i3GEO.util.protocolo()+"://"+window.location.host+window.parent.i3GEO.parametros.cgi+"?"; + var parametros = "map="+window.parent.i3GEO.parametros.mapfile; + parametros += "&map.scalebar=status+off&map_imagecolor=-1 -1 -1&map_transparent=on"; + parametros += '&mode=tile'; + parametros += '&tilemode=gmap'; + parametros += '&tile={X}+{Y}+{Z}'; + return(cgi+parametros); +} +function ativaI3geo() +{ + var i3GEOTile = new GTileLayer(null,0,18,{ + tileUrlTemplate:criaTile(), + isPng:true, + opacity:1 }); + i3GEOTileO = new GTileLayerOverlay(i3GEOTile); + map.addOverlay(i3GEOTileO); +} +/* +Function: ativaI3geoRota + +Inicia a função de criação de rotas, solicitando a indicação do primeiro ponto +*/ +function ativaI3geoRota(){ + rotaEvento = google.maps.event.addListener(map, "click", parametrosRota); + i3GEO.janela.tempoMsg("Clique o ponto de origem da rota"); + counterClick++; +} +/* +Function: parametrosRota + +Obtém os parâmetros para criação da rota, inclusive o ponto de destino +*/ +function parametrosRota(overlay){ + if(counterClick == 1){ + counterClick++; + i3GEO.janela.tempoMsg("Clique o ponto de destino da rota"); + pontoRota1 = overlay.latLng; + return; + } + if(counterClick == 2){ + pontoRota2 = overlay.latLng; + counterClick = 0; + google.maps.event.removeListener(rotaEvento); + constroiRota(); + //montaRota(); + } +} +/* +Function: constroiRota + +Cria a rota do ponto de origem ao ponto de destino +*/ +function constroiRota() +{ + var pt2 = function(response,status){ + if (status == google.maps.GeocoderStatus.OK) { + var place = response[0]; + var point = place.geometry.location; + //marker = new google.maps.Marker({point:point}); + endereco2 = place.formatted_address; + /* + var infowindow = new google.maps.InfoWindow({ + map: map, + position: point, + content: 'latlng:' + point.lat() + "," + point.lng() + '
Address:' + endereco2 + '
' + }); + */ + endereco2 = window.prompt("Endereco do final",endereco2) + if (endereco2!=null && endereco2!=""){ + //marker.setMap(map); + montaRota(); + } + } + else{ + i3GEO.janela.tempoMsg("Ocorreu um erro"); + } + }; + var pt1 = function(response,status){ + //map.clearOverlays(); + if (status == google.maps.GeocoderStatus.OK) { + var place = response[0]; + var point = place.geometry.location; + endereco1 = place.formatted_address; + /* + var infowindow = new google.maps.InfoWindow({ + map: map, + position: point, + content: 'latlng:' + point.lat() + "," + point.lng() + '
Address:' + endereco1 + '
' + }); + */ + endereco1 = window.prompt("Endereco do inicio",endereco1) + if (endereco1 != null && endereco1 != ""){ + //marker.setMap(map); + geocoder.geocode( + {'location':pontoRota2}, + pt2 + ); + } + } + else{ + i3GEO.janela.tempoMsg("Ocorreu um erro"); + } + }; + var geocoder = new google.maps.Geocoder(); + geocoder.geocode( + {'location':pontoRota1}, + pt1 + ); +} +/* +Function: montaRota + +Inclui o traçado da rota como uma nova camada no mapa principal +*/ +function montaRota(){ + if(!document.getElementById("descrota")){ + var descrota = document.createElement("div"); + descrota.id = "descrota"; + document.body.appendChild(descrota); + } + else{ + descrota = document.getElementById("descrota"); + descrota.innerHTML = ""; + } + var directions = new google.maps.DirectionsService(); + directions.route( + {origin: pontoRota1,destination: pontoRota2,'travelMode':google.maps.TravelMode.DRIVING}, + function(retorno, status) { + if (status == google.maps.GeocoderStatus.OK){ + var directionsDisplay = new google.maps.DirectionsRenderer(); + directionsDisplay.setPanel(descrota); + directionsDisplay.setMap(map); + directionsDisplay.setDirections(retorno); + + var p = retorno.routes[0].overview_path; + var nvertices = p.length; + pontos = []; + for(i=0;i + + + + + + + +
+ + diff --git a/leiame.txt b/leiame.txt index b890929..3d8a6bc 100644 --- a/leiame.txt +++ b/leiame.txt @@ -13,18 +13,22 @@ Se vc está fazendo um upgrade do i3geo, faça cópia dos diretórios temas, aplicma e dos arquivos ms_configura.php. Consulte o documento i3geo/guia_de_migracao.txt para verificar quais cuidados vc deve tomar nos upgrades -Altere a senha da variável $i3geomaster existente em ms_configura.php para desbloquear o i3geo. +--------- + +Mantenha-se sempre atualizado utilizando o SVN + +Isso permite que eventuais bugs sejam rapidamente corrigidos + +Veja como usar o SVN em: http://svn.softwarepublico.gov.br/trac/i3geo --------- -Se vc está instalando pela primeira vez, veja no site da comunidade i3geo no www.softwarepublico.gov.br -as instruções que ficam no item "documentacao". Para ter acesso ao portal, vc terá de fazer o cadastramento. +Altere a senha da variável $i3geomaster existente em ms_configura.php para desbloquear o i3geo. --------- -A partir da versão 3.9 do i3geo foi incluida uma página principal com endereços para -os aplicativos que vêm com o i3geo (não esqueça de dar uma olhada): -http://localhost/i3geo/principal.htm +Se vc está instalando pela primeira vez, veja no site da comunidade i3geo no www.softwarepublico.gov.br +as instruções que ficam no item "documentacao". Para ter acesso ao portal, vc terá de fazer o cadastramento. --------- -- libgit2 0.21.2