From ef7d1b108b69db61c3ae3c31e79da42f35f9215f Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Tue, 2 Oct 2007 20:58:29 +0000 Subject: [PATCH] Incluida função de localização do usuário por meio da identificação do IP. Essa opção pode ser habilitada ou não na interface do I3Geo utilizando-se um div específico. Veja a documentação em aplicmap/geral.htm --- aplicmap/geral.htm | 4 ++++ classesjs/funcoes.js | 29 +++++++++++++++++++++++++++++ classesjs/funcoes_compacto.js | 3 +++ classesjs/i3geo_tudo_compacto.js | 11 +++++++++-- classesjs/iniciamma.js | 38 +++++++++++++++++++++++++++++++++----- classesjs/iniciamma_compacto.js | 8 ++++++-- classesphp/funcoes_gerais.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ classesphp/mapa_controle.php | 21 +++++++++++++++++++++ classesphp/mapa_inicia.php | 10 +++++++++- imagens/world_map_saint_.png | Bin 0 -> 416 bytes imagens/world_map_saint_.svg | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 277 insertions(+), 10 deletions(-) create mode 100644 imagens/world_map_saint_.png create mode 100644 imagens/world_map_saint_.svg diff --git a/aplicmap/geral.htm b/aplicmap/geral.htm index 3ac9d1e..7dfca9a 100644 --- a/aplicmap/geral.htm +++ b/aplicmap/geral.htm @@ -80,6 +80,10 @@ arquivos não compactados, bastando substituir por i3geonaocompacto -->
Aguarde...
+ +
diff --git a/classesjs/funcoes.js b/classesjs/funcoes.js index 9c1feb2..35044b6 100644 --- a/classesjs/funcoes.js +++ b/classesjs/funcoes.js @@ -1611,6 +1611,35 @@ function zoomboxf (tipo) } } /* +Function: zoomIP + +Localiza no mapa o usuário baseado em seu número IP. +*/ +function zoomIP() +{ + var xxx = convdmsddf($i("xg").value,$i("xm").value,$i("xs").value); + var yyy = convdmsddf($i("yg").value,$i("ym").value,$i("ys").value); + var mostraIP = function(retorno) + { + if (retorno.data.latitude != null) + { + objaguarde.abre("ajaxredesenha","Aguarde..."); + var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=zoomponto&pin=pin&xy="+retorno.data.longitude+" "+retorno.data.latitude+"&g_sid="+g_sid; + var cp = new cpaint(); + //cp.set_debug(2) + cp.set_response_type("JSON"); + cp.call(p,"zoomPonto",ajaxredesenha); + } + else + {alert("Nao foi possivel identificar a localizacao.");} + } + var p = g_locaplic+"/classesphp/mapa_controle.php?funcao=localizaIP&g_sid="+g_sid; + var cp = new cpaint(); + //cp.set_debug(2) + cp.set_response_type("JSON"); + cp.call(p,"localizaIP",mostraIP); +} +/* Function: zoomPonto Localiza uma coordenada no mapa. diff --git a/classesjs/funcoes_compacto.js b/classesjs/funcoes_compacto.js index c1fab6f..aa92276 100644 --- a/classesjs/funcoes_compacto.js +++ b/classesjs/funcoes_compacto.js @@ -177,6 +177,9 @@ function zoomboxf(tipo){ var bx=$i("box1"); switch(tipo){ case "desloca": ppx=ob if((tipo !="limpa")&&(tipo !="inverte")){ objaguarde.abre("ajaxredesenha","Aguarde..."); var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=selecaobox&ext="+v+"&g_sid="+g_sid+"&tipo="+tipo+"&tema="+objmapa.temaAtivo; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"selecaobox",ajaxredesenha);}}} with(bx.style){visibility="hidden";width=0;height=0;} document.getElementById("imgh").style.display="block"; break;}} +function zoomIP(){ var xxx=convdmsddf($i("xg").value,$i("xm").value,$i("xs").value); var yyy=convdmsddf($i("yg").value,$i("ym").value,$i("ys").value); var mostraIP=function(retorno){ if(retorno.data.latitude !=null){ objaguarde.abre("ajaxredesenha","Aguarde..."); var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=zoomponto&pin=pin&xy="+retorno.data.longitude+" "+retorno.data.latitude+"&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"zoomPonto",ajaxredesenha);} + else{alert("Nao foi possivel identificar a localizacao.");}} + var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=localizaIP&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"localizaIP",mostraIP);} function zoomPonto(){ if($i("xg")){ var xxx=convdmsddf($i("xg").value,$i("xm").value,$i("xs").value); var yyy=convdmsddf($i("yg").value,$i("ym").value,$i("ys").value); objaguarde.abre("ajaxredesenha","Aguarde..."); var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=zoomponto&pin=pin&xy="+xxx+" "+yyy+"&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"zoomPonto",ajaxredesenha);}} function clicouRef(){ objposicaocursor.refx=objposicaocursor.refx-parseInt(YAHOO.janelaRef.xp.panel.element.style.left)-5; objposicaocursor.refy=objposicaocursor.refy-parseInt(YAHOO.janelaRef.xp.panel.element.style.top)-25; var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=pan&escala="+objmapa.scale+"&tipo=ref&x="+objposicaocursor.refx+"&y="+objposicaocursor.refy+"&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"pan",ajaxredesenha);} function movimentoRef(obj){ obj.onmousemove=function(exy){ if(navm){capturaposicao(obj);} diff --git a/classesjs/i3geo_tudo_compacto.js b/classesjs/i3geo_tudo_compacto.js index abd22cc..63ed1e5 100644 --- a/classesjs/i3geo_tudo_compacto.js +++ b/classesjs/i3geo_tudo_compacto.js @@ -937,6 +937,9 @@ function zoomboxf(tipo){ var bx=$i("box1"); switch(tipo){ case "desloca": ppx=ob if((tipo !="limpa")&&(tipo !="inverte")){ objaguarde.abre("ajaxredesenha","Aguarde..."); var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=selecaobox&ext="+v+"&g_sid="+g_sid+"&tipo="+tipo+"&tema="+objmapa.temaAtivo; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"selecaobox",ajaxredesenha);}}} with(bx.style){visibility="hidden";width=0;height=0;} document.getElementById("imgh").style.display="block"; break;}} +function zoomIP(){ var xxx=convdmsddf($i("xg").value,$i("xm").value,$i("xs").value); var yyy=convdmsddf($i("yg").value,$i("ym").value,$i("ys").value); var mostraIP=function(retorno){ if(retorno.data.latitude !=null){ objaguarde.abre("ajaxredesenha","Aguarde..."); var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=zoomponto&pin=pin&xy="+retorno.data.longitude+" "+retorno.data.latitude+"&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"zoomPonto",ajaxredesenha);} + else{alert("Nao foi possivel identificar a localizacao.");}} + var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=localizaIP&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"localizaIP",mostraIP);} function zoomPonto(){ if($i("xg")){ var xxx=convdmsddf($i("xg").value,$i("xm").value,$i("xs").value); var yyy=convdmsddf($i("yg").value,$i("ym").value,$i("ys").value); objaguarde.abre("ajaxredesenha","Aguarde..."); var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=zoomponto&pin=pin&xy="+xxx+" "+yyy+"&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"zoomPonto",ajaxredesenha);}} function clicouRef(){ objposicaocursor.refx=objposicaocursor.refx-parseInt(YAHOO.janelaRef.xp.panel.element.style.left)-5; objposicaocursor.refy=objposicaocursor.refy-parseInt(YAHOO.janelaRef.xp.panel.element.style.top)-25; var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=pan&escala="+objmapa.scale+"&tipo=ref&x="+objposicaocursor.refx+"&y="+objposicaocursor.refy+"&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"pan",ajaxredesenha);} function movimentoRef(obj){ obj.onmousemove=function(exy){ if(navm){capturaposicao(obj);} @@ -1262,7 +1265,7 @@ g_autoRedesenha=0;if(window.location.href.split("?")[1]){g_sid=window.location.h else{g_sid="";} imagemxi=0;imagemyi=0;atuaLeg="nao";g_mashuppar="";g_operacao="";g_nomepin="";g_arvoreClick="";g_arvoreClicks="";g_movedoca=0;g_movedocac=0;g_movedocar=0;g_tipoacao="zoomli";g_realca="nao";g_destaca="";g_lenteaberta="nao";g_hlpt="";g_panM="nao";quadrosfilme=new Array();g_quadrooriginal="";wd=0;navm=false;navn=false;g_r="nao";g_embedLegenda="nao";oMenuData="";g_3dmap="";g_opcoesTemas="sim";g_mostraRosa="sim";g_visual="default";g_janelaMen="sim";g_downloadbase="sim";g_conectargeorss="sim";g_uploadlocal="sim";g_conectarwms="sim";g_docaguias="nao";g_barraFerramentas1="sim";g_barraFerramentas2="sim";g_fatordezoom=0;g_diminuixM=20;g_diminuixN=25;g_diminuiyM=106;g_diminuiyN=103;g_mapaRefDisplay="block";g_funcaoTip="verificaTipDefault()";g_tempotip=4500;g_tipotip="completo";g_tipoimagem="nenhum";g_sistemas="";destacaTamanho=75;g_mensagempadrao="O I3Geo é software livre! Para download clique aqui";g_entorno="nao";g_guiaativa="guia1";var app=navigator.appName.substring(0,1);if(app=='N')navn=true;else navm=true;if(navm){ g_postpx=""; g_tipotop="pixelTop"; g_tipoleft="pixelLeft";} else{ g_postpx="px"; g_tipotop="top"; g_tipoleft="left";}window.onresize=function(){window.status="Após alterar o tamanho da janela, clique no botão de refresh do navegador";} -function cria(){var mashup=function(retorno){ g_sid=retorno.data; objmapa.inicializa();} +function cria(){ var mashup=function(retorno){ g_sid=retorno.data; objmapa.inicializa();} var cp=new cpaint(); cp.set_async(true); cp.set_response_type("JSON"); var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=criaMapa"; cp.call(p,"",mashup);} function Mapa(e,m){ objaguarde=new aguarde(); objposicaocursor=new posicaocursor(); objposicaomouse=new posicaomouse(); imgBranco=new Image(); imgBranco.src=g_locaplic+"/imagens/branco.gif"; var icache=new Array("foldermapa.gif","extent.gif","tic.png","maisvermelho.png","maisverde.png","maisamarelo.png","temas.png","x.gif","sobe.gif","desce.gif","quadro.png","quadro1.png","excluir.png"); for(i=0;icache.lenght;i++){ var temp=new Image(); temp.src=g_locaplic+"/imagens/"+icache[i];} var temp=new Image(); temp.src=g_locaplic+"/classesjs/jsobjects/jsUI-Treeview/plus.gif"; temp.src=g_locaplic+"/classesjs/jsobjects/jsUI-Treeview/minus.gif"; var diminuix=(navm)? g_diminuixM : g_diminuixN; var diminuiy=(navm)? g_diminuiyM : g_diminuiyN; if(e==undefined){ var menos=0; if($i("contemFerramentas")){menos=menos+parseInt($i("contemFerramentas").style.width);} @@ -1300,7 +1303,7 @@ function Mapa(e,m){ objaguarde=new aguarde(); objposicaocursor=new posicaocursor document.body.appendChild(novoel);} gerafilmef(10); if(g_barraFerramentas1=="sim"){initJanelaZoom(1);} if(g_barraFerramentas2=="sim"){initJanelaZoom(2);} - objmapa.atualizaListaTemas(temas); objmapa.atualizaReferencia(mapexten); objmapa.scale=parseInt(mapscale); objmapa.temas=temas; objmapa.cellsize=g_celula; objmapa.extent=mapexten; objmapa.extentTotal=mapexten; objmapa.criaCorpoMapa(); ajaxCorpoMapa(retorno); objmapa.criaEscalaGrafica(); objmapa.atualizaEscalaGrafica(); objmapa.ativaLocallizarXY("localizarxy"); objmapa.ativaBuscaRapida("buscaRapida"); objmapa.ativaListaPropriedades("listaPropriedades"); objmapa.ativaRealce("realca"); objmapa.ativaGoogle("google"); objmapa.ativaScielo("scielo"); objmapa.ativaConfluence("confluence"); objmapa.ativaZoomtot("zoomtot"); objmapa.ativaZoomli("zoomli"); objmapa.ativaPan("pan"); objmapa.ativaZoomiauto("zoomiauto"); objmapa.ativaZoomoauto("zoomoauto"); objmapa.ativaIdentifica("identifica"); objmapa.ativaLente("lentei"); objmapa.ativaExten("exten"); objmapa.ativaReferencia("referencia"); objmapa.ativaEscalanum("escala"); objmapa.ativaWiki("wiki"); objmapa.ativaReinicia("reinicia"); objmapa.ativaMede("mede"); objmapa.ativaInserexy("inserexy"); objmapa.ativaInsereGrafico("inseregrafico"); objmapa.ativaSelecao("selecao"); objmapa.ativaTextofid("textofid"); objmapa.ativa3D("v3d"); objmapa.ativaImpressao("imprimir"); objmapa.ativaVisual("visual"); ativaGuias(); if(($i("encolheFerramentas"))&&($i("contemFerramentas"))){ $i("encolheFerramentas").onclick=function(){docaguias();}} + objmapa.atualizaListaTemas(temas); objmapa.atualizaReferencia(mapexten); objmapa.scale=parseInt(mapscale); objmapa.temas=temas; objmapa.cellsize=g_celula; objmapa.extent=mapexten; objmapa.extentTotal=mapexten; objmapa.criaCorpoMapa(); ajaxCorpoMapa(retorno); objmapa.criaEscalaGrafica(); objmapa.atualizaEscalaGrafica(); objmapa.ativaLocallizarXY("localizarxy"); objmapa.ativaBuscaRapida("buscaRapida"); objmapa.ativaListaPropriedades("listaPropriedades"); objmapa.ativaRealce("realca"); objmapa.ativaGoogle("google"); objmapa.ativaScielo("scielo"); objmapa.ativaConfluence("confluence"); objmapa.ativaZoomtot("zoomtot"); objmapa.ativaZoomli("zoomli"); objmapa.ativaPan("pan"); objmapa.ativaZoomiauto("zoomiauto"); objmapa.ativaZoomoauto("zoomoauto"); objmapa.ativaIdentifica("identifica"); objmapa.ativaLente("lentei"); objmapa.ativaExten("exten"); objmapa.ativaReferencia("referencia"); objmapa.ativaEscalanum("escala"); objmapa.ativaWiki("wiki"); objmapa.ativaReinicia("reinicia"); objmapa.ativaMede("mede"); objmapa.ativaInserexy("inserexy"); objmapa.ativaInsereGrafico("inseregrafico"); objmapa.ativaSelecao("selecao"); objmapa.ativaTextofid("textofid"); objmapa.ativa3D("v3d"); objmapa.ativaImpressao("imprimir"); objmapa.ativaVisual("visual"); objmapa.ativaOndeEstou("ondeestou"); ativaGuias(); if(($i("encolheFerramentas"))&&($i("contemFerramentas"))){ $i("encolheFerramentas").onclick=function(){docaguias();}} calcposf(); g_leftinicial=imagemxi; if($i("corpoMapa")){ $i("img").style.width=objmapa.w+"px"; $i("img").style.height=objmapa.h+"px"; $i("corpoMapa").style.width=objmapa.w+"px"; $i("corpoMapa").style.height=objmapa.h+"px"; $i("corpoMapa").style.clip='rect('+0+" "+(objmapa.w)+" "+(objmapa.h)+" "+0+')';} var temp=0; if($i("contemFerramentas")){temp=temp+parseInt($i("contemFerramentas").style.width);} if($i("encolheFerramentas")){temp=temp+parseInt($i("encolheFerramentas").style.width);} @@ -1409,6 +1412,10 @@ function Mapa(e,m){ objaguarde=new aguarde(); objposicaocursor=new posicaocursor this.ativaImpressao=function(id){ if($i(id)){ $i(id).onclick=function imprimir(){wdocaf("320px","180px",g_locaplic+"/ferramentas/imprimir/index.htm","","","Imprimir");} $i(id).onmouseover=function(){mostradicasf(this,'Imprime o mapa','imprimir');} $i(id).onmouseout=function(){mostradicasf(this,'');}}} + this.ativaOndeEstou=function(id){ if($i(id)){ if(objmapa.geoip=="nao"){$i(id).style.display="none";} + else{ $i(id).onclick=function(){zoomIP();} + $i(id).onmouseover=function(){mostradicasf(this,'Localiza o IP do usuario no mapa','');} + $i(id).onmouseout=function(){mostradicasf(this,'');}}}} this.criaEscalaGrafica=function(){ if(($i("escalaGrafica"))&&(!$i("imagemEscalaGrafica"))){$i("escalaGrafica").innerHTML="";}} this.atualizaEscalaGrafica=function(){ if($i("escalaGrafica")){ var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=escalagrafica&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"retornaBarraEscala",ajaxEscalaGrafica);}} this.atualizaReferencia=function(mapexten){ if($i("mapaReferencia")&& objmapa.extent !=mapexten){ var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=referencia&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"retornaReferencia",ajaxReferencia);} diff --git a/classesjs/iniciamma.js b/classesjs/iniciamma.js index bfa3361..8c118db 100644 --- a/classesjs/iniciamma.js +++ b/classesjs/iniciamma.js @@ -501,11 +501,11 @@ window.onresize = function(){window.status = "Após alterar o tamanho da janela, function cria() { -var mashup = function (retorno) -{ - g_sid = retorno.data; - objmapa.inicializa(); -} + var mashup = function (retorno) + { + g_sid = retorno.data; + objmapa.inicializa(); + } var cp = new cpaint(); cp.set_async(true); cp.set_response_type("JSON"); @@ -966,6 +966,7 @@ function Mapa(e,m) objmapa.ativa3D("v3d"); objmapa.ativaImpressao("imprimir"); objmapa.ativaVisual("visual"); + objmapa.ativaOndeEstou("ondeestou"); ativaGuias(); //esconde guias if(($i("encolheFerramentas")) && ($i("contemFerramentas"))) @@ -1770,6 +1771,33 @@ function Mapa(e,m) } } /* + Function: ativaOndeEstou + + Ativa o botão de localização do usuário pelo IP. + + Essa opção só é ativada se a variável objmapa.geoip for igual a "sim" e se existir o div com id=ondeestou. + + O valor dessa variável é obtida na inicialização. + + Parameters: + + id - id do elemento que ativa a operação + */ + this.ativaOndeEstou = function(id) + { + if ($i(id)) + { + if (objmapa.geoip == "nao") + {$i(id).style.display="none";} + else + { + $i(id).onclick = function(){zoomIP();} + $i(id).onmouseover = function(){mostradicasf(this,'Localiza o IP do usuario no mapa','');} + $i(id).onmouseout = function(){mostradicasf(this,'');} + } + } + } + /* Function: criaEscalaGrafica Cria a escala gráfica como um lemento HTML se existir o id escalaGrafica diff --git a/classesjs/iniciamma_compacto.js b/classesjs/iniciamma_compacto.js index d9675fd..3b35491 100644 --- a/classesjs/iniciamma_compacto.js +++ b/classesjs/iniciamma_compacto.js @@ -2,7 +2,7 @@ g_autoRedesenha=0;if(window.location.href.split("?")[1]){g_sid=window.location.h else{g_sid="";} imagemxi=0;imagemyi=0;atuaLeg="nao";g_mashuppar="";g_operacao="";g_nomepin="";g_arvoreClick="";g_arvoreClicks="";g_movedoca=0;g_movedocac=0;g_movedocar=0;g_tipoacao="zoomli";g_realca="nao";g_destaca="";g_lenteaberta="nao";g_hlpt="";g_panM="nao";quadrosfilme=new Array();g_quadrooriginal="";wd=0;navm=false;navn=false;g_r="nao";g_embedLegenda="nao";oMenuData="";g_3dmap="";g_opcoesTemas="sim";g_mostraRosa="sim";g_visual="default";g_janelaMen="sim";g_downloadbase="sim";g_conectargeorss="sim";g_uploadlocal="sim";g_conectarwms="sim";g_docaguias="nao";g_barraFerramentas1="sim";g_barraFerramentas2="sim";g_fatordezoom=0;g_diminuixM=20;g_diminuixN=25;g_diminuiyM=106;g_diminuiyN=103;g_mapaRefDisplay="block";g_funcaoTip="verificaTipDefault()";g_tempotip=4500;g_tipotip="completo";g_tipoimagem="nenhum";g_sistemas="";destacaTamanho=75;g_mensagempadrao="O I3Geo é software livre! Para download clique aqui";g_entorno="nao";g_guiaativa="guia1";var app=navigator.appName.substring(0,1);if(app=='N')navn=true;else navm=true;if(navm){ g_postpx=""; g_tipotop="pixelTop"; g_tipoleft="pixelLeft";} else{ g_postpx="px"; g_tipotop="top"; g_tipoleft="left";}window.onresize=function(){window.status="Após alterar o tamanho da janela, clique no botão de refresh do navegador";} -function cria(){var mashup=function(retorno){ g_sid=retorno.data; objmapa.inicializa();} +function cria(){ var mashup=function(retorno){ g_sid=retorno.data; objmapa.inicializa();} var cp=new cpaint(); cp.set_async(true); cp.set_response_type("JSON"); var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=criaMapa"; cp.call(p,"",mashup);} function Mapa(e,m){ objaguarde=new aguarde(); objposicaocursor=new posicaocursor(); objposicaomouse=new posicaomouse(); imgBranco=new Image(); imgBranco.src=g_locaplic+"/imagens/branco.gif"; var icache=new Array("foldermapa.gif","extent.gif","tic.png","maisvermelho.png","maisverde.png","maisamarelo.png","temas.png","x.gif","sobe.gif","desce.gif","quadro.png","quadro1.png","excluir.png"); for(i=0;icache.lenght;i++){ var temp=new Image(); temp.src=g_locaplic+"/imagens/"+icache[i];} var temp=new Image(); temp.src=g_locaplic+"/classesjs/jsobjects/jsUI-Treeview/plus.gif"; temp.src=g_locaplic+"/classesjs/jsobjects/jsUI-Treeview/minus.gif"; var diminuix=(navm)? g_diminuixM : g_diminuixN; var diminuiy=(navm)? g_diminuiyM : g_diminuiyN; if(e==undefined){ var menos=0; if($i("contemFerramentas")){menos=menos+parseInt($i("contemFerramentas").style.width);} @@ -40,7 +40,7 @@ function Mapa(e,m){ objaguarde=new aguarde(); objposicaocursor=new posicaocursor document.body.appendChild(novoel);} gerafilmef(10); if(g_barraFerramentas1=="sim"){initJanelaZoom(1);} if(g_barraFerramentas2=="sim"){initJanelaZoom(2);} - objmapa.atualizaListaTemas(temas); objmapa.atualizaReferencia(mapexten); objmapa.scale=parseInt(mapscale); objmapa.temas=temas; objmapa.cellsize=g_celula; objmapa.extent=mapexten; objmapa.extentTotal=mapexten; objmapa.criaCorpoMapa(); ajaxCorpoMapa(retorno); objmapa.criaEscalaGrafica(); objmapa.atualizaEscalaGrafica(); objmapa.ativaLocallizarXY("localizarxy"); objmapa.ativaBuscaRapida("buscaRapida"); objmapa.ativaListaPropriedades("listaPropriedades"); objmapa.ativaRealce("realca"); objmapa.ativaGoogle("google"); objmapa.ativaScielo("scielo"); objmapa.ativaConfluence("confluence"); objmapa.ativaZoomtot("zoomtot"); objmapa.ativaZoomli("zoomli"); objmapa.ativaPan("pan"); objmapa.ativaZoomiauto("zoomiauto"); objmapa.ativaZoomoauto("zoomoauto"); objmapa.ativaIdentifica("identifica"); objmapa.ativaLente("lentei"); objmapa.ativaExten("exten"); objmapa.ativaReferencia("referencia"); objmapa.ativaEscalanum("escala"); objmapa.ativaWiki("wiki"); objmapa.ativaReinicia("reinicia"); objmapa.ativaMede("mede"); objmapa.ativaInserexy("inserexy"); objmapa.ativaInsereGrafico("inseregrafico"); objmapa.ativaSelecao("selecao"); objmapa.ativaTextofid("textofid"); objmapa.ativa3D("v3d"); objmapa.ativaImpressao("imprimir"); objmapa.ativaVisual("visual"); ativaGuias(); if(($i("encolheFerramentas"))&&($i("contemFerramentas"))){ $i("encolheFerramentas").onclick=function(){docaguias();}} + objmapa.atualizaListaTemas(temas); objmapa.atualizaReferencia(mapexten); objmapa.scale=parseInt(mapscale); objmapa.temas=temas; objmapa.cellsize=g_celula; objmapa.extent=mapexten; objmapa.extentTotal=mapexten; objmapa.criaCorpoMapa(); ajaxCorpoMapa(retorno); objmapa.criaEscalaGrafica(); objmapa.atualizaEscalaGrafica(); objmapa.ativaLocallizarXY("localizarxy"); objmapa.ativaBuscaRapida("buscaRapida"); objmapa.ativaListaPropriedades("listaPropriedades"); objmapa.ativaRealce("realca"); objmapa.ativaGoogle("google"); objmapa.ativaScielo("scielo"); objmapa.ativaConfluence("confluence"); objmapa.ativaZoomtot("zoomtot"); objmapa.ativaZoomli("zoomli"); objmapa.ativaPan("pan"); objmapa.ativaZoomiauto("zoomiauto"); objmapa.ativaZoomoauto("zoomoauto"); objmapa.ativaIdentifica("identifica"); objmapa.ativaLente("lentei"); objmapa.ativaExten("exten"); objmapa.ativaReferencia("referencia"); objmapa.ativaEscalanum("escala"); objmapa.ativaWiki("wiki"); objmapa.ativaReinicia("reinicia"); objmapa.ativaMede("mede"); objmapa.ativaInserexy("inserexy"); objmapa.ativaInsereGrafico("inseregrafico"); objmapa.ativaSelecao("selecao"); objmapa.ativaTextofid("textofid"); objmapa.ativa3D("v3d"); objmapa.ativaImpressao("imprimir"); objmapa.ativaVisual("visual"); objmapa.ativaOndeEstou("ondeestou"); ativaGuias(); if(($i("encolheFerramentas"))&&($i("contemFerramentas"))){ $i("encolheFerramentas").onclick=function(){docaguias();}} calcposf(); g_leftinicial=imagemxi; if($i("corpoMapa")){ $i("img").style.width=objmapa.w+"px"; $i("img").style.height=objmapa.h+"px"; $i("corpoMapa").style.width=objmapa.w+"px"; $i("corpoMapa").style.height=objmapa.h+"px"; $i("corpoMapa").style.clip='rect('+0+" "+(objmapa.w)+" "+(objmapa.h)+" "+0+')';} var temp=0; if($i("contemFerramentas")){temp=temp+parseInt($i("contemFerramentas").style.width);} if($i("encolheFerramentas")){temp=temp+parseInt($i("encolheFerramentas").style.width);} @@ -149,6 +149,10 @@ function Mapa(e,m){ objaguarde=new aguarde(); objposicaocursor=new posicaocursor this.ativaImpressao=function(id){ if($i(id)){ $i(id).onclick=function imprimir(){wdocaf("320px","180px",g_locaplic+"/ferramentas/imprimir/index.htm","","","Imprimir");} $i(id).onmouseover=function(){mostradicasf(this,'Imprime o mapa','imprimir');} $i(id).onmouseout=function(){mostradicasf(this,'');}}} + this.ativaOndeEstou=function(id){ if($i(id)){ if(objmapa.geoip=="nao"){$i(id).style.display="none";} + else{ $i(id).onclick=function(){zoomIP();} + $i(id).onmouseover=function(){mostradicasf(this,'Localiza o IP do usuario no mapa','');} + $i(id).onmouseout=function(){mostradicasf(this,'');}}}} this.criaEscalaGrafica=function(){ if(($i("escalaGrafica"))&&(!$i("imagemEscalaGrafica"))){$i("escalaGrafica").innerHTML="";}} this.atualizaEscalaGrafica=function(){ if($i("escalaGrafica")){ var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=escalagrafica&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"retornaBarraEscala",ajaxEscalaGrafica);}} this.atualizaReferencia=function(mapexten){ if($i("mapaReferencia")&& objmapa.extent !=mapexten){ var p=g_locaplic+"/classesphp/mapa_controle.php?funcao=referencia&g_sid="+g_sid; var cp=new cpaint(); cp.set_response_type("JSON"); cp.call(p,"retornaReferencia",ajaxReferencia);} diff --git a/classesphp/funcoes_gerais.php b/classesphp/funcoes_gerais.php index 9f02c84..082442c 100644 --- a/classesphp/funcoes_gerais.php +++ b/classesphp/funcoes_gerais.php @@ -1013,6 +1013,40 @@ function buscaRapida($servico,$palavra) Section: coordenadas */ /* +function: ip2geo + +Localiza a coordenada geográfica de um endereço IP. + +Essa função baseia-se no pacote geoIP, que deve estar instalado em pacotes/geoip. + +parameters: + +$ip - Número do IP. +*/ +function ip2geo($ip) +{ + //$ip="200.252.111.1"; + $resultado = array(); + if (file_exists("../pacotes/geoip/geoipcity.inc")) + { + require_once("../pacotes/geoip/geoipcity.inc"); + require_once("../pacotes/geoip/geoipregionvars.php"); + $gi = geoip_open("../pacotes/geoip/GeoLiteCity.dat",GEOIP_STANDARD); + $record = geoip_record_by_addr($gi,$ip); + $resultado["country_code"] = $record->country_code . " " . $record->country_code3 . " " . $record->country_name; + $resultado["region"] = $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region]; + $resultado["city"] = $record->city; + $resultado["postal_code"] = $record->postal_code; + $resultado["latitude"] = $record->latitude; + $resultado["longitude"] = $record->longitude; + $resultado["dma_code"] = $record->dma_code; + $resultado["area_code"] = $record->area_code; + $resultado["ip"] = $ip; + geoip_close($gi); + } + return($resultado); +} +/* function: xy2imagem Converte coordenadas geograficas em coordenadas de imagem e retorna um ponto. @@ -1425,4 +1459,17 @@ function pegaIPcliente() else $ip = "UNKNOWN"; return $ip; } +/* +function: pegaIPcliente2 + +Pega o IP do cliente sem REMOTE_ADDR +*/ +function pegaIPcliente2() +{ + $ip = "UNKNOWN"; + if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); + else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); + else $ip = "UNKNOWN"; + return $ip; +} ?> \ No newline at end of file diff --git a/classesphp/mapa_controle.php b/classesphp/mapa_controle.php index 66aa99b..689b825 100644 --- a/classesphp/mapa_controle.php +++ b/classesphp/mapa_controle.php @@ -1642,6 +1642,27 @@ Include: $cp->set_data(($m->mapa->width).",".($m->mapa->height).",".$m->gravaImagemCorpo()); break; /* +Property: localizaIP + +Localiza as coordenadas geográficas do usuário atual. + +Baseia-se na identificação do IP e no pacote geoip + +Include: + +*/ + case "localizaIP": + $ip = pegaIPcliente(); + $r = ip2geo($ip); + if($r["latitude"] == null) + { + $ip = pegaIPcliente2(); + $r = ip2geo($ip); + } + $cp->set_data($r); + break; + +/* Property: zoomponto Desloca o centro do mapa para um ponto específico. diff --git a/classesphp/mapa_inicia.php b/classesphp/mapa_inicia.php index 7a7c743..b33b178 100644 --- a/classesphp/mapa_inicia.php +++ b/classesphp/mapa_inicia.php @@ -178,7 +178,15 @@ function iniciaMapa() {$visual = implode(",",listaDiretorios($locaplic."/imagens/visual"));} $res .= ";objmapa.listavisual='".$visual."'"; //pega os usuários navegadores - $res .= ";objmapa.navegacaoDir='".$navegadoresLocais."';"; + $res .= ";objmapa.navegacaoDir='".$navegadoresLocais."'"; + // + //verifica se o pacote geoip está instalado ou não + // + $geoip = "nao"; + if (file_exists($locaplic."/pacotes/geoip")) + {$geoip = "sim";} + $res .= ";objmapa.geoip='".$geoip."';"; + if (function_exists("mb_convert_encoding")) {$res = mb_convert_encoding($res,"UTF-8","ISO-8859-1");} // diff --git a/imagens/world_map_saint_.png b/imagens/world_map_saint_.png new file mode 100644 index 0000000..b3aa5e4 Binary files /dev/null and b/imagens/world_map_saint_.png differ diff --git a/imagens/world_map_saint_.svg b/imagens/world_map_saint_.svg new file mode 100644 index 0000000..2ae0a8e --- /dev/null +++ b/imagens/world_map_saint_.svg @@ -0,0 +1,116 @@ + + + + + + + + world map + + + + map + mercator + world + + + + + Open Clip Art Library + + + + + saint + + + + + saint + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + -- libgit2 0.21.2