Commit 67ddb62b8f8deb57c1aeeb61ddbb1d3513f8d78b
1 parent
b7a38ce3
Exists in
master
and in
7 other branches
--no commit message
Showing
6 changed files
with
86 additions
and
1 deletions
Show diff stats
classesjs/classe_barradebotoes.js
| ... | ... | @@ -1081,12 +1081,14 @@ i3GEO.barraDeBotoes = { |
| 1081 | 1081 | 'ponto':true, |
| 1082 | 1082 | 'poligono':true, |
| 1083 | 1083 | 'edita':true, |
| 1084 | + 'selecao':true, | |
| 1084 | 1085 | 'apaga':true, |
| 1085 | 1086 | 'procura':false, |
| 1086 | 1087 | 'propriedades':true, |
| 1087 | 1088 | 'salva':true, |
| 1088 | 1089 | 'ajuda':true, |
| 1089 | - 'fecha':true | |
| 1090 | + 'fecha':true, | |
| 1091 | + 'uniao':true | |
| 1090 | 1092 | }; |
| 1091 | 1093 | i3GEO.editorOL.layergrafico = new OpenLayers.Layer.Vector("Edição",{displayInLayerSwitcher:false,visibility:true}); |
| 1092 | 1094 | i3GEO.editorOL.mapa.addLayers([i3GEO.editorOL.layergrafico]); | ... | ... |
mashups/openlayers.css
| ... | ... | @@ -112,6 +112,12 @@ background-position:-522px 0; |
| 112 | 112 | .olControlEditingToolbar1 .propriedadesItemActive { |
| 113 | 113 | background-position:-522px -28px; |
| 114 | 114 | } |
| 115 | +.olControlEditingToolbar1 .uniaoItemInactive { | |
| 116 | + background-position:-551px 0; | |
| 117 | +} | |
| 118 | +.olControlEditingToolbar1 .uniaoItemActive { | |
| 119 | + background-position:-551px -28px; | |
| 120 | +} | |
| 115 | 121 | .olControlEditingToolbar1 { |
| 116 | 122 | width:600px; |
| 117 | 123 | float:right; | ... | ... |
mashups/openlayers.js.php
| ... | ... | @@ -52,8 +52,10 @@ i3GEO.editorOL = { |
| 52 | 52 | 'ponto':true, |
| 53 | 53 | 'poligono':true, |
| 54 | 54 | 'edita':true, |
| 55 | + 'uniao':true, | |
| 55 | 56 | 'apaga':true, |
| 56 | 57 | 'procura':true, |
| 58 | + 'selecao':true, | |
| 57 | 59 | 'salva':true, |
| 58 | 60 | 'ajuda':true, |
| 59 | 61 | 'propriedades':true, |
| ... | ... | @@ -617,6 +619,17 @@ i3GEO.editorOL = { |
| 617 | 619 | controles.push(button); |
| 618 | 620 | adiciona = true; |
| 619 | 621 | } |
| 622 | + if(botoes.uniao===true){ | |
| 623 | + button = new OpenLayers.Control.Button({ | |
| 624 | + displayClass: "uniao", | |
| 625 | + trigger: function(){ | |
| 626 | + i3GEO.editorOL.carregajts("i3GEO.editorOL.uniao()"); | |
| 627 | + }, | |
| 628 | + title: "Une geometrias" | |
| 629 | + }); | |
| 630 | + controles.push(button); | |
| 631 | + adiciona = true; | |
| 632 | + } | |
| 620 | 633 | //botao de seleção |
| 621 | 634 | if(botoes.selecao===true){ |
| 622 | 635 | button = new OpenLayers.Control.SelectFeature( |
| ... | ... | @@ -839,6 +852,63 @@ i3GEO.editorOL = { |
| 839 | 852 | if(temp.checked === true) |
| 840 | 853 | {i3GEOOLsplit.activate();} |
| 841 | 854 | }, |
| 855 | + uniao: function(){ | |
| 856 | + var geosel = i3GEO.editorOL.layergrafico.selectedFeatures, | |
| 857 | + polis,linhas,pontos,uniaopolis,uniaolinhas,uniaopontos; | |
| 858 | + if(geosel.length > 1){ | |
| 859 | + polis = i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.Polygon"); | |
| 860 | + linhas = i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.LineString"); | |
| 861 | + pontos = i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.Point"); | |
| 862 | + if(polis) | |
| 863 | + {uniaopolis = i3GEO.editorOL.uniaojts(polis);} | |
| 864 | + if(linhas) | |
| 865 | + {uniaolinhas = i3GEO.editorOL.uniaojts(linhas);} | |
| 866 | + if(pontos) | |
| 867 | + {uniaopontos = i3GEO.editorOL.uniaojts(pontos);} | |
| 868 | + if(uniaopolis) | |
| 869 | + {i3GEO.editorOL.layergrafico.addFeatures(uniaopolis);} | |
| 870 | + if(uniaolinhas) | |
| 871 | + {i3GEO.editorOL.layergrafico.addFeatures(uniaolinhas);} | |
| 872 | + if(uniaopontos) | |
| 873 | + {i3GEO.editorOL.layergrafico.addFeatures(uniaopontos);} | |
| 874 | + } | |
| 875 | + else | |
| 876 | + {alert("Selecione pelo menos dois elementos");} | |
| 877 | + }, | |
| 878 | + uniaojts: function(geoms){ | |
| 879 | + var n = geoms.length, | |
| 880 | + rwkt = new jsts.io.WKTReader(), | |
| 881 | + wwkt = new jsts.io.WKTWriter(), | |
| 882 | + fwkt = new OpenLayers.Format.WKT(), | |
| 883 | + wkt, | |
| 884 | + g, | |
| 885 | + i,uniao; | |
| 886 | + if(n > 1){ | |
| 887 | + wkt = fwkt.write(geoms[0]); | |
| 888 | + alert(wkt) | |
| 889 | + uniao = rwkt.read(wkt); | |
| 890 | + for(i=1;i <= n;i++){ | |
| 891 | + wkt = fwkt.write(geoms[i]); | |
| 892 | + g = readerwkt.read(wkt); | |
| 893 | + uniao = uniao.union(g); | |
| 894 | + } | |
| 895 | + uniao = wwkt.write(uniao); | |
| 896 | + return [fwkt.read(uniao)]; | |
| 897 | + } | |
| 898 | + else | |
| 899 | + {return false;} | |
| 900 | + }, | |
| 901 | + retornaGeometriasTipo: function(features,tipo){ | |
| 902 | + var n = features.length, | |
| 903 | + lista = [], | |
| 904 | + i,temp; | |
| 905 | + for(i=0;i<n;i++){ | |
| 906 | + temp = features[i].geometry; | |
| 907 | + if(temp.CLASS_NAME == tipo) | |
| 908 | + {lista.push(temp);} | |
| 909 | + } | |
| 910 | + return lista; | |
| 911 | + }, | |
| 842 | 912 | flashFeatures: function(features, index) { |
| 843 | 913 | if(!index) { |
| 844 | 914 | index = 0; |
| ... | ... | @@ -855,5 +925,8 @@ i3GEO.editorOL = { |
| 855 | 925 | if(index <= features.length) { |
| 856 | 926 | window.setTimeout(function() {i3GEO.editorOL.flashFeatures(features, index);}, 75); |
| 857 | 927 | } |
| 928 | + }, | |
| 929 | + carregajts: function(funcao){ | |
| 930 | + i3GEO.util.scriptTag(i3GEO.configura.locaplic+"/pacotes/jsts/jstsi3geo.js",funcao,"i3GEOjts",true); | |
| 858 | 931 | } |
| 859 | 932 | }; |
| 860 | 933 | \ No newline at end of file | ... | ... |
mashups/openlayers.php
| ... | ... | @@ -65,6 +65,8 @@ if(isset($botoes)){ |
| 65 | 65 | {$objBotoes[] = "'poligono':true";} |
| 66 | 66 | if(in_array("edita",$botoes)) |
| 67 | 67 | {$objBotoes[] = "'edita':true";} |
| 68 | + if(in_array("uniao",$botoes)) | |
| 69 | + {$objBotoes[] = "'uniao':true";} | |
| 68 | 70 | if(in_array("apaga",$botoes)) |
| 69 | 71 | {$objBotoes[] = "'apaga':true";} |
| 70 | 72 | if(in_array("procura",$botoes)) |
| ... | ... | @@ -172,6 +174,7 @@ Parâmetros: |
| 172 | 174 | linha |
| 173 | 175 | poligono |
| 174 | 176 | edita |
| 177 | + uniao | |
| 175 | 178 | apaga |
| 176 | 179 | captura |
| 177 | 180 | procura | ... | ... |
mashups/openlayers.png
ms_criamapa.php
| ... | ... | @@ -159,6 +159,7 @@ include_once ($caminho."classesphp/pega_variaveis.php"); |
| 159 | 159 | include_once ($caminho."classesphp/funcoes_gerais.php"); |
| 160 | 160 | if(!isset($dir_tmp)) |
| 161 | 161 | {include_once ($caminho."ms_configura.php");} |
| 162 | + | |
| 162 | 163 | if (!isset($debug)) |
| 163 | 164 | {error_reporting(0);$debug="nao";} |
| 164 | 165 | else | ... | ... |