From 65744aed4b425e58cd65a56bf3433a453b34a475 Mon Sep 17 00:00:00 2001 From: Edmar Moretti Date: Sun, 25 Oct 2015 03:50:03 +0000 Subject: [PATCH] Adaptacoes para Mapserver 7 --- aplicmap/geral1debianv7.map | 314 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ aplicmap/geral1fedorav7.map | 314 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ aplicmap/geral1windowsv7.map | 308 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ aplicmap/ogcwsv7.map | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ aplicmap/simlinv7.map | 27 +++++++++++++++++++++++++++ aplicmap/simpolv7.map | 29 +++++++++++++++++++++++++++++ aplicmap/simptv7.map | 27 +++++++++++++++++++++++++++ classesphp/classe_legenda.php | 7 ++++++- classesphp/mapa_inicia.php | 2 +- ferramentas/editorgm/editorgm.js | 2056 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/editorgm/editorgm_compacto.js | 1 + ferramentas/editorol/editorol.js | 2383 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ferramentas/editorol/editorol_compacto.js | 1 + symbols/simboloslinv7.sym | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ symbols/simbolospolv7.sym | 357 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ symbols/simbolosptv7.sym | 575 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ symbols/simbolosv7.sym | 696 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ testamapfile.php | 1 + 18 files changed, 7408 insertions(+), 2 deletions(-) create mode 100755 aplicmap/geral1debianv7.map create mode 100755 aplicmap/geral1fedorav7.map create mode 100755 aplicmap/geral1windowsv7.map create mode 100755 aplicmap/ogcwsv7.map create mode 100755 aplicmap/simlinv7.map create mode 100755 aplicmap/simpolv7.map create mode 100755 aplicmap/simptv7.map create mode 100755 ferramentas/editorgm/editorgm.js create mode 100755 ferramentas/editorgm/editorgm_compacto.js create mode 100755 ferramentas/editorol/editorol.js create mode 100755 ferramentas/editorol/editorol_compacto.js create mode 100755 symbols/simboloslinv7.sym create mode 100755 symbols/simbolospolv7.sym create mode 100755 symbols/simbolosptv7.sym create mode 100755 symbols/simbolosv7.sym diff --git a/aplicmap/geral1debianv7.map b/aplicmap/geral1debianv7.map new file mode 100755 index 0000000..9418e0d --- /dev/null +++ b/aplicmap/geral1debianv7.map @@ -0,0 +1,314 @@ +#Este mapfile e utilizado pelo i3geo na instalacao em servidores linux +#Toda vez que o i3geo e iniciado, esse mapfile e considerado como o mapa basico. +#Se vc quer alterar a aparência do mapa inicial, edite esse arquivo para refletir +#o mapa desejado. +# +#Se vc quer adicionar temas, dê preferência por editar o arquivo menutemas/menutemas.xml +#assim, as camadas ficam disponíveis no menu de adicao de temas do i3geo. Nao se esqueca +#de criar o arquivo mapfile no diretorio i3geo/temas (veja a documentacao no wiki da +#comunidade i3geo no Portal do Software Publico Brasileiro. +# +#Existem varios metadados que podem ser incluidos na definicao de cada LAYER e que sao especificos do i3geo, +#Esses metadados possibilitam coisas como mostrar ou nao a legenda de um tema no mapa, +#mostrar ou nao o tema na ferramenta de identificacao, etc. +#A lista completa de metadados vc pode obter no wiki da comunidade +# +MAP + # + #edite os caminhos caso a aplicacao esteja instalada em um local diferente do default + # + FONTSET "/var/www/i3geo/symbols/fontes.txt" + SYMBOLSET "/var/www/i3geo/symbols/simbolosv6.sym" + SHAPEPATH "/var/www/geodados" + IMAGECOLOR 104 171 195 + MAXSIZE 4096 + # + #Por default, o i3geo utiliza o tipo de imagem configurado em png2 + #Esse tipo nao e adequado para imagens raster, mas o i3geo muda automaticamente + #para png1 quando um arquivo raster e adicionado ao mapa + # + IMAGETYPE AGG_Q + #Brasil + #EXTENT -76.5125927 -39.3925675209 -29.5851853 9.49014852081 + EXTENT -140 -60 140 60 + SIZE 480 500 + STATUS ON + UNITS DD + NAME "GERAL" + DEBUG OFF + #CONFIG "MS_ERRORFILE" "/tmp/ms_tmp/ms_error.txt" + # + #utilize o agg apenas com mapserver 5x + + OUTPUTFORMAT + NAME 'AGG_Q' + DRIVER AGG/PNG + IMAGEMODE RGB + FORMATOPTION "QUANTIZE_FORCE=ON" + FORMATOPTION "QUANTIZE_DITHER=OFF" + FORMATOPTION "QUANTIZE_COLORS=256" + FORMATOPTION "INTERLACE=OFF" + END + + #OUTPUTFORMAT + # NAME svg + # MIMETYPE "image/svg+xml" + # DRIVER cairo/svg + ##FORMATOPTION "COMPRESSED_OUTPUT=TRUE" + ##FORMATOPTION "FULL_RESOLUTION=TRUE" + #END + + OUTPUTFORMAT + NAME jpeg + DRIVER "AGG/JPEG" + MIMETYPE "image/jpeg" + IMAGEMODE RGB + EXTENSION jpg + FORMATOPTION "INTERLACE=OFF" + END + + OUTPUTFORMAT + NAME png1 + MIMETYPE image/png + DRIVER AGG/PNG + EXTENSION png + IMAGEMODE RGB + TRANSPARENT FALSE + FORMATOPTION "INTERLACE=OFF" + END + + OUTPUTFORMAT + NAME png2 + MIMETYPE image/png + DRIVER AGG/PNG + EXTENSION png + IMAGEMODE PC256 + TRANSPARENT TRUE + FORMATOPTION "INTERLACE=OFF" + END + + + PROJECTION + "+proj=longlat +ellps=GRS67 +no_defs" + END + LEGEND + IMAGECOLOR 255 255 255 + KEYSIZE 12 10 + KEYSPACING 5 5 + LABEL + SIZE 7 + FONT "verdana" + TYPE truetype + BUFFER 0 + COLOR 0 0 0 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 -2 + PARTIALS TRUE + END + POSITION LL + STATUS off + #edite o caminho se a aplicacao for movida de lugar + #TEMPLATE "/var/www/i3geo/aplicmap/legenda.htm" + END + QUERYMAP + #OUTLINECOLOR 255 0 0 + COLOR 0 255 255 + SIZE 480 500 + STATUS on + STYLE hilite + END + REFERENCE + COLOR -1 -1 -1 + EXTENT -75.5728 -37.4751 -30.525 7.57273 + #-79.8713331401 -41.7736536401 -26.2264448599 11.8712346401 + #edite o caminho se a aplicacao for movida de lugar + IMAGE "/var/www/i3geo/imagens/referencia1.png" + OUTLINECOLOR -1 -1 -1 + SIZE 150 150 + STATUS off + MARKER "ref" + MARKERSIZE 8 + MINBOXSIZE 8 + MAXBOXSIZE 145 + END + SCALEBAR + BACKGROUNDCOLOR 200 200 200 + COLOR 0 0 0 + INTERVALS 5 + LABEL + SIZE TINY + TYPE BITMAP + BUFFER 0 + COLOR 0 0 0 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 0 + PARTIALS TRUE + END + POSITION LR + SIZE 200 2 + STATUS embed + STYLE 0 + TRANSPARENT FALSE + UNITS KILOMETERS + END + WEB + #edite o caminho se a aplicacao for movida de lugar + IMAGEPATH "/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + TEMPLATE "" + END + LAYER + DATA "/var/www/i3geo/aplicmap/dados/mundo" + GROUP "mundo" + METADATA + "CLASSE" "SIM" #o simbolo sera mostrado na legenda + "ITENS" "FIPS_CNTRY,GMI_CNTRY,LONG_NAME,CNTRY_NAME" #itens que serao mostrados na opcao de identificacao + "ITENSDESC" "FIPS,GMI,Nome,Wikipedia" #descricao dos nomes dos itens + "ITENSLINK" ",,,http://pt.wikipedia.org/wiki/[CNTRY_NAME]" + "TEMA" "Países do mundo" #nome que sera mostrado na legenda + "TITULO" "Países do mundo" #nome alternativo que e mostrado nos combos para escolha do tema + "TIP" "FIPS_CNTRY,GMI_CNTRY,CNTRY_NAME" + "cache" "sim" + "itembuscarapida" "LONG_NAME" + END + NAME "mundo" + STATUS OFF + TEMPLATE "none.htm" + TYPE POLYGON + CLASS + NAME "" #vazio indica que nao sera incluido o nome ao lado do simbolo + STYLE + COLOR 230 230 230 + OUTLINECOLOR 255 255 255 + END + END + END + # + #para mostrar o mapa do Brasil, remova os comentarios + # + #LAYER + # DATA "/var/www/i3geo/aplicmap/dados/estados" + # METADATA + # "CLASSE" "SIM" + # "TEMA" "Brasil" + # "ESCALA" "250000" #escala utilizada nas marcas ao lado do tema na legenda + # "IDENTIFICA" "nao" + # "cache" "sim" + # "EXTENSAO" "-97.911949 -39.413578 -8.185829 9.511159" + # END + # NAME "estados" + # SIZEUNITS PIXELS + # STATUS DEFAULT + # TOLERANCE 0 + # TOLERANCEUNITS PIXELS + # TRANSPARENCY 100 + # TYPE POLYGON + # UNITS METERS + # CLASS + # NAME " " + # STYLE + # COLOR 232 220 201 + # MAXSIZE 100 + # MINSIZE 1 + # SIZE 1 + # SYMBOL 0 + # END + # END + #END + # + #para mostrar os limites estaduais do Brasil, remova os comentarios + # + #LAYER + # NAME estadosl # ok + # TYPE line + # STATUS DEFAULT + # DATA "/var/www/i3geo/aplicmap/dados/estados" + # TEMPLATE "estados.htm" + # METADATA + # ITENS "ESTADO" + # ITENSDESC "Estado" + # TEMA "Limite Estadual" + # ESCALA "250000" + # CLASSE "SIM" + # cache "sim" + # END + # CLASS + # NAME " " + # STYLE + # WIDTH 2 + # COLOR 255 255 0 + # OUTLINECOLOR -1 -1 -1 + # END + # STYLE + # COLOR 0 0 0 + # OUTLINECOLOR -1 -1 -1 + # END + # END # CLASS + #END # LAYER + + LAYER + METADATA + "TEMA" "NAO" + "ESCONDIDO" "SIM" + "cache" "nao" + END + NAME "copyright" + SIZEUNITS PIXELS + STATUS default + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TRANSFORM FALSE + TYPE POINT + UNITS METERS + CLASS + LABEL + SIZE TINY + TYPE BITMAP + BUFFER 0 + COLOR 50 50 50 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 0 + PARTIALS TRUE + POSITION CC + END + END + FEATURE + POINTS + 10 5 + END + TEXT "- i3Geo" + END + END + + LAYER + METADATA + "TEMA" "Rosa dos ventos" + "IDENTIFICA" "nao" + "TABELA" "nao" + "CLASSE" "NAO" + END + NAME "rosadosventos" + SIZEUNITS PIXELS + STATUS OFF + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TRANSFORM lr + TYPE POINT + UNITS pixels + CLASS + SYMBOL 'rosa200' + SIZE 90 + END + FEATURE + POINTS + -70 -70 + END + END + END +END diff --git a/aplicmap/geral1fedorav7.map b/aplicmap/geral1fedorav7.map new file mode 100755 index 0000000..1fc5f25 --- /dev/null +++ b/aplicmap/geral1fedorav7.map @@ -0,0 +1,314 @@ +#Este mapfile e utilizado pelo i3geo na instalacao em servidores linux +#Toda vez que o i3geo e iniciado, esse mapfile e considerado como o mapa basico. +#Se vc quer alterar a aparência do mapa inicial, edite esse arquivo para refletir +#o mapa desejado. +# +#Se vc quer adicionar temas, dê preferência por editar o arquivo menutemas/menutemas.xml +#assim, as camadas ficam disponíveis no menu de adicao de temas do i3geo. Nao se esqueca +#de criar o arquivo mapfile no diretorio i3geo/temas (veja a documentacao no wiki da +#comunidade i3geo no Portal do Software Publico Brasileiro. +# +#Existem varios metadados que podem ser incluidos na definicao de cada LAYER e que sao especificos do i3geo, +#Esses metadados possibilitam coisas como mostrar ou nao a legenda de um tema no mapa, +#mostrar ou nao o tema na ferramenta de identificacao, etc. +#A lista completa de metadados vc pode obter no wiki da comunidade +# +MAP + # + #edite os caminhos caso a aplicacao esteja instalada em um local diferente do default + # + FONTSET "/var/www/html/i3geo/symbols/fontes.txt" + SYMBOLSET "/var/www/html/i3geo/symbols/simbolosv6.sym" + SHAPEPATH "/var/www/html/geodados" + IMAGECOLOR 104 171 195 + MAXSIZE 4096 + # + #Por default, o i3geo utiliza o tipo de imagem configurado em png2 + #Esse tipo nao e adequado para imagens raster, mas o i3geo muda automaticamente + #para png1 quando um arquivo raster e adicionado ao mapa + # + IMAGETYPE AGG_Q + #Brasil + #EXTENT -76.5125927 -39.3925675209 -29.5851853 9.49014852081 + EXTENT -160 -70 160 70 + SIZE 480 500 + STATUS ON + UNITS DD + NAME "GERAL" + DEBUG OFF + #CONFIG "MS_ERRORFILE" "/tmp/ms_tmp/ms_error.txt" + # + #utilize o agg apenas com mapserver 5x + + OUTPUTFORMAT + NAME 'AGG_Q' + DRIVER AGG/PNG + IMAGEMODE RGB + FORMATOPTION "QUANTIZE_FORCE=ON" + FORMATOPTION "QUANTIZE_DITHER=OFF" + FORMATOPTION "QUANTIZE_COLORS=256" + FORMATOPTION "INTERLACE=OFF" + END + + #OUTPUTFORMAT + # NAME svg + # MIMETYPE "image/svg+xml" + # DRIVER cairo/svg + # #FORMATOPTION "COMPRESSED_OUTPUT=TRUE" + # #FORMATOPTION "FULL_RESOLUTION=TRUE" + #END + + OUTPUTFORMAT + NAME jpeg + DRIVER "AGG/JPEG" + MIMETYPE "image/jpeg" + IMAGEMODE RGB + EXTENSION jpg + FORMATOPTION "INTERLACE=OFF" + END + + OUTPUTFORMAT + NAME png1 + MIMETYPE image/png + DRIVER AGG/PNG + EXTENSION png + IMAGEMODE RGB + TRANSPARENT FALSE + FORMATOPTION "INTERLACE=OFF" + END + + OUTPUTFORMAT + NAME png2 + MIMETYPE image/png + DRIVER AGG/PNG + EXTENSION png + IMAGEMODE PC256 + TRANSPARENT TRUE + FORMATOPTION "INTERLACE=OFF" + END + + + PROJECTION + "+proj=longlat +ellps=GRS67 +no_defs" + END + LEGEND + IMAGECOLOR 255 255 255 + KEYSIZE 12 10 + KEYSPACING 5 5 + LABEL + SIZE 7 + FONT "verdana" + TYPE truetype + BUFFER 0 + COLOR 0 0 0 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 -2 + PARTIALS TRUE + END + POSITION LL + STATUS off + #edite o caminho se a aplicacao for movida de lugar + #TEMPLATE "/var/www/html/i3geo/aplicmap/legenda.htm" + END + QUERYMAP + #OUTLINECOLOR 255 0 0 + COLOR 0 255 255 + SIZE 480 500 + STATUS on + STYLE hilite + END + REFERENCE + COLOR -1 -1 -1 + EXTENT -75.5728 -37.4751 -30.525 7.57273 + #-79.8713331401 -41.7736536401 -26.2264448599 11.8712346401 + #edite o caminho se a aplicacao for movida de lugar + IMAGE "/var/www/html/i3geo/imagens/referencia1.png" + OUTLINECOLOR -1 -1 -1 + SIZE 150 150 + STATUS off + MARKER "ref" + MARKERSIZE 8 + MINBOXSIZE 8 + MAXBOXSIZE 145 + END + SCALEBAR + BACKGROUNDCOLOR 200 200 200 + COLOR 0 0 0 + INTERVALS 5 + LABEL + SIZE TINY + TYPE BITMAP + BUFFER 0 + COLOR 0 0 0 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 0 + PARTIALS TRUE + END + POSITION LR + SIZE 200 2 + STATUS embed + STYLE 1 + TRANSPARENT FALSE + UNITS KILOMETERS + END + WEB + #edite o caminho se a aplicacao for movida de lugar + IMAGEPATH "/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + TEMPLATE "" + END + LAYER + DATA "/var/www/html/i3geo/aplicmap/dados/mundo" + GROUP "mundo" + METADATA + "CLASSE" "SIM" #o simbolo sera mostrado na legenda + "ITENS" "FIPS_CNTRY,GMI_CNTRY,LONG_NAME,CNTRY_NAME" #itens que serao mostrados na opcao de identificacao + "ITENSDESC" "FIPS,GMI,Nome,Wikipedia" #descricao dos nomes dos itens + "ITENSLINK" ",,,http://pt.wikipedia.org/wiki/[CNTRY_NAME]" + "TEMA" "Países do mundo" #nome que sera mostrado na legenda + "TITULO" "Países do mundo" #nome alternativo que e mostrado nos combos para escolha do tema + "TIP" "FIPS_CNTRY,GMI_CNTRY,CNTRY_NAME" + "cache" "sim" + "itembuscarapida" "LONG_NAME" + END + NAME "mundo" + STATUS OFF + TEMPLATE "none.htm" + TYPE POLYGON + UNITS METERS + CLASS + NAME "" #vazio indica que nao sera incluido o nome ao lado do simbolo + STYLE + COLOR 230 230 230 + OUTLINECOLOR 255 255 255 + END + END + END + # + #para mostrar o mapa do Brasil, remova os comentarios + # + #LAYER + # DATA "/var/www/html/i3geo/aplicmap/dados/estados" + # METADATA + # "CLASSE" "SIM" + # "TEMA" "Brasil" + # "ESCALA" "250000" #escala utilizada nas marcas ao lado do tema na legenda + # "IDENTIFICA" "nao" + # "cache" "sim" + # "EXTENSAO" "-97.911949 -39.413578 -8.185829 9.511159" + # END + # NAME "estados" + # SIZEUNITS PIXELS + # STATUS DEFAULT + # TOLERANCE 0 + # TOLERANCEUNITS PIXELS + # TRANSPARENCY 100 + # TYPE POLYGON + # UNITS METERS + # CLASS + # NAME " " + # STYLE + # COLOR 232 220 201 + # MAXSIZE 100 + # MINSIZE 1 + # SIZE 1 + # SYMBOL 0 + # END + # END + #END + # + #para mostrar os limites estaduais do Brasil, remova os comentarios + # + #LAYER + # NAME estadosl # ok + # TYPE line + # STATUS DEFAULT + # DATA "/var/www/html/i3geo/aplicmap/dados/estados" + # TEMPLATE "estados.htm" + # METADATA + # ITENS "ESTADO" + # ITENSDESC "Estado" + # TEMA "Limite Estadual" + # ESCALA "250000" + # CLASSE "SIM" + # cache "sim" + # END + # CLASS + # NAME " " + # STYLE + # WIDTH 2 + # COLOR 255 255 0 + # OUTLINECOLOR -1 -1 -1 + # END + # STYLE + # COLOR 0 0 0 + # OUTLINECOLOR -1 -1 -1 + # END + # END # CLASS + #END # LAYER + + LAYER + METADATA + #"TEMA" "NAO" + "ESCONDIDO" "SIM" + "cache" "sim" + END + NAME "copyright" + SIZEUNITS PIXELS + STATUS default + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TRANSFORM FALSE + TYPE POINT + UNITS METERS + CLASS + LABEL + SIZE TINY + TYPE BITMAP + BUFFER 0 + COLOR 50 50 50 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 0 + PARTIALS TRUE + POSITION CC + END + END + FEATURE + POINTS + 10 5 + END + TEXT "- i3Geo" + END + END + LAYER + METADATA + "TEMA" "Rosa dos ventos" + "IDENTIFICA" "nao" + "TABELA" "nao" + "CLASSE" "NAO" + END + NAME "rosadosventos" + SIZEUNITS PIXELS + STATUS OFF + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TRANSFORM lr + TYPE POINT + UNITS pixels + CLASS + SYMBOL 'rosa200' + SIZE 90 + END + FEATURE + POINTS + -70 -70 + END + END + END +END diff --git a/aplicmap/geral1windowsv7.map b/aplicmap/geral1windowsv7.map new file mode 100755 index 0000000..65bb525 --- /dev/null +++ b/aplicmap/geral1windowsv7.map @@ -0,0 +1,308 @@ +#Este mapfile e utilizado pelo i3geo na instalacao em servidores linux +#Toda vez que o i3geo e iniciado, esse mapfile e considerado como o mapa basico. +#Se vc quer alterar a aparência do mapa inicial, edite esse arquivo para refletir +#o mapa desejado. +# +#Se vc quer adicionar temas, dê preferência por editar o arquivo menutemas/menutemas.xml +#assim, as camadas ficam disponíveis no menu de adicao de temas do i3geo. Nao se esqueca +#de criar o arquivo mapfile no diretorio i3geo/temas (veja a documentacao no wiki da +#comunidade i3geo no Portal do Software Publico Brasileiro. +# +#Existem varios metadados que podem ser incluidos na definicao de cada LAYER e que sao especificos do i3geo, +#Esses metadados possibilitam coisas como mostrar ou nao a legenda de um tema no mapa, +#mostrar ou nao o tema na ferramenta de identificacao, etc. +#A lista completa de metadados vc pode obter no wiki da comunidade +# +MAP + # + #edite os caminhos caso a aplicacao esteja instalada em um local diferente do default + # + FONTSET "c:\ms4w\apache\htdocs\i3geo\symbols\fontes.txt" + SYMBOLSET "c:\ms4w\apache\htdocs\i3geo\symbols\simbolosv6.sym" + DEBUG OFF + MAXSIZE 4096 + #DEBUG 5 + #CONFIG "MS_ERRORFILE" "c:\ms4w\tmp\ms_error.txt" + + SHAPEPATH "c:\ms4w\apache\htdocs\geodados" + IMAGECOLOR 104 171 195 + IMAGETYPE AGG_Q + #Brasil + #EXTENT -76.5125927 -39.3925675209 -29.5851853 9.49014852081 + EXTENT -140 -60 140 60 + SIZE 480 500 + STATUS ON + UNITS DD + NAME "GERAL" + + OUTPUTFORMAT + NAME 'AGG_Q' + DRIVER AGG/PNG + IMAGEMODE RGB + FORMATOPTION "QUANTIZE_FORCE=ON" + FORMATOPTION "QUANTIZE_DITHER=OFF" + FORMATOPTION "QUANTIZE_COLORS=256" + FORMATOPTION "INTERLACE=OFF" + END + + OUTPUTFORMAT + NAME svg + MIMETYPE "image/svg+xml" + DRIVER cairo/svg + IMAGEMODE RGB + #FORMATOPTION "COMPRESSED_OUTPUT=TRUE" + #FORMATOPTION "FULL_RESOLUTION=TRUE" + END + OUTPUTFORMAT + NAME jpeg + DRIVER "AGG/JPEG" + #MIMETYPE "image/jpeg" + IMAGEMODE RGB + EXTENSION jpg + FORMATOPTION "INTERLACE=OFF" + END + + OUTPUTFORMAT + NAME png1 + MIMETYPE image/png + DRIVER AGG/PNG + EXTENSION png + IMAGEMODE RGBA + TRANSPARENT FALSE + FORMATOPTION "INTERLACE=OFF" + END + + OUTPUTFORMAT + NAME png2 + MIMETYPE image/png + DRIVER AGG/PNG + EXTENSION png + IMAGEMODE PC256 + TRANSPARENT TRUE + FORMATOPTION "INTERLACE=OFF" + END + + PROJECTION + "+proj=longlat +ellps=GRS67 +no_defs" + END + LEGEND + IMAGECOLOR 255 255 255 + KEYSIZE 12 10 + KEYSPACING 5 5 + LABEL + SIZE 7 + FONT "verdana" + TYPE truetype + BUFFER 0 + COLOR 0 0 0 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 -2 + PARTIALS TRUE + END + POSITION LL + STATUS OFF + #edite o caminho se a aplicacao for movida de lugar + #TEMPLATE "c:\ms4w\apache\htdocs\i3geo/aplicmap/legenda.htm" + END + QUERYMAP + #OUTLINECOLOR 255 0 0 + COLOR 0 255 255 + SIZE 480 500 + STATUS on + STYLE hilite + END + REFERENCE + COLOR -1 -1 -1 + EXTENT -75.5728 -37.4751 -30.525 7.57273#-79.8713331401 -41.7736536401 -26.2264448599 11.8712346401 + #edite o caminho se a aplicacao for movida de lugar + IMAGE "c:/ms4w/apache/htdocs/i3geo/imagens/referencia1.png" + OUTLINECOLOR -1 -1 -1 + SIZE 150 150 + STATUS off + MARKER "ref" + MARKERSIZE 8 + MINBOXSIZE 8 + MAXBOXSIZE 145 + END + SCALEBAR + BACKGROUNDCOLOR 200 200 200 + COLOR 0 0 0 + INTERVALS 5 + LABEL + SIZE TINY + TYPE BITMAP + BUFFER 0 + COLOR 0 0 0 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 0 + PARTIALS TRUE + END + POSITION LR + SIZE 200 2 + STATUS embed + STYLE 1 + TRANSPARENT FALSE + UNITS KILOMETERS + END + WEB + #edite o caminho se a aplicacao for movida de lugar + IMAGEPATH "c:/ms4w/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + TEMPLATE "" + END + LAYER + DATA "c:\ms4w\apache\htdocs\i3geo/aplicmap/dados/mundo" + METADATA + "CLASSE" "SIM" #o simbolo sera mostrado na legenda + "ITENS" "FIPS_CNTRY,GMI_CNTRY,LONG_NAME,CNTRY_NAME" #itens que serao mostrados na opcao de identificacao + "ITENSDESC" "FIPS,GMI,Nome,Wikipedia" #descricao dos nomes dos itens + "ITENSLINK" ",,,http://pt.wikipedia.org/wiki/[CNTRY_NAME]" + "TEMA" "Países do mundo" #nome que sera mostrado na legenda + "TITULO" "Países do mundo" #nome alternativo que e mostrado nos combos para escolha do tema + "TIP" "FIPS_CNTRY,GMI_CNTRY,CNTRY_NAME" + #"ESCONDIDO" "sim" + "cache" "sim" + "itembuscarapida" "LONG_NAME" + END + NAME "mundo" + STATUS OFF + TEMPLATE "none.htm" + TYPE POLYGON + CLASS + NAME " " #vazio indica que nao sera incluido o nome ao lado do simbolo + STYLE + COLOR 230 230 230 + OUTLINECOLOR 255 255 255 + END + END + END + # + #para mostrar o mapa do Brasil, remova os comentarios + # + #LAYER + # DATA "c:\ms4w\apache\htdocs\i3geo/aplicmap/dados/estados" + # METADATA + # "CLASSE" "SIM" + # "TEMA" "Brasil" + # "ESCALA" "250000" #escala utilizada nas marcas ao lado do tema na legenda + # "IDENTIFICA" "nao" + # "cache" "sim" + # "EXTENSAO" "-97.911949 -39.413578 -8.185829 9.511159" + # END + # NAME "estados" + # SIZEUNITS PIXELS + # STATUS DEFAULT + # TOLERANCE 0 + # TOLERANCEUNITS PIXELS + # TRANSPARENCY 100 + # TYPE POLYGON + # UNITS METERS + # CLASS + # NAME " " + # STYLE + # COLOR 232 220 201 + # MAXSIZE 100 + # MINSIZE 1 + # SIZE 1 + # SYMBOL 0 + # END + # END + #END + # + #para mostrar os limites estaduais do Brasil, remova os comentarios + # + #LAYER + # NAME estadosl # ok + # TYPE line + # STATUS DEFAULT + # DATA "c:/ms4w/apache/htdocs/i3geo/aplicmap/dados/estados.shp" + # TEMPLATE "estados.htm" + # METADATA + # ITENS "ESTADO" + # ITENSDESC "Estado" + # TEMA "Limite Estadual" + # ESCALA "250000" + # CLASSE "SIM" + # cache "sim" + # END + # CLASS + # NAME " " + # STYLE + # WIDTH 2 + # COLOR 255 255 0 + # OUTLINECOLOR -1 -1 -1 + # END + # STYLE + # COLOR 0 0 0 + # OUTLINECOLOR -1 -1 -1 + # END + # END # CLASS + #END # LAYER + + LAYER + METADATA + #"TEMA" "NAO" + "ESCONDIDO" "SIM" + "cache" "sim" + END + NAME "copyright" + SIZEUNITS PIXELS + STATUS DEFAULT + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TRANSFORM FALSE + TYPE POINT + UNITS METERS + CLASS + LABEL + SIZE TINY + TYPE BITMAP + BUFFER 0 + COLOR 50 50 50 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 0 + PARTIALS TRUE + POSITION CC + END + END + FEATURE + POINTS + 10 5 + END + TEXT "- i3Geo" + END + END + LAYER + METADATA + "TEMA" "Rosa dos ventos" + "IDENTIFICA" "nao" + "TABELA" "nao" + "CLASSE" "NAO" + #"cache" "sim" + END + NAME "rosadosventos" + SIZEUNITS PIXELS + STATUS OFF + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TRANSFORM lr + TYPE POINT + UNITS pixels + CLASS + SYMBOL 'rosa200' + SIZE 90 + END + FEATURE + POINTS + -70 -70 + END + END + END + +END \ No newline at end of file diff --git a/aplicmap/ogcwsv7.map b/aplicmap/ogcwsv7.map new file mode 100755 index 0000000..3dc9838 --- /dev/null +++ b/aplicmap/ogcwsv7.map @@ -0,0 +1,149 @@ +MAP + EXTENT -76.512593 -36.948432 -29.585185 7.046013 + FONTSET "../symbols/fontes.txt" + SYMBOLSET "../symbols/simbolosv6.sym" + IMAGECOLOR 255 255 255 + IMAGETYPE png + MAXSIZE 10000 + SHAPEPATH "/opt/www/html/geodados" + SIZE 450 450 + STATUS ON + UNITS METERS + #CONFIG MS_NONSQUARE "YES" + #CONFIG MS_ERRORFILE "/ms4w/tmp/ms_error.txt" + NAME "i3geoogc" + DEBUG OFF + #DEBUG 5 + #CONFIG "MS_ERRORFILE" "/tmp/ms_tmp/ms_error.txt" + OUTPUTFORMAT + NAME 'png' + MIMETYPE "image/png" + DRIVER AGG/PNG + IMAGEMODE RGBA + FORMATOPTION "QUANTIZE_FORCE=ON" + FORMATOPTION "QUANTIZE_DITHER=OFF" + FORMATOPTION "QUANTIZE_COLORS=256" + FORMATOPTION "INTERLACE=OFF" + TRANSPARENT TRUE + END + OUTPUTFORMAT + NAME 'shape-zip' + DRIVER 'OGR/ESRI Shapefile' + IMAGEMODE FEATURE + END + OUTPUTFORMAT + NAME "csv" + DRIVER "OGR/CSV" + #MIMETYPE "text/csv" + FORMATOPTION "LCO:GEOMETRY=AS_WKT" + FORMATOPTION "STORAGE=memory" + #FORMATOPTION "FILENAME=result.csv" + END + OUTPUTFORMAT + NAME 'kml' + DRIVER 'OGR/KML' + MIMETYPE "application/vnd.google-earth.kml+xml" + #FORMATOPTION "STORAGE=memory" + IMAGEMODE FEATURE + END + OUTPUTFORMAT + NAME "geojson" + DRIVER "OGR/GEOJSON" + #MIMETYPE "application/json; subtype=geojson" + FORMATOPTION "STORAGE=memory" + FORMATOPTION "FORM=SIMPLE" + END + + PROJECTION + "+proj=longlat +ellps=GRS67 +no_defs" + END + LEGEND + IMAGECOLOR 255 255 255 + KEYSIZE 10 10 + KEYSPACING 5 5 + LABEL + ANGLE 0.000000 + ANTIALIAS TRUE + FONT "verdana" + MAXSIZE 256 + MINSIZE 4 + SIZE 10 + TYPE TRUETYPE + BUFFER 0 + COLOR 0 0 0 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 0 + PARTIALS FALSE + END + POSITION UL + STATUS ON + END + + QUERYMAP + COLOR 255 255 0 + SIZE -1 -1 + STATUS OFF + STYLE HILITE + END + + SCALEBAR + ALIGN CENTER + COLOR 0 0 0 + IMAGECOLOR 255 255 255 + INTERVALS 4 + LABEL + SIZE MEDIUM + TYPE BITMAP + BUFFER 0 + COLOR 0 0 0 + FORCE FALSE + MINDISTANCE -1 + MINFEATURESIZE -1 + OFFSET 0 0 + PARTIALS TRUE + END + POSITION LL + SIZE 200 3 + STATUS OFF + STYLE 0 + UNITS MILES + END + + WEB + IMAGEPATH "/tmp/ms_tmp/" + IMAGEURL "/ms_tmp/" + #nao coloque texto com acentuacao aqui + METADATA + "ows_country" "Brasil" + "ows_keywordlist" "i3Geo" + "ows_context_fid" "i3geo" + "ows_city" "Brasilia" + "ows_contactperson" "Web Master" + "ows_addresstype" "uri" + "ows_context_version" "1.1.1" + "wms_getcapabilities_version" "1.1.1" + "ows_abstract" "Web services gerados da base de dados do i3Geo. Para chamar um tema especificamente, veja o sistema de ajuda, digitando no navegador web ogc.php?ajuda=, para uma lista compacta de todos os servicos, digite ogc.php?lista=temas" + "ows_contactposition" "Administrador do sitio web" + "ows_stateorprovince" "DF" + "ows_contactorganization" "Coordenacao Geral de TI" + "ows_name" "i3geoogc" + "ows_accessconstraints" "vedado o uso comercial" + "ows_fees" "none" + "ows_contactelectronicmailaddress" "" + "ows_getcontext_enabled" "1" + "ows_namespace_uri" "http://www.omsug.ca/osgis2004" + "ows_address" "http://www.mma.gov.br" + "ows_postcode" "" + "ows_enable_request" "*" + "ows_sld_enabled" "true" + "wms_feature_info_mime_type" "application/json" + END + QUERYFORMAT text/html + LEGENDFORMAT text/html + BROWSEFORMAT text/html + TEMPLATE "none.htm" + END + +END diff --git a/aplicmap/simlinv7.map b/aplicmap/simlinv7.map new file mode 100755 index 0000000..a925013 --- /dev/null +++ b/aplicmap/simlinv7.map @@ -0,0 +1,27 @@ +MAP +SYMBOLSET ../symbols/simboloslinv6.sym +FONTSET "../symbols/fontes.txt" + LAYER + METADATA + END + NAME "linha" + SIZEUNITS PIXELS + STATUS OFF + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TYPE LINE + UNITS METERS + CLASS + NAME "" + METADATA + END + STYLE + COLOR 0 0 0 + MAXSIZE 500 + MINSIZE 1 + SIZE 5 + SYMBOL "linha" + END + END + END +END \ No newline at end of file diff --git a/aplicmap/simpolv7.map b/aplicmap/simpolv7.map new file mode 100755 index 0000000..b129641 --- /dev/null +++ b/aplicmap/simpolv7.map @@ -0,0 +1,29 @@ +MAP +SYMBOLSET ../symbols/simbolospolv6.sym +FONTSET "../symbols/fontes.txt" + DEBUG OFF + #DEBUG 5 + #CONFIG "MS_ERRORFILE" "/ms4w/tmp/ms_error.txt" +LAYER + METADATA + END + NAME "p0" + SIZEUNITS PIXELS + STATUS OFF + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TYPE POLYGON + UNITS METERS + CLASS + NAME "" + METADATA + END + STYLE + COLOR 0 0 0 + MAXSIZE 500 + MINSIZE 1 + SYMBOL "p0" + END + END + END +END \ No newline at end of file diff --git a/aplicmap/simptv7.map b/aplicmap/simptv7.map new file mode 100755 index 0000000..261f1ec --- /dev/null +++ b/aplicmap/simptv7.map @@ -0,0 +1,27 @@ +MAP +SYMBOLSET ../symbols/simbolosptv6.sym +FONTSET "../symbols/fontes.txt" + LAYER + METADATA + END + NAME "seta" + SIZEUNITS PIXELS + STATUS OFF + TOLERANCE 0 + TOLERANCEUNITS PIXELS + TYPE POINT + UNITS METERS + CLASS + NAME "" + METADATA + END + STYLE + COLOR 0 0 0 + MAXSIZE 500 + MINSIZE 1 + SIZE 8 + SYMBOL "ponto" + END + END + END +END \ No newline at end of file diff --git a/classesphp/classe_legenda.php b/classesphp/classe_legenda.php index 79f7e34..63d2f9e 100644 --- a/classesphp/classe_legenda.php +++ b/classesphp/classe_legenda.php @@ -659,8 +659,8 @@ class Legenda else {$mapatemp = ms_newMapObj($this->localaplicacao."/aplicmap/".$t); } - $l = $mapatemp->getlayer(0); + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $novoss = dirname($this->mapa->symbolsetfilename)."\\".basename($mapatemp->symbolsetfilename); @@ -673,11 +673,13 @@ class Legenda for ($i=0;$i < $ns;++$i) { $oSymbol = $this->mapa->getSymbolObjectById($i); + $nomes = $oSymbol->name; if($nomes == "") { $nomes = $i; } + $adiciona = ms_newLayerObj($this->mapa, $l); $nomel = $l->name; $tematemp= $this->mapa->getlayerbyname($nomel); @@ -686,8 +688,11 @@ class Legenda $e->set("symbolname",$nomes); $e->set("size",$tamanho); $e->set("width",$width); + $ico = $c->createLegendIcon(40,40); + $nimg = $ico->saveWebImage(); + $pat = $this->mapa->web->imageurl; $ins .= ""; } diff --git a/classesphp/mapa_inicia.php b/classesphp/mapa_inicia.php index 1a5a28e..a6ed680 100644 --- a/classesphp/mapa_inicia.php +++ b/classesphp/mapa_inicia.php @@ -286,7 +286,7 @@ function iniciaMapa() $copyright = ""; $lc = $m->mapa->getlayerbyname("copyright"); if($lc != "" && $lc->status == MS_DEFAULT ){ - if($versao["principal"] == 6){ + if($versao["principal"] > 6){ $shape = $lc->getShape(new resultObj(0)); $copyright = $shape->text; } diff --git a/ferramentas/editorgm/editorgm.js b/ferramentas/editorgm/editorgm.js new file mode 100755 index 0000000..621fb25 --- /dev/null +++ b/ferramentas/editorgm/editorgm.js @@ -0,0 +1,2056 @@ +//TODO documentar +//TODO incluir balao de informacoes como um elemento grafico de desenho +//TODO incluir caixas de texto +//TODO incluir undo na edicao + +/* + Editor vetorial de limites para a interface google maps + + Utilizado em i3geo/metaestat/editorlimites.php + + Utiliza a API do Google Maps e pacotes/wicket/wicket.js (que cria o objeto Wkt com funcoes para processamento de Wkt) + + 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 + + Esse programa utiliza parcialmente os codigos da aplicacao calculadora de carbono desenvolvido pelo + IPAM - Instituto de Pesquisa Ambiental da Amazonia + + Este programa e software livre; voce pode redistribui-lo + e/ou modifica-lo sob os termos da Licenca Publica Geral + GNU conforme publicada pela Free Software Foundation; + + Este programa e distribuido na expectativa de que seja util, + porem, SEM NENHUMA GARANTIA; nem mesmo a garantia implicita + de COMERCIABILIDADE OU ADEQUACAO A UMA FINALIDADE ESPECIFICA. + Consulte a Licenca Publica Geral do GNU para mais detalhes. + Voce deve ter recebido uma copia da Licenca Publica Geral do + GNU junto com este programa; se nao, escreva para a + Free Software Foundation, Inc., no endereco + 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. + */ +// +if (typeof (i3GEO) === 'undefined') { + var i3GEO = {}; +} +/* + * Classe i3GEO.editorGM + * + * Funções de edição vetorial utilizadas pelo editor de regiões do sistema METAESTAT + */ +i3GEO.editorGM = + { + iconePonto : function(sel) { + if (sel) { + return i3GEO.configura.locaplic + "/imagens/google/symbol_middot_y.png"; + } else { + return i3GEO.configura.locaplic + "/imagens/google/symbol_middot.png"; + } + }, + /** + * Objeto DOM com a imagem de aguarde existente no cabecalho da janela + * + */ + aguarde : "", + /** + * Guarda o Id do DIV que recebera o conteudo HTML do editor + */ + iddiv : "", + /** + * Objeto criado com new google.maps.drawing.DrawingManager + */ + drawingManager : "", + selectedShape : null, + /** + * guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa + */ + regioestemas : {}, + /** + * Guarda o mapeamento entre o codigo da regiao e o codigo do layer adicionado ao mapa + */ + temasregioes : {}, + /** + * Guarda os dados descritivos sobre cada regiao obtidos na formacao no combo de escolha de regioes + */ + descregioes : [], + /** + * Inicia o editor + * + * Cria o objeto da API do Google Maps com new google.maps.drawing.DrawingManager A janela flutuante que recebera os componentes do + * editor ja deve estar aberta (veja editorlimites.php) Executa i3GEO.editorGM.html + * + * @param Id + * do DIV que recebera o conteudo HTML do editor + */ + inicia : function(iddiv) { + var i, n, ics; + // mensagem + // i3GEO.janela.tempoMsg("Atenção: apenas tabelas no esquema i3geo_metaestat podem ser editadas."); + i3GEO.editorGM.iddiv = iddiv; + $i(iddiv).innerHTML = i3GEO.editorGM.html(); + ics = $i(iddiv).getElementsByTagName("button"); + n = ics.length; + i3GEO.barraDeBotoes.ativaBotoes(); + i3GEO.editorGM.comboRegiaoEditavel(); + for (i = 0; i < n; i++) { + ics[i].style.backgroundColor = "white"; + ics[i].className = "iconeGuiaMovel"; + ics[i].onmouseout = function() { + this.className = "iconeGuiaMovel iconeGuiaMovelMouseOut"; + }; + ics[i].onmouseover = function() { + this.className = "iconeGuiaMovel iconeGuiaMovelMouseOver"; + }; + ics[i].style.backgroundImage = "none"; + ics[i].style.height = "32px"; + ics[i].style.width = "32px"; + ics[i].style.border = "1px solid gray"; + ics[i].style.margin = "0px"; + } + i3GEO.editorGM.drawingManager = + new google.maps.drawing.DrawingManager({ + drawingMode : google.maps.drawing.OverlayType.POLYGON, + drawingControl : false, + drawingControlOptions : { + position : google.maps.ControlPosition.TOP_CENTER, + drawingModes : [ + google.maps.drawing.OverlayType.POLYGON, + google.maps.drawing.OverlayType.MARKER, + google.maps.drawing.OverlayType.POLYLINE + ] + }, + markerOptions : { + icon : i3GEO.editorGM.iconePonto(), + clickable : true, + zIndex : 1, + draggable : true, + tema : "", + colunaid : "", + valorid : "", + colunanome : "", + valornome : "", + editable : false + }, + polygonOptions : { + fillColor : '#ffff00', + fillOpacity : .5, + strokeWeight : 2, + clickable : true, + zIndex : 1, + editable : true, + tema : "", + colunaid : "", + valorid : "", + colunanome : "", + valornome : "" + } + }); + i3GEO.editorGM.drawingManager.setMap(i3GeoMap); + i3GEO.editorGM.drawingManager.setDrawingMode(null); + google.maps.event.addListener(i3GEO.editorGM.drawingManager, 'overlaycomplete', function(e) { + // if (e.type != google.maps.drawing.OverlayType.MARKER) { + i3GEO.editorGM.drawingManager.setDrawingMode(null); + i3GEO.editorGM.mudaicone(); + var newShape = e.overlay; + newShape.type = e.type; + newShape.tema = $i("i3geoCartoRegioesEditaveis").value; + newShape.colunaid = ""; + newShape.valorid = ""; + newShape.colunanome = ""; + newShape.valornome = ""; + google.maps.event.addListener(newShape, 'click', function() { + i3GEO.editorGM.setSelection(newShape); + }); + i3GEO.editorGM.setSelection(newShape); + i3GEO.desenho.googlemaps.shapes.push(newShape); + // } + }); + google.maps.event.addListener(i3GEO.editorGM.drawingManager, 'drawingmode_changed', i3GEO.editorGM.clearSelection); + google.maps.event.addListener(i3GeoMap, 'click', i3GEO.editorGM.clearSelection); + }, + /** + * Atualiza as camadas do mapa que sao oriundas do sistema METAESTAT Busca a lista de camadas com + * ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT Faz um loop para atualizar cada camada + */ + atualizaCamadasMetaestat : function() { + var p = + i3GEO.configura.locaplic + "/ferramentas/metaestat/analise.php?funcao=LISTACAMADASMETAESTAT&g_sid=" + i3GEO.configura.sid, temp = + function(retorno) { + var n = retorno.data.length, i; + for (i = 0; i < n; i++) { + i3GEO.Interface.atualizaTema("", retorno.data[i]); + } + }; + cpJSON.call(p, "foo", temp); + }, + /** + * Monta o codigo HTML com o conteudo da ferramenta Define os botoes e demais elementos que serao preenchidos via codigo + * + * @return html + */ + html : function() { + var ins = + '
' + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
'; // combo para escolher a regiao + return ins; + }, + /** + * Atualiza a ferramenta quando a janela flutuante tem seu foco ativado + */ + ativaFoco : function() { + i3GEO.util.mudaCursor(i3GEO.configura.cursores, "crosshair", i3GEO.Interface.IDMAPA, i3GEO.configura.locaplic); + i3GEO.barraDeBotoes.ativaIcone("pan"); + i3GEO.editorGM.mudaicone(); + i3GEO.Interface.googlemaps.recalcPar(); + }, + /** + * Marca uma figura como selecionada + * + * @param objeto + * shape que sera marcado + */ + setSelection : function(shape) { + if (shape.setEditable) { + shape.setEditable(!shape.editable); + } else { + shape.editable = true; + shape.setIcon({ + url : i3GEO.editorGM.iconePonto(true) + }); + } + }, + /** + * Marca todas as figuras como nao selecionadas As figuras existentes no mapa sao mantidas na variavel + * i3GEO.desenho.googlemaps.shapes + */ + clearSelection : function() { + var i, n = i3GEO.desenho.googlemaps.shapes.length; + for (i = 0; i < n; i++) { + if (i3GEO.desenho.googlemaps.shapes[i] != "" && i3GEO.desenho.googlemaps.shapes[i].setEditable) { + i3GEO.desenho.googlemaps.shapes[i].setEditable(false); + } else if (i3GEO.desenho.googlemaps.shapes[i] != "") {// caso for ponto + i3GEO.desenho.googlemaps.shapes[i].editable = false; + if (i3GEO.desenho.googlemaps.shapes[i].setIcon) { + i3GEO.desenho.googlemaps.shapes[i].setIcon({ + url : i3GEO.editorGM.iconePonto(false) + }); + } + } + } + }, + /** + * Marca todas as figuras como selecionadas As figuras existentes no mapa sao mantidas na variavel i3GEO.desenho.googlemaps.shapes + */ + selectAll : function() { + var i, n = i3GEO.desenho.googlemaps.shapes.length; + for (i = 0; i < n; i++) { + if (i3GEO.desenho.googlemaps.shapes[i] != "" && i3GEO.desenho.googlemaps.shapes[i].setEditable) { + i3GEO.desenho.googlemaps.shapes[i].setEditable(true); + } else if (i3GEO.desenho.googlemaps.shapes[i] != "") {// caso for ponto + i3GEO.desenho.googlemaps.shapes[i].editable = true; + i3GEO.desenho.googlemaps.shapes[i].setIcon({ + url : i3GEO.editorGM.iconePonto(true) + }); + } + } + }, + /** + * Remove do mapa as figuras que estiverem selecionadas + * + * @param boolean + * indica se deve ser feita uma confirmacao ou nao antes de apagar + */ + deleteSelectedShape : function(naoconfirma) { + i3GEO.janela.tempoMsg($trad("meneditor1")); + if (!naoconfirma) { + naoconfirma = false; + } + var i, n = i3GEO.desenho.googlemaps.shapes.length; + if (n > 0) { + if (naoconfirma === false) { + var x = window.confirm($trad("excsel") + "?"); + } else { + x = true; + } + if (x) { + for (i = 0; i < n; i++) { + if (i3GEO.desenho.googlemaps.shapes[i] != "" && i3GEO.desenho.googlemaps.shapes[i].editable + && i3GEO.desenho.googlemaps.shapes[i].editable === true) { + i3GEO.desenho.googlemaps.shapes[i].setMap(null); + i3GEO.desenho.googlemaps.shapes[i] = ""; + } + } + } + } else { + i3GEO.janela.tempoMsg($trad("selum")); + } + }, + /** + * Lista as figuras que estao marcadas como selecionadas + * + * @return array de shapes + */ + selectedShapes : function() { + var i, s = [], n = i3GEO.desenho.googlemaps.shapes.length; + for (i = 0; i < n; i++) { + if (i3GEO.desenho.googlemaps.shapes[i] != "" && i3GEO.desenho.googlemaps.shapes[i].editable === true) { + s.push(i3GEO.desenho.googlemaps.shapes[i]); + } + } + return s; + }, + /** + * Lista as coordenadas de todas as figuras existentes + * + * @return objeto contendo a indicacao do tipo de figura e o array com a lista de coordenadas + */ + getCoordenadas : function() { + var coordenadas = [], lista = [], n = i3GEO.desenho.googlemaps.shapes.length, tipo = "", ps, nps, j, p, i, r; + + for (i = 0; i < n; i++) { + coordenadas = []; + if (i3GEO.desenho.googlemaps.shapes[i] != "" && i3GEO.desenho.googlemaps.shapes[i].editable === true) { + if (tipo == "") { + tipo = i3GEO.desenho.googlemaps.shapes[i].type; + } + ps = i3GEO.desenho.googlemaps.shapes[i].getPath(); + nps = ps.getLength(); + for (j = 0; j < nps; j++) { + p = ps.getAt(j); + coordenadas.push([ + p.lng() + " " + p.lat() + ]); + } + lista.push(coordenadas); + } + } + r = { + "tipo" : tipo, + "coordenadas" : lista + }; + return r; + }, + /** + * Converte um objeto shape em uma string WKT + * + * @param shape + */ + toWKT : function(obj) { + var wkt = new Wkt.Wkt(); + wkt.fromObject(obj); + return wkt.write(); + }, + merge : function(geoms) { + var n = geoms.length, w = new Wkt.Wkt(), g, m, i; + w.read(geoms[0].toString()); + if (n > 1) { + for (i = 1; i < n; i++) { + g = geoms[i].toString(); + m = new Wkt.Wkt(); + m.read(g); + w.merge(m); + } + } + return w.write(); + }, + /** + * Funcoes que controlam o processo de obtencao das coordenadas de um componente de uma camada existente no mapa + */ + capturaPoligonoTema : { + /** + * Ativa a operaco de captura definindo o evento que sera executado no onclick do mouse sobre o mapa O evento executa + * i3GEO.editorGM.capturaPoligonoTema.captura + * + * @param botao + * da interface que foi pressionado + */ + ativa : function(botao) { + i3GEO.editorGM.mudaicone(botao); + i3GEO.eventos.cliquePerm.desativa(); + i3GEO.eventos.adicionaEventos("MOUSECLIQUE", [ + "i3GEO.editorGM.capturaPoligonoTema.captura()" + ]); + i3GEO.util.mudaCursor(i3GEO.configura.cursores, "crosshair", i3GEO.Interface.IDMAPA, i3GEO.configura.locaplic); + }, + desativa : function() { + }, + /** + * Realiza a captura de um componente do mapa quando o usuario faz o clique A captura e feita com + * classesphp/mapa_controle.php&funcao=identifica3 O resultado e adicionado ao mapa como um novo objeto shape + */ + captura : function() { + var temp, tema = "", regiao = "", p, par, aguarde = $i("i3GEOjanelaEditor_imagemCabecalho"); + if (!$i("i3geoCartoRegioesEditaveis")) { + i3GEO.eventos.removeEventos("MOUSECLIQUE", [ + "i3GEO.editorGM.capturaPoligonoTema.captura()" + ]); + } else { + temp = + function(retorno) { + var temp, n, i, WicketWkt, wkt = "", colunaid = "", valorid = "", colunanome = "", valornome = "", aguarde = + $i("i3GEOjanelaEditor_imagemCabecalho"); + if (i3GEO.editorGM.descregioes["a_" + regiao]["identificador"]) { + colunaid = i3GEO.editorGM.descregioes["a_" + regiao]["identificador"]; + } + if (i3GEO.editorGM.descregioes["a_" + regiao]["colunanomeregiao"]) { + colunanome = i3GEO.editorGM.descregioes["a_" + regiao]["colunanomeregiao"]; + } + if (aguarde) { + aguarde.style.visibility = "hidden"; + } + // obtem os dados buscando nos itens que vem da requisicao ao wms + temp = retorno.data[0].resultado[0]; + if (temp === " ") { + i3GEO.janela.tempoMsg($trad("meneditor2")); + return; + } + i3GEO.editorGM.mudaicone(); + n = temp.length; + for (i = 0; i < n; i++) { + if (temp[i].alias == "wkt") { + wkt = temp[i].valor; + } + if (temp[i].alias == colunaid || temp[i].item == colunaid) { + valorid = temp[i].valor; + } + if (temp[i].alias == colunanome || temp[i].item == colunanome) { + valornome = temp[i].valor; + } + } + // objeto do wicket ver pacotes/wicket + WicketWkt = new Wkt.Wkt(); + // wkt = "MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 45 20, 30 5, 10 10, 10 30, 20 35), (30 20, 20 + // 25, 20 15, 30 20)))"; + try { // Catch any malformed WKT strings + WicketWkt.read(wkt); + } catch (e1) { + try { + wkt.read(wkt.replace('\n', '').replace('\r', '').replace('\t', '')); + } catch (e2) { + if (e2.name === 'WKTError') { + alert('Wicket could not understand the WKT string you entered. Check that you have parentheses balanced, and try removing tabs and newline characters.'); + return; + } + } + } + obj = WicketWkt.toObject(i3GeoMap.defaults); + // obj.setMap(i3GeoMap); // Add it to the map + // i3GEO.desenho.googlemaps.shapes.push(obj); + i3GEO.editorGM.adicionaPoligonos(obj, tema, colunaid, valorid, colunanome, valornome); + i3GEO.eventos.MOUSECLIQUE = []; + }; + regiao = $i("i3geoCartoRegioesEditaveis").value; + if (regiao != "") { + tema = i3GEO.editorGM.regioestemas["a" + regiao]; + if (aguarde && aguarde.style.visibility == "hidden") { + aguarde.style.visibility = "visible"; + p = i3GEO.configura.locaplic + "/classesphp/mapa_controle.php"; + par = + "funcao=identifica3&opcao=tema&xy=" + objposicaocursor.ddx + + "," + + objposicaocursor.ddy + + "&resolucao=5&g_sid=" + + i3GEO.configura.sid + + "&ext=" + + i3GEO.parametros.mapexten + + "&listaDeTemas=&wkt=sim&tema=" + + tema; + cpJSON.call(p, "identifica", temp, par); + } + } + } + } + }, + /** + * Monta um combo com a lista de regioes cadastradas e que podem ser editadas pelo editor A regiao em edicao sera a escolhida nesse + * combo Ao ser escolhida, e adicionada uma camada no mapa + * + * @param opcional + * codigo da regiao no cadastro. Se nao for definido, busca todas + */ + comboRegiaoEditavel : function(codigo_tipo_regiao) { + if (!codigo_tipo_regiao) { + codigo_tipo_regiao = ""; + } + var onde = $i("i3geoCartoRegioesEditaveisDiv"), temp = + function(dados) { + var n = dados.length, ins = '

' + $trad("camedit") + ':

', i; + ins += + ""; + if (onde) { + onde.innerHTML = ins; + } + return ins; + }; + i3GEO.php.listaTipoRegiao(temp, codigo_tipo_regiao); + }, + /** + * Funcao ativada no evento onchange do combo criado com comboRegiaoEditavel Executa i3GEO.php.mapfileTipoRegiao + */ + comboRegiaoEditavelOnchange : function(combo) { + if (combo.value === "") { + return; + } + i3GEO.editorGM.editarAtributos.desativa(); + // caso a camada escolhida seja uma camada normal, vinda de um mapfile + if (i3GEO.arvoreDeCamadas.pegaTema(combo.value) != "") { + i3GEO.editorGM.regioestemas["a" + combo.value] = combo.value; + i3GEO.editorGM.temasregioes[combo.value] = combo.value; + } else { + var temp = function(retorno) { + if (i3GEO.arvoreDeCamadas.pegaTema(retorno.layer) == "") { + i3GEO.php.adtema(i3GEO.atualiza, retorno.mapfile); + // guarda o codigo e relaciona com a regiao + i3GEO.editorGM.regioestemas["a" + combo.value] = retorno.layer; + i3GEO.editorGM.temasregioes[retorno.layer] = combo.value; + } + }; + i3GEO.php.mapfileTipoRegiao(temp, combo.value); + } + }, + /** + * Altera as bordas dos icones e desativa eventos Desativa todos os botoes e ativa o indicado + * + * @param objeto + * DOM que representa o botao que sera focado + */ + mudaicone : function(botao) { + var c = $i(i3GEO.editorGM.iddiv), ci = c.getElementsByTagName("img"), n = ci.length, i; + for (i = 0; i < n; i++) { + ci[i].parentNode.style.backgroundColor = "#F5F5F5"; + } + i3GEO.eventos.MOUSECLIQUE = []; + i3GEO.editorGM.capturaPoligonoTema.desativa(); + i3GEO.editorGM.editarAtributos.desativa(); + if (botao && botao.style) { + botao.style.backgroundColor = "#cedff2"; + } + }, + /** + * Ativa a digitalizacao de poligono + * + * @param objeto + * DOM que representa o botao que sera focado + */ + digitalizaPol : function(botao) { + i3GEO.editorGM.mudaicone(botao); + i3GEO.util.mudaCursor(i3GEO.configura.cursores, "pointer", i3GEO.Interface.IDMAPA, i3GEO.configura.locaplic); + i3GEO.editorGM.drawingManager.setOptions({ + drawingMode : google.maps.drawing.OverlayType.POLYGON + }); + }, + /** + * Ativa a digitalizacao de ponto + * + * @param objeto + * DOM que representa o botao que sera focado + */ + digitalizaPt : function(botao) { + i3GEO.editorGM.mudaicone(botao); + i3GEO.util.mudaCursor(i3GEO.configura.cursores, "pointer", i3GEO.Interface.IDMAPA, i3GEO.configura.locaplic); + i3GEO.editorGM.drawingManager.setOptions({ + drawingMode : google.maps.drawing.OverlayType.MARKER + }); + }, + /** + * Ativa a selecao de figuras + * + * @param objeto + * DOM que representa o botao que sera focado + */ + seleciona : function(botao) { + i3GEO.editorGM.mudaicone(botao); + i3GEO.util.mudaCursor(i3GEO.configura.cursores, "pointer", i3GEO.Interface.IDMAPA, i3GEO.configura.locaplic); + i3GEO.editorGM.drawingManager.setOptions({ + drawingMode : null + }); + }, + /** + * Adiciona uma nova figura ao mapa (shape) Pode ser poligono ou ponto + * + * @param objeto + * shape (API do Google) + * @param codigo + * do layer que sera vinculado ao shape + * @param coluna + * do tema que contem os identificadores de cada um de seus elementos (registros) + * @param valor + * do identificador + * @param coluna + * que cntem os nomes das regioes + * @param nome + * da regiao a ser adicionada + */ + adicionaPoligonos : function(obj, tema, colunaid, valorid, colunanome, valornome) { + if (!tema) { + tema = $i("i3geoCartoRegioesEditaveis").value; + } + if (!colunaid) { + colunaid = ""; + } + if (!valorid) { + valorid = ""; + } + if (!colunanome) { + colunanome = ""; + } + if (!valornome) { + valornome = ""; + } + var pol; + if (Wkt.isArray(obj)) { // Distinguish multigeometries (Arrays) from objects + for (i in obj) { + if (obj.hasOwnProperty(i) && !Wkt.isArray(obj[i])) { + pol = new google.maps.Polygon({ + path : obj[i].getPath(), + map : i3GeoMap, + fillColor : '#ffff00', + fillOpacity : .5, + strokeWeight : 2, + clickable : true, + zIndex : 1, + editable : true, + tema : tema, + colunaid : colunaid, + valorid : valorid, + colunanome : colunanome, + valornome : valornome + }); + google.maps.event.addListener(pol, 'click', function() { + i3GEO.editorGM.setSelection(pol); + }); + i3GEO.desenho.googlemaps.shapes.push(pol); + } + } + return; + } + if (obj.type === 'polygon' || obj.type === 'linestring') { + pol = new google.maps.Polygon({ + paths : obj.getPaths(), + map : i3GeoMap, + fillColor : '#ffff00', + fillOpacity : .5, + strokeWeight : 2, + clickable : true, + zIndex : 1, + editable : true, + tema : tema, + colunaid : colunaid, + valorid : valorid, + colunanome : colunanome, + valornome : valornome + }); + google.maps.event.addListener(pol, 'click', function() { + i3GEO.editorGM.setSelection(pol); + }); + i3GEO.desenho.googlemaps.shapes.push(pol); + return; + } + if (obj.type === 'marker') { + i3GEO.editorGM.selectAll(); + if (i3GEO.desenho.googlemaps.shapes.length > 0) { + i3GEO.editorGM.deleteSelectedShape(true); + } + pol = new google.maps.Marker({ + position : new google.maps.LatLng(obj.getPosition().ob, obj.getPosition().pb), + map : i3GeoMap, + icon : { + url : i3GEO.editorGM.iconePonto(false) + }, + clickable : true, + zIndex : 1, + draggable : true, + tema : tema, + colunaid : colunaid, + valorid : valorid, + colunanome : colunanome, + valornome : valornome, + editable : false + }); + google.maps.event.addListener(pol, 'click', function() { + i3GEO.editorGM.setSelection(pol); + }); + i3GEO.desenho.googlemaps.shapes.push(pol); + return; + } + }, + /** + * Salva um poligono no banco de dados + */ + salvaLimite : { + /** + * Inicia a ferramenta definindo as funcoes dos botoes Executa i3GEO.editorGM.salvaLimite.criaJanelaFlutuante + */ + inicia : function() { + if (i3GEO.login.verificaCookieLogin() === false) { + i3GEO.janela.tempoMsg($trad("meneditor3")); + if (i3GEO.editorGM.selectedShapes().length > 0) { + var temp = i3GEO.editorGM.toWKT(i3GEO.editorGM.selectedShapes()[0]); + i3GEO.mapa.dialogo.wkt2layer(temp); + } + return; + } + var wkt, temp, s = i3GEO.editorGM.selectedShapes(), n = s.length, janela = YAHOO.i3GEO.janela.manager.find("salvaLimite"); + if (janela) { + janela.destroy(); + } + if (n == 1) { + s = s[0]; + temp = function(retorno) { + i3GEO.editorGM.deleteSelectedShape(true); + i3GEO.Interface.redesenha(); + }; + // verifica se e uma regiao cadastrada ou um tema comum editavel + if (i3GEO.editorGM.descregioes["a_" + $i("i3geoCartoRegioesEditaveis").value].tema != undefined) { + wkt = i3GEO.editorGM.toWKT(i3GEO.editorGM.selectedShapes()[0]); + if (wkt && wkt != "") { + // cria um novo registro + if (s.valorid == "") { + p = + i3GEO.configura.locaplic + "/ferramentas/editortema/exec.php?funcao=adicionaGeometria&g_sid=" + + i3GEO.configura.sid; + cpJSON.call(p, "foo", temp, "&tema=" + $i("i3geoCartoRegioesEditaveis").value + "&wkt=" + wkt); + } else { + // atualiza a geometria + p = + i3GEO.configura.locaplic + "/ferramentas/editortema/exec.php?funcao=atualizaGeometria&g_sid=" + + i3GEO.configura.sid; + cpJSON.call(p, "foo", temp, "&idunico=" + s.valorid + + "&tema=" + + $i("i3geoCartoRegioesEditaveis").value + + "&wkt=" + + wkt); + } + } + } else { + // formulario para o caso de ser um tema cadastrado como regiao no sistema metaestat + i3GEO.editorGM.salvaLimite.criaJanelaFlutuante(i3GEO.editorGM.salvaLimite.html( + s.colunaid, + s.valorid, + s.colunanome, + s.valornome)); + new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao1", { + onclick : { + fn : function() { + i3GEO.editorGM.salvaLimite.gravaDados(true); + } + } + }); + new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao2", { + onclick : { + fn : function() { + i3GEO.editorGM.salvaLimite.gravaDados(false); + } + } + }); + new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao3", { + onclick : { + fn : function() { + i3GEO.editorGM.salvaLimite.excluiPoligono(); + } + } + }); + } + } else { + i3GEO.janela.tempoMsg("Selecione uma figura"); + } + }, + /** + * Monta o HTML para o formulario que permite salvar os dados + */ + html : function(colunaIdElemento, valorIdElemento, colunaNomeElemento, valorNomeElemento) { + var ins = + '' + '

Se o valor do código for vazio, será criado um novo elemento. Caso contrário, os valores atualmente registrados serão atualizados.

' + + '

Edite os atributos:

' + + '' + + '' + + '' + + '' + + '

Código:

' + + '

' + + '

Nome:

' + + '

' + + '

Escolha a operação desejada:

' + + '' + + ' ' + + '

'; + return ins; + }, + /** + * Cria a janela flutuante para receber os componentes da ferramenta + * + * @param html + * com o conteudo da ferramenta + */ + criaJanelaFlutuante : function(html) { + var titulo, cabecalho, minimiza, janela; + cabecalho = function() { + }; + minimiza = function() { + i3GEO.janela.minimiza("salvaLimite"); + }; + titulo = "
" + $trad("sdados") + "
"; + janela = i3GEO.janela.cria("300px", "265px", "", "", "", titulo, "salvaLimite", true, "hd", cabecalho, minimiza); + $i("salvaLimite_corpo").style.backgroundColor = "white"; + $i("salvaLimite_corpo").innerHTML = html; + YAHOO.util.Event.addListener(janela[0].close, "click", i3GEO.editorGM.mudaicone); + }, + /** + * Aplica a operacao de salvar os dados no banco para o shape selecionado Executa + * admin/php/metaestat.php?funcao=mantemDadosRegiao + * + * @param boolean + * indica se as coordenadas serao salvas tambem + */ + gravaDados : function(comwkt) { + if (i3GEO.login.verificaCookieLogin() === false) { + i3GEO.janela.tempoMsg($trad("meneditor3")); + return; + } + if (!window.confirm($trad("sdados") + "?")) { + return; + } + var p, codigo_tipo_regiao = $i("i3geoCartoRegioesEditaveis").value, identificadornovo = + $i("inputIdentificadorNovoElemento").value, identificador = $i("inputIdentificadorElemento").value, nome = + $i("inputNomeNovoElemento").value, wkt = "", temp = function(retorno) { + i3GEO.editorGM.deleteSelectedShape(true); + var janela = YAHOO.i3GEO.janela.manager.find("salvaLimite"); + if (janela) { + janela.destroy(); + } + i3GEO.Interface.redesenha(); + }; + if (comwkt === true) { + wkt = i3GEO.editorGM.toWKT(i3GEO.editorGM.selectedShapes()[0]); + } else { + if (identificadornovo === identificador && $i("inputNomeElemento").value === nome) { + i3GEO.janela.tempoMsg($trad("meneditor4")); + return; + } + } + p = i3GEO.configura.locaplic + "/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo="; + cpJSON.call(p, "foo", temp, "&codigo_tipo_regiao=" + codigo_tipo_regiao + + "&identificadornovo=" + + identificadornovo + + "&identificador=" + + identificador + + "&nome=" + + nome + + "&wkt=" + + wkt); + }, + /** + * Exclui um registro do banco de dados Executa admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=excluir + */ + excluiPoligono : function() { + if (i3GEO.login.verificaCookieLogin() === false) { + i3GEO.janela.tempoMsg($trad("meneditor3")); + return; + } + if (!window.confirm($trad("excsel") + "?")) { + return; + } + var codigo_tipo_regiao = $i("i3geoCartoRegioesEditaveis").value, identificador = $i("inputIdentificadorElemento").value, temp = + function(retorno) { + i3GEO.editorGM.deleteSelectedShape(true); + var janela = YAHOO.i3GEO.janela.manager.find("salvaLimite"); + if (janela) { + janela.destroy(); + } + i3GEO.Interface.redesenha(); + }, p = i3GEO.configura.locaplic + "/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=excluir"; + if (identificador === "") { + i3GEO.janela.tempoMsg($trad("meneditor5")); + } else { + cpJSON.call(p, "foo", temp, "&codigo_tipo_regiao=" + codigo_tipo_regiao + "&identificador=" + identificador); + } + } + }, + /** + * Funcoes que controlam o processo de edicao de atributos de um shape + */ + editarAtributos : { + aliascolunas : "", // guarda os nomes das colunas e seus aliases para permitir a criacao de novos registros + x : "", + y : "", + /** + * Ativa a ferramenta Define os eventos de onclick para abrir formulario quando o usuario clica no mapa Para cada regiao sao + * obtidas todas as variaveis cadastradas Executa i3GEO.editorGM.editarAtributos.criaJanelaFlutuante Executa + * i3GEO.editorGM.editarAtributos.comboVariaveis(); + */ + ativa : function(botao) { + if ($i("i3geoCartoRegioesEditaveis").value == "") { + i3GEO.janela.tempoMsg("Escolha uma regiao"); + return; + } + i3GEO.editorGM.mudaicone(botao); + i3GEO.eventos.adicionaEventos("MOUSECLIQUE", [ + "i3GEO.editorGM.editarAtributos.captura()" + ]); + var janela = YAHOO.i3GEO.janela.manager.find("editaAtributos"); + if (janela) { + $i("editarAtributosForm").innerHTML = ""; + } else { + i3GEO.editorGM.editarAtributos.criaJanelaFlutuante(i3GEO.editorGM.editarAtributos.html()); + i3GEO.editorGM.editarAtributos.comboVariaveis(); + } + }, + /** + * Fecha a janela de edicao + */ + desativa : function() { + var janela = YAHOO.i3GEO.janela.manager.find("editaAtributos"); + if (janela) { + janela.destroy(); + } + }, + criaJanelaFlutuante : function(html) { + var janela, titulo, cabecalho, minimiza; + cabecalho = function() { + }; + minimiza = function() { + i3GEO.janela.minimiza("editaAtributos"); + }; + titulo = "
" + $trad("atrib") + "
"; + janela = i3GEO.janela.cria("250px", "265px", "", "", "", titulo, "editaAtributos", false, "hd", cabecalho, minimiza); + $i("editaAtributos_corpo").style.backgroundColor = "white"; + $i("editaAtributos_corpo").innerHTML = html; + i3GEO.janela.tempoMsg($trad("meneditor6")); + YAHOO.util.Event.addListener(janela[0].close, "click", i3GEO.editorGM.mudaicone); + }, + /** + * Fornece o HTML com os objetos que receberao os componentes da ferramenta + * + * @return html + */ + html : function() { + var ins = + '' + '

' + + '

' + + '

' + + '

' + + ''; + return ins; + }, + /** + * Monta um combo para escolha de uma variavel que sera editada Executa i3GEO.php.listaVariavel + */ + comboVariaveis : function() { + var temp = + function(dados) { + var i, n = dados.length, ins = ''; + ins += '

Escolha uma variável para editar

'; + ins += + ""; + $i("editarAtributosVariaveis").innerHTML = ins; + }; + i3GEO.php.listaVariavel(temp, "i3geo_metaestat"); + }, + /** + * Monta um combo com as medidas de uma variavel Executa i3GEO.php.listaMedidaVariavel + * + * @param objeto + * DOM do tipo select que contem a lista de variaveis + */ + comboMedidasVariavel : function(comboMedidas) { + var temp = + function(dados) { + var i, n = dados.length, ins = ''; + ins += '

Escolha uma medida da variável para editar

'; + ins += + ""; + $i("editarAtributosMedidasVariavel").innerHTML = ins; + }; + if (comboMedidas.value !== "") { + i3GEO.php.listaMedidaVariavel(comboMedidas.value, temp); + } + }, + /** + * Captura os atributos de um elemento do mapa Executa i3GEO.editorGM.editarAtributos.pegaDados(); + */ + captura : function() { + if (!YAHOO.i3GEO.janela.manager.find("editaAtributos")) { + i3GEO.editorGM.mudaicone(botao); + return; + } + i3GEO.editorGM.editarAtributos.x = objposicaocursor.ddx; + i3GEO.editorGM.editarAtributos.y = objposicaocursor.ddy; + i3GEO.editorGM.editarAtributos.pegaDados(); + }, + /** + * Obtem os dados de um elemento de uma regiao Monta o formulario para edicao Executa + * admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY + */ + pegaDados : function() { + var p = i3GEO.configura.locaplic + "/admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY", codigo_tipo_regiao = + $i("i3geoCartoRegioesEditaveis").value, id_medida_variavel = $i("editarAtributosComboMedidas").value, temp = + function(retorno) { + var atr = retorno.atributos, i = 0, n = atr.dados.length, j = 0, idunico = "", nj = atr.aliascolunas.length, ins = + "" + '

Limite geográfico escolhido:

' + + '

Nome: ' + + retorno.regiao.nomeregiao + + '

' + + '

Código: ' + + retorno.regiao.identificador_regiao + + '

' + + '' + + '

Atributos:

' + + '' + + ' '; + $i("editarAtributosRegiao").innerHTML = ins; + ins = ""; + // registros + for (i = 0; i < n; i++) { + // descobre qual o indice que corresponde ao idunico do registro + for (j = 0; j < nj; j++) { + if (atr.aliascolunas[j] == "idunico") { + idunico = atr.dados[i][atr.colunas[j]]; + } + } + ins += + "

excluir

"; + // colunas + for (j = 0; j < nj; j++) { + if (atr.aliascolunas[j] !== "idunico") { + ins += + '

' + atr.aliascolunas[j] + + ':
' + + '

'; + } + } + } + $i("editarAtributosForm").innerHTML = ins; + new YAHOO.widget.Button("editarAtributosAdicionar", { + onclick : { + fn : function() { + var novoel = document.createElement("div"), ins = "

"; + for (j = 0; j < nj; j++) { + if (atr.aliascolunas[j] !== "idunico") { + ins += + '

' + atr.aliascolunas[j] + + ' - ' + + atr.descricao[j] + + ':
' + + '

'; + } + } + ins += "
"; + novoel.innerHTML = ins; + $i("editarAtributosForm").appendChild(novoel); + } + } + }); + new YAHOO.widget.Button("editarAtributosSalvar", { + onclick : { + fn : function() { + i3GEO.editorGM.editarAtributos.salva(); + } + } + }); + }; + cpJSON.call(p, "foo", temp, "&codigo_tipo_regiao=" + codigo_tipo_regiao + + "&id_medida_variavel=" + + id_medida_variavel + + "&x=" + + i3GEO.editorGM.editarAtributos.x + + "&y=" + + i3GEO.editorGM.editarAtributos.y); + }, + // FIXME redesenhar as camadas que sofrerem alteracoes em funcao do salvar ou excluir + /** + * Exclui o valor de uma medida de variavel para o componente de uma regiao + */ + excluir : function(id) { + if (i3GEO.login.verificaCookieLogin() === false) { + i3GEO.janela.tempoMsg("Você precisa fazer login para usar essa opção"); + return; + } + var p = i3GEO.configura.locaplic + "/admin/php/metaestat.php?funcao=excluiAtributosMedidaVariavel", codigo_tipo_regiao = + $i("i3geoCartoRegioesEditaveis").value, id_medida_variavel = $i("editarAtributosComboMedidas").value, identificador_regiao = + $i("editarAtributosidentificador_regiao").value, temp = function(retorno) { + i3GEO.editorGM.editarAtributos.pegaDados(); + i3GEO.janela.fechaAguarde("aguardeSalvaAtributos"); + }; + i3GEO.janela.AGUARDEMODAL = true; + i3GEO.janela.abreAguarde("aguardeSalvaAtributos", "Salvando..."); + i3GEO.janela.AGUARDEMODAL = false; + cpJSON.call(p, "foo", temp, "&codigo_tipo_regiao=" + codigo_tipo_regiao + + "&identificador_regiao=" + + identificador_regiao + + "&id_medida_variavel=" + + id_medida_variavel + + "&id=" + + id); + + }, + /** + * Salva os valores digitados + */ + salva : function() { + if (i3GEO.login.verificaCookieLogin() === false) { + i3GEO.janela.tempoMsg("Você precisa fazer login para usar essa opção"); + return; + } + var container = $i("editarAtributosForm"), divsT = container.getElementsByTagName("div"), n = divsT.length, i = 0, dv = "", inputs = + "", codigo_tipo_regiao = $i("i3geoCartoRegioesEditaveis").value, id_medida_variavel = + $i("editarAtributosComboMedidas").value, identificador_regiao = $i("editarAtributosidentificador_regiao").value, nj, j, colunas = + [], colunasT = [], valores = [], valoresT = [], idsunicosT = [], p = + i3GEO.configura.locaplic + "/admin/php/metaestat.php?funcao=salvaAtributosMedidaVariavel", re = + new RegExp("idunico_", "g"), // prefixo usado para marcar o id dos elementos input que contem os valores que se quer + // obter + temp = function(retorno) { + i3GEO.editorGM.editarAtributos.pegaDados(); + i3GEO.editorGM.atualizaCamadasMetaestat(); + i3GEO.janela.fechaAguarde("aguardeSalvaAtributos"); + }; + if (codigo_tipo_regiao == "") { + i3GEO.janela.tempoMsg("Problemas com o codigo da regiao"); + return; + } + if (id_medida_variavel == "") { + i3GEO.janela.tempoMsg("Escolha uma medida"); + return; + } + if (identificador_regiao == "") { + i3GEO.janela.tempoMsg("Problemas com o identificador da regiao"); + return; + } + for (i = 0; i < n; i++) { + dv = divsT[i]; + inputs = dv.getElementsByTagName("input"); + nj = inputs.length; + colunas = []; + valores = []; + for (j = 0; j < nj; j++) { + colunas.push(inputs[j].name); + valores.push(inputs[j].value); + } + idsunicosT.push(inputs[0].id.replace(re, '')); + colunasT.push(colunas.join("|")); + valoresT.push(valores.join("|")); + } + i3GEO.janela.AGUARDEMODAL = true; + i3GEO.janela.abreAguarde("aguardeSalvaAtributos", "Salvando..."); + i3GEO.janela.AGUARDEMODAL = false; + cpJSON.call(p, "foo", temp, "&codigo_tipo_regiao=" + codigo_tipo_regiao + + "&identificador_regiao=" + + identificador_regiao + + "&id_medida_variavel=" + + id_medida_variavel + + "&colunas=" + + colunasT[0] + + "&valores=" + + valoresT.join("#") + + "&idsunicos=" + + idsunicosT.join("|")); + } + }, + /** + * Abre a janela de ajuda sobre a operacao dos botoes do editor + */ + ajuda : function() { + var titulo, cabecalho, minimiza, html = ""; + cabecalho = function() { + }; + minimiza = function() { + i3GEO.janela.minimiza("editaAtributosAjuda"); + }; + titulo = "
Ajuda 
"; + i3GEO.janela.cria("400px", "350px", "", "", "", titulo, "editaAtributosAjuda", false, "hd", cabecalho, minimiza); + $i("editaAtributosAjuda_corpo").style.backgroundColor = "white"; + html += + "" + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "
Clique no mapa para traçar um polígono novo. Cada clique corresponde a um vértice do polígono. Para encerrar o traçado utilize um duplo clique. Após traçar um novo polígono pode-se selecioná-lo novamente e editar os vértices, se for necessário, ou mesmo apagar o polígono por completo. O novo polígono só será salvo por meio da opção específica para isso.
Utilize essa opção para capturar os vértices de um polígono existente. O resultado da captura é uma figura que pode ser editada, ou seja, os vértices podem ser modificados de posição ou mesmo removidos. Após editar, salve o novo polígono.
Após ativar essa opção clique no mapa sobre uma figura existente (que tenha sido capturada ou digtalizada). A figura passará então para o estado de 'selecionada' podendo ser utilizada por outras ferramentas de edição.
Remove da tela a figura que estiver selecionada. Essa operação não apaga o polígono do banco de dados, apenas remove do modo de edição.
Salva no banco de dados a figura que estiver selecionada. Essa opção altera apenas os atributos do limite geográfico, não afetando os valores armazenados em cada medida de variável.
Abre um formulário que permite alterar os valores de uma medida de variável relacionada a uma determinada região. Após abrir o formulário, clique no mapa sobre a região desejada, mas escolha a medida da variável primeiro. Os valores já existentes poderão então ser alterados ou podem ser adicionados novos.
"; + $i("editaAtributosAjuda_corpo").innerHTML = html; + } + }; + +// copia do original de pacotes/wicket + +/* global Wkt, google, document, window, console */ +google.maps.Marker.prototype.type = 'marker'; +google.maps.Polyline.prototype.type = 'polyline'; +google.maps.Polygon.prototype.type = 'polygon'; +google.maps.Rectangle.prototype.type = 'rectangle'; +google.maps.Circle.prototype.type = 'circle'; + +/** + * @license + * + * Copyright (C) 2012 K. Arthur Endsley (kaendsle@mtu.edu) Michigan Tech Research Institute (MTRI) 3600 Green Court, Suite 100, Ann Arbor, + * MI, 48105 + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + */ +(function(Wkt) { + + /** + * @augments Wkt.Wkt A framework-dependent flag, set for each Wkt.Wkt() instance, that indicates whether or not a closed polygon + * geometry should be interpreted as a rectangle. + */ + Wkt.Wkt.prototype.isRectangle = false; + + /** + * @augments Wkt.Wkt An object of framework-dependent construction methods used to generate objects belonging to the various geometry + * classes of the framework. + */ + Wkt.Wkt.prototype.construct = { + /** + * Creates the framework's equivalent point geometry object. + * + * @param config + * {Object} An optional properties hash the object should use + * @param component + * {Object} An optional component to build from + * @return {google.maps.Marker} + */ + point : function(config, component) { + var c = component || this.components; + + config = config || {}; + + config.position = new google.maps.LatLng(c[0].y, c[0].x); + + return new google.maps.Marker(config); + }, + + /** + * Creates the framework's equivalent multipoint geometry object. + * + * @param config + * {Object} An optional properties hash the object should use + * @return {Array} Array containing multiple google.maps.Marker + */ + multipoint : function(config) { + var i, c, arr; + + c = this.components; + + config = config || {}; + + arr = []; + + for (i = 0; i < c.length; i += 1) { + arr.push(this.construct.point(config, c[i])); + } + + return arr; + }, + + /** + * Creates the framework's equivalent linestring geometry object. + * + * @param config + * {Object} An optional properties hash the object should use + * @param component + * {Object} An optional component to build from + * @return {google.maps.Polyline} + */ + linestring : function(config, component) { + var i, c; + + c = component || this.components; + + config = config || { + editable : false + }; + + config.path = []; + + for (i = 0; i < c.length; i += 1) { + config.path.push(new google.maps.LatLng(c[i].y, c[i].x)); + } + + return new google.maps.Polyline(config); + }, + + /** + * Creates the framework's equivalent multilinestring geometry object. + * + * @param config + * {Object} An optional properties hash the object should use + * @return {Array} Array containing multiple google.maps.Polyline instances + */ + multilinestring : function(config) { + var i, c, arr; + + c = this.components; + + config = config || { + editable : false + }; + + config.path = []; + + arr = []; + + for (i = 0; i < c.length; i += 1) { + arr.push(this.construct.linestring(config, c[i])); + } + + return arr; + }, + + /** + * Creates the framework's equivalent Box or Rectangle geometry object. + * + * @param config + * {Object} An optional properties hash the object should use + * @param component + * {Object} An optional component to build from + * @return {google.maps.Rectangle} + */ + box : function(config, component) { + var c = component || this.components; + + config = config || {}; + + config.bounds = new google.maps.LatLngBounds(new google.maps.LatLng(c[0].y, c[0].x), new google.maps.LatLng(c[1].y, c[1].x)); + + return new google.maps.Rectangle(config); + }, + + /** + * Creates the framework's equivalent polygon geometry object. + * + * @param config + * {Object} An optional properties hash the object should use + * @param component + * {Object} An optional component to build from + * @return {google.maps.Polygon} + */ + polygon : function(config, component) { + var j, k, c, rings, verts; + + c = component || this.components; + + config = config || { + editable : false + // Editable geometry off by default + }; + + config.paths = []; + + rings = []; + for (j = 0; j < c.length; j += 1) { // For each ring... + + verts = []; + // NOTE: We iterate to one (1) less than the Array length to skip the last vertex + for (k = 0; k < c[j].length - 1; k += 1) { // For each vertex... + verts.push(new google.maps.LatLng(c[j][k].y, c[j][k].x)); + + } // eo for each vertex + + if (j !== 0) { // Reverse the order of coordinates in inner rings + if (config.reverseInnerPolygons == null || config.reverseInnerPolygons) { + verts.reverse(); + } + } + + rings.push(verts); + } // eo for each ring + + config.paths = config.paths.concat(rings); + + if (this.isRectangle) { + return (function() { + var bounds, v = 0; + + bounds = new google.maps.LatLngBounds(); + + for (v in rings[0]) { // Ought to be only 1 ring in a Rectangle + if (rings[0].hasOwnProperty(v)) { + bounds.extend(rings[0][v]); + } + } + + return new google.maps.Rectangle({ + bounds : bounds + }); + }()); + } else { + return new google.maps.Polygon(config); + } + }, + + /** + * Creates the framework's equivalent multipolygon geometry object. + * + * @param config + * {Object} An optional properties hash the object should use + * @return {Array} Array containing multiple google.maps.Polygon + */ + multipolygon : function(config) { + var i, c, arr; + + c = this.components; + + config = config || { + editable : false + }; + + config.path = []; + + arr = []; + + for (i = 0; i < c.length; i += 1) { + arr.push(this.construct.polygon(config, c[i])); + } + + return arr; + } + + }; + + /** + * @augments Wkt.Wkt A framework-dependent deconstruction method used to generate internal geometric representations from instances of + * framework geometry. This method uses object detection to attempt to classify members of framework geometry classes into the + * standard WKT types. + * @param obj + * {Object} An instance of one of the framework's geometry classes + * @param multiFlag + * {Boolean} If true, then the deconstructor will be forced to return a MultiGeometry (multipoint, multilinestring or + * multipolygon) + * @return {Object} A hash of the 'type' and 'components' thus derived, plus the WKT string of the feature. + */ + Wkt.Wkt.prototype.deconstruct = + function(obj, multiFlag) { + var features, i, j, verts, rings, sign, tmp, response, lat, lng; + + // Shortcut to signed area function (determines clockwise vs counter-clock) + if (google.maps.geometry) { + sign = google.maps.geometry.spherical.computeSignedArea; + } + ; + + // google.maps.LatLng ////////////////////////////////////////////////////// + if (obj.constructor === google.maps.LatLng) { + + response = { + type : 'point', + components : [ + { + x : obj.lng(), + y : obj.lat() + } + ] + }; + return response; + } + + // google.maps.Point ////////////////////////////////////////////////////// + if (obj.constructor === google.maps.Point) { + response = { + type : 'point', + components : [ + { + x : obj.x, + y : obj.y + } + ] + }; + return response; + } + + // google.maps.Marker ////////////////////////////////////////////////////// + if (obj.constructor === google.maps.Marker) { + response = { + type : 'point', + components : [ + { + x : obj.getPosition().lng(), + y : obj.getPosition().lat() + } + ] + }; + return response; + } + + // google.maps.Polyline //////////////////////////////////////////////////// + if (obj.constructor === google.maps.Polyline) { + + verts = []; + for (i = 0; i < obj.getPath().length; i += 1) { + tmp = obj.getPath().getAt(i); + verts.push({ + x : tmp.lng(), + y : tmp.lat() + }); + } + response = { + type : 'linestring', + components : verts + }; + return response; + + } + + // google.maps.Polygon ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Polygon) { + + rings = []; + + if (multiFlag === undefined) { + multiFlag = (function() { + var areas, l; + + l = obj.getPaths().length; + if (l <= 1) { // Trivial; this is a single polygon + return false; + } + + if (l === 2) { + // If clockwise*clockwise or counter*counter, i.e. + // (-1)*(-1) or (1)*(1), then result would be positive + if (sign(obj.getPaths().getAt(0)) * sign(obj.getPaths().getAt(1)) < 0) { + return false; // Most likely single polygon with 1 hole + } + + return true; + } + + // Must be longer than 3 polygons at this point... + areas = obj.getPaths().getArray().map(function(k) { + return sign(k) / Math.abs(sign(k)); // Unit normalization (outputs 1 or -1) + }); + + // If two clockwise or two counter-clockwise rings are found + // (at different indices)... + if (areas.indexOf(areas[0]) !== areas.lastIndexOf(areas[0])) { + multiFlag = true; // Flag for holes in one or more polygons + return true; + } + + return false; + + }()); + } + + for (i = 0; i < obj.getPaths().length; i += 1) { // For each polygon (ring)... + tmp = obj.getPaths().getAt(i); + verts = []; + for (j = 0; j < obj.getPaths().getAt(i).length; j += 1) { // For each vertex... + verts.push({ + x : tmp.getAt(j).lng(), + y : tmp.getAt(j).lat() + }); + + } + + if (!tmp.getAt(tmp.length - 1).equals(tmp.getAt(0))) { + if (i % 2 !== 0) { // In inner rings, coordinates are reversed... + verts.unshift({ // Add the first coordinate again for closure + x : tmp.getAt(tmp.length - 1).lng(), + y : tmp.getAt(tmp.length - 1).lat() + }); + + } else { + verts.push({ // Add the first coordinate again for closure + x : tmp.getAt(0).lng(), + y : tmp.getAt(0).lat() + }); + + } + + } + + if (obj.getPaths().length > 1 && i > 0) { + // If this and the last ring have the same signs... + if (sign(obj.getPaths().getAt(i)) > 0 && sign(obj.getPaths().getAt(i - 1)) > 0 + || sign(obj.getPaths().getAt(i)) < 0 + && sign(obj.getPaths().getAt(i - 1)) < 0 + && !multiFlag) { + // ...They must both be inner rings (or both be outer rings, in a multipolygon) + verts = [ + verts + ]; // Wrap multipolygons once more (collection) + } + + } + + if (i % 2 !== 0) { // In inner rings, coordinates are reversed... + verts.reverse(); + } + rings.push(verts); + } + + response = { + type : (multiFlag) ? 'multipolygon' : 'polygon', + components : rings + }; + return response; + + } + + // google.maps.Circle ////////////////////////////////////////////////////// + if (obj.constructor === google.maps.Circle) { + var point = obj.getCenter(); + var radius = obj.getRadius(); + verts = []; + var d2r = Math.PI / 180; // degrees to radians + var r2d = 180 / Math.PI; // radians to degrees + radius = radius / 1609; // meters to miles + var earthsradius = 3963; // 3963 is the radius of the earth in miles + var num_seg = 32; // number of segments used to approximate a circle + var rlat = (radius / earthsradius) * r2d; + var rlng = rlat / Math.cos(point.lat() * d2r); + + for (var n = 0; n <= num_seg; n++) { + var theta = Math.PI * (n / (num_seg / 2)); + lng = point.lng() + (rlng * Math.cos(theta)); // center a + radius x * cos(theta) + lat = point.lat() + (rlat * Math.sin(theta)); // center b + radius y * sin(theta) + verts.push({ + x : lng, + y : lat + }); + } + + response = { + type : 'polygon', + components : [ + verts + ] + }; + + return response; + + } + + // google.maps.LatLngBounds /////////////////////////////////////////////////// + if (obj.constructor === google.maps.LatLngBounds) { + + tmp = obj; + verts = []; + verts.push({ // NW corner + x : tmp.getSouthWest().lng(), + y : tmp.getNorthEast().lat() + }); + + verts.push({ // NE corner + x : tmp.getNorthEast().lng(), + y : tmp.getNorthEast().lat() + }); + + verts.push({ // SE corner + x : tmp.getNorthEast().lng(), + y : tmp.getSouthWest().lat() + }); + + verts.push({ // SW corner + x : tmp.getSouthWest().lng(), + y : tmp.getSouthWest().lat() + }); + + verts.push({ // NW corner (again, for closure) + x : tmp.getSouthWest().lng(), + y : tmp.getNorthEast().lat() + }); + + response = { + type : 'polygon', + isRectangle : true, + components : [ + verts + ] + }; + + return response; + + } + + // google.maps.Rectangle /////////////////////////////////////////////////// + if (obj.constructor === google.maps.Rectangle) { + + tmp = obj.getBounds(); + verts = []; + verts.push({ // NW corner + x : tmp.getSouthWest().lng(), + y : tmp.getNorthEast().lat() + }); + + verts.push({ // NE corner + x : tmp.getNorthEast().lng(), + y : tmp.getNorthEast().lat() + }); + + verts.push({ // SE corner + x : tmp.getNorthEast().lng(), + y : tmp.getSouthWest().lat() + }); + + verts.push({ // SW corner + x : tmp.getSouthWest().lng(), + y : tmp.getSouthWest().lat() + }); + + verts.push({ // NW corner (again, for closure) + x : tmp.getSouthWest().lng(), + y : tmp.getNorthEast().lat() + }); + + response = { + type : 'polygon', + isRectangle : true, + components : [ + verts + ] + }; + + return response; + + } + + // google.maps.Data Geometry Types ///////////////////////////////////////////////////// + + // google.maps.Data.Feature ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Data.Feature) { + return this.deconstruct.call(this, obj.getGeometry()); + } + + // google.maps.Data.Point ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Data.Point) { + // console.log('It is a google.maps.Data.Point'); + response = { + type : 'point', + components : [ + { + x : obj.get().lng(), + y : obj.get().lat() + } + ] + }; + return response; + } + + // google.maps.Data.LineString ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Data.LineString) { + verts = []; + // console.log('It is a google.maps.Data.LineString'); + for (i = 0; i < obj.getLength(); i += 1) { + vertex = obj.getAt(i); + verts.push({ + x : vertex.lng(), + y : vertex.lat() + }); + } + response = { + type : 'linestring', + components : verts + }; + return response; + } + + // google.maps.Data.Polygon ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Data.Polygon) { + var rings = []; + // console.log('It is a google.maps.Data.Polygon'); + for (i = 0; i < obj.getLength(); i += 1) { // For each ring... + ring = obj.getAt(i); + var verts = []; + for (j = 0; j < ring.getLength(); j += 1) { // For each vertex... + vertex = ring.getAt(j); + verts.push({ + x : vertex.lng(), + y : vertex.lat() + }); + } + verts.push({ + x : ring.getAt(0).lng(), + y : ring.getAt(0).lat() + }); + + rings.push(verts); + } + response = { + type : 'polygon', + components : rings + }; + + return response; + } + + // google.maps.Data.MultiPoint ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Data.MultiPoint) { + verts = []; + for (i = 0; i < obj.getLength(); i += 1) { + vertex = obj.getAt(i); + verts.push([ + { + x : vertex.lng(), + y : vertex.lat() + } + ]); + } + response = { + type : 'multipoint', + components : verts + }; + return response; + } + + // google.maps.Data.MultiLineString ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Data.MultiLineString) { + linestrings = []; + for (i = 0; i < obj.getLength(); i += 1) { + verts = []; + var linestring = obj.getAt(i); + for (j = 0; j < linestring.getLength(); j += 1) { + vertex = linestring.getAt(j); + verts.push({ + x : vertex.lng(), + y : vertex.lat() + }); + } + linestrings.push(verts); + } + response = { + type : 'multilinestring', + components : linestrings + }; + return response; + } + + // google.maps.Data.MultiPolygon ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Data.MultiPolygon) { + + var k = 0, polygons = []; + + // console.log('It is a google.maps.Data.MultiPolygon'); + for (k = 0; k < obj.getLength(); k += 1) { // For each multipolygon + var polygon = obj.getAt(k); + var rings = []; + for (i = 0; i < polygon.getLength(); i += 1) { // For each ring... + ring = polygon.getAt(i); + var verts = []; + for (j = 0; j < ring.getLength(); j += 1) { // For each vertex... + vertex = ring.getAt(j); + verts.push({ + x : vertex.lng(), + y : vertex.lat() + }); + } + verts.push({ + x : ring.getAt(0).lng(), + y : ring.getAt(0).lat() + }); + + rings.push(verts); + } + polygons.push(rings); + } + + response = { + type : 'multipolygon', + components : polygons + }; + return response; + } + + // google.maps.Data.GeometryCollection ///////////////////////////////////////////////////// + if (obj.constructor === google.maps.Data.GeometryCollection) { + + var objects = []; + for (k = 0; k < obj.getLength(); k += 1) { // For each multipolygon + var object = obj.getAt(k); + objects.push(this.deconstruct.call(this, object)); + } + // console.log('It is a google.maps.Data.GeometryCollection', objects); + response = { + type : 'geometrycollection', + components : objects + }; + return response; + } + + // Array /////////////////////////////////////////////////////////////////// + if (Wkt.isArray(obj)) { + features = []; + + for (i = 0; i < obj.length; i += 1) { + features.push(this.deconstruct.call(this, obj[i], true)); + } + + response = { + + type : (function() { + var k, type = obj[0].constructor; + + for (k = 0; k < obj.length; k += 1) { + // Check that all items have the same constructor as the first item + if (obj[k].constructor !== type) { + // If they don't, type is heterogeneous geometry collection + return 'geometrycollection'; + } + } + + switch (type) { + case google.maps.Marker: + return 'multipoint'; + case google.maps.Polyline: + return 'multilinestring'; + case google.maps.Polygon: + return 'multipolygon'; + default: + return 'geometrycollection'; + } + + }()), + components : (function() { + // Pluck the components from each Wkt + var i, comps; + + comps = []; + for (i = 0; i < features.length; i += 1) { + if (features[i].components) { + comps.push(features[i].components); + } + } + + return { + "comps" : comps + }; + }()) + + }; + response.components = response.components.comps; + return response; + + } + }; +}(Wkt || require('./wicket'))); diff --git a/ferramentas/editorgm/editorgm_compacto.js b/ferramentas/editorgm/editorgm_compacto.js new file mode 100755 index 0000000..af1c9da --- /dev/null +++ b/ferramentas/editorgm/editorgm_compacto.js @@ -0,0 +1 @@ +if(typeof(i3GEO)==='undefined'){var i3GEO={}}i3GEO.editorGM={iconePonto:function(sel){if(sel){return i3GEO.configura.locaplic+"/imagens/google/symbol_middot_y.png"}else{return i3GEO.configura.locaplic+"/imagens/google/symbol_middot.png"}},aguarde:"",iddiv:"",drawingManager:"",selectedShape:null,regioestemas:{},temasregioes:{},descregioes:[],inicia:function(iddiv){var i,n,ics;i3GEO.editorGM.iddiv=iddiv;$i(iddiv).innerHTML=i3GEO.editorGM.html();ics=$i(iddiv).getElementsByTagName("button");n=ics.length;i3GEO.barraDeBotoes.ativaBotoes();i3GEO.editorGM.comboRegiaoEditavel();for(i=0;i'+' '+' '+' '+' '+' '+' '+' '+' '+'
';return ins},ativaFoco:function(){i3GEO.util.mudaCursor(i3GEO.configura.cursores,"crosshair",i3GEO.Interface.IDMAPA,i3GEO.configura.locaplic);i3GEO.barraDeBotoes.ativaIcone("pan");i3GEO.editorGM.mudaicone();i3GEO.Interface.googlemaps.recalcPar()},setSelection:function(shape){if(shape.setEditable){shape.setEditable(!shape.editable)}else{shape.editable=true;shape.setIcon({url:i3GEO.editorGM.iconePonto(true)})}},clearSelection:function(){var i,n=i3GEO.desenho.googlemaps.shapes.length;for(i=0;i0){if(naoconfirma===false){var x=window.confirm($trad("excsel")+"?")}else{x=true}if(x){for(i=0;i1){for(i=1;i

'+$trad("camedit")+':

',i;ins+="";if(onde){onde.innerHTML=ins}return ins};i3GEO.php.listaTipoRegiao(temp,codigo_tipo_regiao)},comboRegiaoEditavelOnchange:function(combo){if(combo.value===""){return}i3GEO.editorGM.editarAtributos.desativa();if(i3GEO.arvoreDeCamadas.pegaTema(combo.value)!=""){i3GEO.editorGM.regioestemas["a"+combo.value]=combo.value;i3GEO.editorGM.temasregioes[combo.value]=combo.value}else{var temp=function(retorno){if(i3GEO.arvoreDeCamadas.pegaTema(retorno.layer)==""){i3GEO.php.adtema(i3GEO.atualiza,retorno.mapfile);i3GEO.editorGM.regioestemas["a"+combo.value]=retorno.layer;i3GEO.editorGM.temasregioes[retorno.layer]=combo.value}};i3GEO.php.mapfileTipoRegiao(temp,combo.value)}},mudaicone:function(botao){var c=$i(i3GEO.editorGM.iddiv),ci=c.getElementsByTagName("img"),n=ci.length,i;for(i=0;i0){i3GEO.editorGM.deleteSelectedShape(true)}pol=new google.maps.Marker({position:new google.maps.LatLng(obj.getPosition().ob,obj.getPosition().pb),map:i3GeoMap,icon:{url:i3GEO.editorGM.iconePonto(false)},clickable:true,zIndex:1,draggable:true,tema:tema,colunaid:colunaid,valorid:valorid,colunanome:colunanome,valornome:valornome,editable:false});google.maps.event.addListener(pol,'click',function(){i3GEO.editorGM.setSelection(pol)});i3GEO.desenho.googlemaps.shapes.push(pol);return}},salvaLimite:{inicia:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg($trad("meneditor3"));if(i3GEO.editorGM.selectedShapes().length>0){var temp=i3GEO.editorGM.toWKT(i3GEO.editorGM.selectedShapes()[0]);i3GEO.mapa.dialogo.wkt2layer(temp)}return}var wkt,temp,s=i3GEO.editorGM.selectedShapes(),n=s.length,janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}if(n==1){s=s[0];temp=function(retorno){i3GEO.editorGM.deleteSelectedShape(true);i3GEO.Interface.redesenha()};if(i3GEO.editorGM.descregioes["a_"+$i("i3geoCartoRegioesEditaveis").value].tema!=undefined){wkt=i3GEO.editorGM.toWKT(i3GEO.editorGM.selectedShapes()[0]);if(wkt&&wkt!=""){if(s.valorid==""){p=i3GEO.configura.locaplic+"/ferramentas/editortema/exec.php?funcao=adicionaGeometria&g_sid="+i3GEO.configura.sid;cpJSON.call(p,"foo",temp,"&tema="+$i("i3geoCartoRegioesEditaveis").value+"&wkt="+wkt)}else{p=i3GEO.configura.locaplic+"/ferramentas/editortema/exec.php?funcao=atualizaGeometria&g_sid="+i3GEO.configura.sid;cpJSON.call(p,"foo",temp,"&idunico="+s.valorid+"&tema="+$i("i3geoCartoRegioesEditaveis").value+"&wkt="+wkt)}}}else{i3GEO.editorGM.salvaLimite.criaJanelaFlutuante(i3GEO.editorGM.salvaLimite.html(s.colunaid,s.valorid,s.colunanome,s.valornome));new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao1",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.gravaDados(true)}}});new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao2",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.gravaDados(false)}}});new YAHOO.widget.Button("i3GEOFmetaestati3GEO.editorGMBotao3",{onclick:{fn:function(){i3GEO.editorGM.salvaLimite.excluiPoligono()}}})}}else{i3GEO.janela.tempoMsg("Selecione uma figura")}},html:function(colunaIdElemento,valorIdElemento,colunaNomeElemento,valorNomeElemento){var ins=''+'

Se o valor do código for vazio, será criado um novo elemento. Caso contrário, os valores atualmente registrados serão atualizados.

'+'

Edite os atributos:

'+''+''+''+''+'

Código:

'+'

'+'

Nome:

'+'

'+'

Escolha a operação desejada:

'+''+' '+'

';return ins},criaJanelaFlutuante:function(html){var titulo,cabecalho,minimiza,janela;cabecalho=function(){};minimiza=function(){i3GEO.janela.minimiza("salvaLimite")};titulo="
"+$trad("sdados")+"
";janela=i3GEO.janela.cria("300px","265px","","","",titulo,"salvaLimite",true,"hd",cabecalho,minimiza);$i("salvaLimite_corpo").style.backgroundColor="white";$i("salvaLimite_corpo").innerHTML=html;YAHOO.util.Event.addListener(janela[0].close,"click",i3GEO.editorGM.mudaicone)},gravaDados:function(comwkt){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg($trad("meneditor3"));return}if(!window.confirm($trad("sdados")+"?")){return}var p,codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,identificadornovo=$i("inputIdentificadorNovoElemento").value,identificador=$i("inputIdentificadorElemento").value,nome=$i("inputNomeNovoElemento").value,wkt="",temp=function(retorno){i3GEO.editorGM.deleteSelectedShape(true);var janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}i3GEO.Interface.redesenha()};if(comwkt===true){wkt=i3GEO.editorGM.toWKT(i3GEO.editorGM.selectedShapes()[0])}else{if(identificadornovo===identificador&&$i("inputNomeElemento").value===nome){i3GEO.janela.tempoMsg($trad("meneditor4"));return}}p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=";cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificadornovo="+identificadornovo+"&identificador="+identificador+"&nome="+nome+"&wkt="+wkt)},excluiPoligono:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg($trad("meneditor3"));return}if(!window.confirm($trad("excsel")+"?")){return}var codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,identificador=$i("inputIdentificadorElemento").value,temp=function(retorno){i3GEO.editorGM.deleteSelectedShape(true);var janela=YAHOO.i3GEO.janela.manager.find("salvaLimite");if(janela){janela.destroy()}i3GEO.Interface.redesenha()},p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=mantemDadosRegiao&tipo=excluir";if(identificador===""){i3GEO.janela.tempoMsg($trad("meneditor5"))}else{cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador="+identificador)}}},editarAtributos:{aliascolunas:"",x:"",y:"",ativa:function(botao){if($i("i3geoCartoRegioesEditaveis").value==""){i3GEO.janela.tempoMsg("Escolha uma regiao");return}i3GEO.editorGM.mudaicone(botao);i3GEO.eventos.adicionaEventos("MOUSECLIQUE",["i3GEO.editorGM.editarAtributos.captura()"]);var janela=YAHOO.i3GEO.janela.manager.find("editaAtributos");if(janela){$i("editarAtributosForm").innerHTML=""}else{i3GEO.editorGM.editarAtributos.criaJanelaFlutuante(i3GEO.editorGM.editarAtributos.html());i3GEO.editorGM.editarAtributos.comboVariaveis()}},desativa:function(){var janela=YAHOO.i3GEO.janela.manager.find("editaAtributos");if(janela){janela.destroy()}},criaJanelaFlutuante:function(html){var janela,titulo,cabecalho,minimiza;cabecalho=function(){};minimiza=function(){i3GEO.janela.minimiza("editaAtributos")};titulo="
"+$trad("atrib")+"
";janela=i3GEO.janela.cria("250px","265px","","","",titulo,"editaAtributos",false,"hd",cabecalho,minimiza);$i("editaAtributos_corpo").style.backgroundColor="white";$i("editaAtributos_corpo").innerHTML=html;i3GEO.janela.tempoMsg($trad("meneditor6"));YAHOO.util.Event.addListener(janela[0].close,"click",i3GEO.editorGM.mudaicone)},html:function(){var ins=''+'

'+'

'+'

'+'

'+'';return ins},comboVariaveis:function(){var temp=function(dados){var i,n=dados.length,ins='';ins+='

Escolha uma variável para editar

';ins+="";$i("editarAtributosVariaveis").innerHTML=ins};i3GEO.php.listaVariavel(temp,"i3geo_metaestat")},comboMedidasVariavel:function(comboMedidas){var temp=function(dados){var i,n=dados.length,ins='';ins+='

Escolha uma medida da variável para editar

';ins+="";$i("editarAtributosMedidasVariavel").innerHTML=ins};if(comboMedidas.value!==""){i3GEO.php.listaMedidaVariavel(comboMedidas.value,temp)}},captura:function(){if(!YAHOO.i3GEO.janela.manager.find("editaAtributos")){i3GEO.editorGM.mudaicone(botao);return}i3GEO.editorGM.editarAtributos.x=objposicaocursor.ddx;i3GEO.editorGM.editarAtributos.y=objposicaocursor.ddy;i3GEO.editorGM.editarAtributos.pegaDados()},pegaDados:function(){var p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=listaAtributosMedidaVariavelXY",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,temp=function(retorno){var atr=retorno.atributos,i=0,n=atr.dados.length,j=0,idunico="",nj=atr.aliascolunas.length,ins=""+'

Limite geográfico escolhido:

'+'

Nome: '+retorno.regiao.nomeregiao+'

'+'

Código: '+retorno.regiao.identificador_regiao+'

'+''+'

Atributos:

'+''+' ';$i("editarAtributosRegiao").innerHTML=ins;ins="";for(i=0;i

excluir

";for(j=0;j'+atr.aliascolunas[j]+':
'+'

'}}}$i("editarAtributosForm").innerHTML=ins;new YAHOO.widget.Button("editarAtributosAdicionar",{onclick:{fn:function(){var novoel=document.createElement("div"),ins="

";for(j=0;j'+atr.aliascolunas[j]+' - '+atr.descricao[j]+':
'+'

'}}ins+="
";novoel.innerHTML=ins;$i("editarAtributosForm").appendChild(novoel)}}});new YAHOO.widget.Button("editarAtributosSalvar",{onclick:{fn:function(){i3GEO.editorGM.editarAtributos.salva()}}})};cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&id_medida_variavel="+id_medida_variavel+"&x="+i3GEO.editorGM.editarAtributos.x+"&y="+i3GEO.editorGM.editarAtributos.y)},excluir:function(id){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Você precisa fazer login para usar essa opção");return}var p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=excluiAtributosMedidaVariavel",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,identificador_regiao=$i("editarAtributosidentificador_regiao").value,temp=function(retorno){i3GEO.editorGM.editarAtributos.pegaDados();i3GEO.janela.fechaAguarde("aguardeSalvaAtributos")};i3GEO.janela.AGUARDEMODAL=true;i3GEO.janela.abreAguarde("aguardeSalvaAtributos","Salvando...");i3GEO.janela.AGUARDEMODAL=false;cpJSON.call(p,"foo",temp,"&codigo_tipo_regiao="+codigo_tipo_regiao+"&identificador_regiao="+identificador_regiao+"&id_medida_variavel="+id_medida_variavel+"&id="+id)},salva:function(){if(i3GEO.login.verificaCookieLogin()===false){i3GEO.janela.tempoMsg("Você precisa fazer login para usar essa opção");return}var container=$i("editarAtributosForm"),divsT=container.getElementsByTagName("div"),n=divsT.length,i=0,dv="",inputs="",codigo_tipo_regiao=$i("i3geoCartoRegioesEditaveis").value,id_medida_variavel=$i("editarAtributosComboMedidas").value,identificador_regiao=$i("editarAtributosidentificador_regiao").value,nj,j,colunas=[],colunasT=[],valores=[],valoresT=[],idsunicosT=[],p=i3GEO.configura.locaplic+"/admin/php/metaestat.php?funcao=salvaAtributosMedidaVariavel",re=new RegExp("idunico_","g"),temp=function(retorno){i3GEO.editorGM.editarAtributos.pegaDados();i3GEO.editorGM.atualizaCamadasMetaestat();i3GEO.janela.fechaAguarde("aguardeSalvaAtributos")};if(codigo_tipo_regiao==""){i3GEO.janela.tempoMsg("Problemas com o codigo da regiao");return}if(id_medida_variavel==""){i3GEO.janela.tempoMsg("Escolha uma medida");return}if(identificador_regiao==""){i3GEO.janela.tempoMsg("Problemas com o identificador da regiao");return}for(i=0;iAjuda ";i3GEO.janela.cria("400px","350px","","","",titulo,"editaAtributosAjuda",false,"hd",cabecalho,minimiza);$i("editaAtributosAjuda_corpo").style.backgroundColor="white";html+=""+""+""+""+""+""+""+""+""+""+""+""+""+"
Clique no mapa para traçar um polígono novo. Cada clique corresponde a um vértice do polígono. Para encerrar o traçado utilize um duplo clique. Após traçar um novo polígono pode-se selecioná-lo novamente e editar os vértices, se for necessário, ou mesmo apagar o polígono por completo. O novo polígono só será salvo por meio da opção específica para isso.
Utilize essa opção para capturar os vértices de um polígono existente. O resultado da captura é uma figura que pode ser editada, ou seja, os vértices podem ser modificados de posição ou mesmo removidos. Após editar, salve o novo polígono.
Após ativar essa opção clique no mapa sobre uma figura existente (que tenha sido capturada ou digtalizada). A figura passará então para o estado de 'selecionada' podendo ser utilizada por outras ferramentas de edição.
Remove da tela a figura que estiver selecionada. Essa operação não apaga o polígono do banco de dados, apenas remove do modo de edição.
Salva no banco de dados a figura que estiver selecionada. Essa opção altera apenas os atributos do limite geográfico, não afetando os valores armazenados em cada medida de variável.
Abre um formulário que permite alterar os valores de uma medida de variável relacionada a uma determinada região. Após abrir o formulário, clique no mapa sobre a região desejada, mas escolha a medida da variável primeiro. Os valores já existentes poderão então ser alterados ou podem ser adicionados novos.
";$i("editaAtributosAjuda_corpo").innerHTML=html}};google.maps.Marker.prototype.type='marker';google.maps.Polyline.prototype.type='polyline';google.maps.Polygon.prototype.type='polygon';google.maps.Rectangle.prototype.type='rectangle';google.maps.Circle.prototype.type='circle';(function(Wkt){Wkt.Wkt.prototype.isRectangle=false;Wkt.Wkt.prototype.construct={point:function(config,component){var c=component||this.components;config=config||{};config.position=new google.maps.LatLng(c[0].y,c[0].x);return new google.maps.Marker(config)},multipoint:function(config){var i,c,arr;c=this.components;config=config||{};arr=[];for(i=0;i1&&i>0){if(sign(obj.getPaths().getAt(i))>0&&sign(obj.getPaths().getAt(i-1))>0||sign(obj.getPaths().getAt(i))<0&&sign(obj.getPaths().getAt(i-1))<0&&!multiFlag){verts=[verts]}}if(i%2!==0){verts.reverse()}rings.push(verts)}response={type:(multiFlag)?'multipolygon':'polygon',components:rings};return response}if(obj.constructor===google.maps.Circle){var point=obj.getCenter();var radius=obj.getRadius();verts=[];var d2r=Math.PI/180; var r2d=180/Math.PI; radius=radius/1609; var earthsradius=3963;var num_seg=32;var rlat=(radius/earthsradius)*r2d;var rlng=rlat/Math.cos(point.lat()*d2r);for(var n=0;n<=num_seg;n++){var theta=Math.PI*(n/(num_seg/2));lng=point.lng()+(rlng*Math.cos(theta));lat=point.lat()+(rlat*Math.sin(theta));verts.push({x:lng,y:lat})}response={type:'polygon',components:[verts]};return response}if(obj.constructor===google.maps.LatLngBounds){tmp=obj;verts=[];verts.push({x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()});verts.push({x:tmp.getNorthEast().lng(),y:tmp.getNorthEast().lat()});verts.push({x:tmp.getNorthEast().lng(),y:tmp.getSouthWest().lat()});verts.push({x:tmp.getSouthWest().lng(),y:tmp.getSouthWest().lat()});verts.push({x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()});response={type:'polygon',isRectangle:true,components:[verts]};return response}if(obj.constructor===google.maps.Rectangle){tmp=obj.getBounds();verts=[];verts.push({x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()});verts.push({x:tmp.getNorthEast().lng(),y:tmp.getNorthEast().lat()});verts.push({x:tmp.getNorthEast().lng(),y:tmp.getSouthWest().lat()});verts.push({x:tmp.getSouthWest().lng(),y:tmp.getSouthWest().lat()});verts.push({x:tmp.getSouthWest().lng(),y:tmp.getNorthEast().lat()});response={type:'polygon',isRectangle:true,components:[verts]};return response}if(obj.constructor===google.maps.Data.Feature){return this.deconstruct.call(this,obj.getGeometry())}if(obj.constructor===google.maps.Data.Point){response={type:'point',components:[{x:obj.get().lng(),y:obj.get().lat()}]};return response}if(obj.constructor===google.maps.Data.LineString){verts=[];for(i=0;iArcGIS' + }) + ] + }) + }), + e_ims : new ol.layer.Tile( + { + title : "ESRI Imagery World 2D", + visible : false, + isBaseLayer : true, + name : "ims", + source : new ol.source.TileArcGISRest( + { + url : "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer", + attributions : [ + new ol.Attribution( + { + html : 'Tiles © ArcGIS' + }) + ] + }) + }), + e_wsm : new ol.layer.Tile( + { + title : "ESRI World Street Map", + visible : false, + isBaseLayer : true, + name : "wsm", + source : new ol.source.TileArcGISRest( + { + url : "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer", + attributions : [ + new ol.Attribution( + { + html : 'Tiles © ArcGIS' + }) + ] + }) + }), + ol_mma : new ol.layer.Tile({ + title : "Base carto MMA", + visible : false, + isBaseLayer : true, + name : "bra", + source : new ol.source.TileWMS({ + url : "http://mapas.mma.gov.br/cgi-bin/mapserv?map=/opt/www/html/webservices/baseraster.map&", + params : { + 'layers' : "baseraster", + 'srs' : "EPSG:4326", + 'format' : "image/png" + } + }) + }), + ol_wms : new ol.layer.Tile( + { + title : "ESRI World Street Map", + visible : false, + isBaseLayer : true, + name : "wsm", + source : new ol.source.TileArcGISRest( + { + url : "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer", + attributions : [ + new ol.Attribution( + { + html : 'Tiles © ArcGIS' + }) + ] + }) + }), + fundo : "e_ims,e_wsm,ol_mma,ol_wms,top_wms", + */ + kml : [], + layersIniciais : [], + //essa configuracao dos botoes afeta apenas o mashup + //para a configuração do editor dentro de um mapa normal, veja i3GEO.barraDebotoes.editor.ativaPainel() + botoes : { + 'pan' : true, + 'zoombox' : true, + 'zoomtot' : true, + 'zoomin' : true, + 'zoomout' : true, + 'distancia' : true, + 'area' : true, + 'identifica' : true, + 'linha' : true, + 'ponto' : true, + 'poligono' : true, + 'texto' : true, + 'edita' : true, + 'listag' : true, + 'corta' : true, + 'apaga' : true, + 'procura' : true, + 'selecao' : true, + 'selecaotudo' : true, + 'salva' : true, + 'ajuda' : true, + 'propriedades' : true, + 'fecha' : false, + 'tools' : true, + 'undo' : false, + 'frente' : false, + 'legenda' : true, + 'rodadomouse' : true + }, + pontos : [], + marca : "../pacotes/openlayers/img/marker-gold.png", + controles : [], + tiles : true, + incluilayergrafico : true, + ativalayerswitcher : false, + ativarodadomouse : true, + legendahtml : false, + numzoom : 12, + minresolution : 0.703125, + maxext : "", + mapext : [-76.5125927, -39.3925675209, -29.5851853, 9.49014852081], + mapa : "", + //ids das features graficas selecionadas + idsSelecionados : [], + //backup das features + featuresBackup : [], + //utilizado pelo mashup + inicia : function() { + // ativabotoes e boolean + if(i3GEO.editorOL.controles.length === 0){ + i3GEO.editorOL.controles = [ + new ol.interaction.DoubleClickZoom(), + new ol.interaction.KeyboardPan(), + new ol.interaction.KeyboardZoom(), + new ol.interaction.MouseWheelZoom(), + new ol.interaction.PinchRotate(), + new ol.interaction.PinchZoom(), + new ol.interaction.DragZoom(), + new ol.interaction.DragPan(), + new ol.control.Zoom(), + new ol.control.ZoomSlider(), + new ol.control.ScaleLine() + ]; + } + var alayers = [], fundo = (i3GEO.editorOL.fundo).split(","), nfundo = fundo.length, ncontroles = + i3GEO.editorOL.controles.length, i, n, temp; + + // TODO layerswitcher no OL3 + /* + * if (i3GEO.editorOL.ativalayerswitcher === "false") { i3GEO.editorOL.ativalayerswitcher = false; } if + * (i3GEO.editorOL.ativalayerswitcher === "true") { i3GEO.editorOL.ativalayerswitcher = true; } + */ + if (i3GEO.editorOL.ativarodadomouse === "false") { + i3GEO.editorOL.ativarodadomouse = false; + } + if (i3GEO.editorOL.ativarodadomouse === "true") { + i3GEO.editorOL.ativarodadomouse = true; + } + if (i3GEO.editorOL.legendahtml === "false") { + i3GEO.editorOL.legendahtml = false; + } + if (i3GEO.editorOL.legendahtml === "true") { + i3GEO.editorOL.legendahtml = true; + } + + if (i3GEO.editorOL.incluilayergrafico === "false") { + i3GEO.editorOL.incluilayergrafico = false; + } + if (i3GEO.editorOL.incluilayergrafico === "true") { + i3GEO.editorOL.incluilayergrafico = true; + } + if (i3GEO.editorOL.incluilayergrafico === true) { + if (!i3GEO.desenho.layergrafico) { + i3GEO.editorOL.criaLayerGrafico(); + } + } else { + i3GEO.desenho.layergrafico = ""; + i3GEO.editorOL.botoes.linha = false; + i3GEO.editorOL.botoes.ponto = false; + i3GEO.editorOL.botoes.poligono = false; + i3GEO.editorOL.botoes.texto = false; + i3GEO.editorOL.botoes.edita = false; + i3GEO.editorOL.botoes.listag = false; + i3GEO.editorOL.botoes.corta = false; + i3GEO.editorOL.botoes.apaga = false; + i3GEO.editorOL.botoes.selecao = false; + i3GEO.editorOL.botoes.selecaotudo = false; + i3GEO.editorOL.botoes.salva = false; + i3GEO.editorOL.botoes.propriedades = false; + i3GEO.editorOL.botoes.fecha = false; + i3GEO.editorOL.botoes.tools = false; + i3GEO.editorOL.botoes.undo = false; + i3GEO.editorOL.botoes.frente = false; + } + if (i3GEO.editorOL.mapa === "") { + alert("O objeto i3GEO.editorOL.mapa nao existe. Precisa ser criado com new OpenLayers.Map()"); + return; + } + for (i = 0; i < ncontroles; i++) { + i3GEO.editorOL.mapa.addControl(i3GEO.editorOL.controles[i]); + } + if (i3GEO.editorOL.fundo != "") { + for (i = nfundo - 1; i >= 0; i--) { + if (fundo[i] != "") { + try { + i3GEO.editorOL[fundo[i]].transitionEffect = 'resize'; + i3GEO.editorOL[fundo[i]].setVisibility(false); + i3GEO.editorOL[fundo[i]].singleTile = false; + alayers.push(i3GEO.editorOL[fundo[i]]); + } catch (e) { + if (alayers[0]) { + alayers[0].setVisibility(true); + } + } + } + } + } + i3GEO.editorOL.mapa.addLayers(alayers); + if (i3GEO.editorOL.layersIniciais !== "") { + n = i3GEO.editorOL.layersIniciais.length; + for (i = 0; i < n; i++) { + // singleTile deve ser definido em cada layer + // i3GEO.editorOL.layersIniciais[i].singleTile = single; + i3GEO.editorOL.mapa.addLayer(i3GEO.editorOL.layersIniciais[i]); + } + } + if (!i3GEO.desenho.layergrafico && i3GEO.editorOL.incluilayergrafico === true) { + i3GEO.editorOL.mapa.addLayers([ + i3GEO.desenho.layergrafico + ]); + } + i3GEO.editorOL.adicionaKml(); + i3GEO.editorOL.adicionaMarcas(); + + i3GEO.editorOL.coordenadas(); + i3GEO.editorOL.criaJanelaBusca(); + i3GEO.editorOL.criaBotoes(i3GEO.editorOL.botoes); + if (i3GEO.editorOL.ativalayerswitcher === true) { + i3GEO.editorOL.ativaLayerSwitcher(); + } + if (i3GEO.editorOL.ativarodadomouse === false) { + i3GEO.editorOL.desativaRodaDoMouse(); + } + + if (i3GEO.editorOL.numzoom !== "") { + i3GEO.editorOL.mapa.setOptions({ + numZoomLevels : i3GEO.editorOL.numzoom + }); + } + if (i3GEO.editorOL.maxext !== "") { + i3GEO.editorOL.mapa.setOptions({ + maxExtent : i3GEO.editorOL.maxext + }); + } + if (i3GEO.editorOL.mapext != "") { + var m = i3GEO.util.extGeo2OSM(i3GEO.editorOL.mapext); + i3GEO.editorOL.mapa.zoomToExtent(m); + } else { + i3GEO.editorOL.mapa.zoomToMaxExtent(); + } + i3GEO.editorOL.sobeLayersGraficos(); + // evita que botoes de opcoes propaguem + // o mashup utiliza esse tipo de botal junto ao nome do layer + temp = i3GEO.editorOL.pegaControle("OpenLayers.Control.LayerSwitcher"); + if (temp) { + temp = temp.dataLayersDiv.getElementsByTagName("label"); + n = temp.length; + for (i = 0; i < n; i++) { + // YAHOO.util.Event.addListener(temp[i], "click", YAHOO.util.Event.stopEvent); + temp[i].onclick = ""; + } + } + }, + criaLayerGrafico : function() { + i3GEO.desenho.openlayers.criaLayerGrafico(); + }, + layersLigados : function() { + var l, layers = i3GEO.editorOL.mapa.getLayers(), nlayers = layers.getLength(), ins = [], i; + for (i = 0; i < nlayers; i++) { + l = layers.item(i); + if (l.getVisible() === true) { + ins.push(l); + } + } + return ins; + }, + layerPorParametro : function(parametro, valor) { + var layers = i3GEO.editorOL.mapa.layers, nlayers = layers.length, ins = [], i; + for (i = 0; i < nlayers; i++) { + if (layers[i][parametro] || layers[i][parametro.toLowerCase()]) { + if (layers[i][parametro] === valor || layers[i][parametro.toLowerCase()] === valor) { + ins.push(layers[i]); + } + } else { + if (layers[i].params && layers[i].params[parametro] && layers[i].params[parametro] === valor) { + ins.push(layers[i]); + } + } + } + return ins; + }, + // layers clonados sao copias WMS de layers TMS necessarios para realizar o getfeature + // sao criados quando o layer e adicionado + layersClonados : function(paramsLayers) { + var layers = i3GEO.editorOL.mapa.layers, nlayers = layers.length, i; + for (i = 0; i < nlayers; i++) { + if (layers[i].params && layers[i].params.CLONETMS === paramsLayers) { + return (layers[i]); + } + } + return false; + }, + layertms2wms : function(tms) { + var layer, url; + url = tms.url.replace("&cache=sim", "&DESLIGACACHE=sim"); + url = url.replace("&Z=${z}&X=${x}&Y=${y}", ""); + url = url.replace("Z=${z}&X=${x}&Y=${y}", ""); + layer = new OpenLayers.Layer.WMS(tms.layername + "_clone", url, { + layers : tms.name, + transparent : true + }, { + gutter : 0, + isBaseLayer : false, + displayInLayerSwitcher : false, + opacity : 1, + visibility : true, + singleTile : true + }); + // i3GEO.editorOL.mapa.addLayer(layer); + return layer; + }, + // remove o layer clonado com layertms2wms + removeClone : function() { + var nome = i3GEO.editorOL.layerAtivo().layername + "_clone", busca = i3GEO.editorOL.mapa.getLayersByName(nome); + if (busca.length > 0) { + i3GEO.editorOL.mapa.removeLayer(i3GEO.editorOL.mapa.getLayersByName(camada.name)[0], false); + } + }, + coordenadas : function() { + // + // substitui o controle que mostra as coordenadas + // + var idcoord = i3GEO.editorOL.mapa.getControlsBy("separator", " "); + if (idcoord[0]) { + i3GEO.editorOL.mapa.events.register("mousemove", i3GEO.editorOL.mapa, function(e) { + var p, lonlat, d; + if (navm) { + p = new OpenLayers.Pixel(e.x, e.y); + } else { + p = e.xy; + } + // altera o indicador de localizacao + lonlat = i3GEO.editorOL.mapa.getLonLatFromPixel(p); + lonlat = i3GEO.util.projOSM2Geo(lonlat); + d = i3GEO.calculo.dd2dms(lonlat.lon, lonlat.lat); + try { + $i(idcoord[0].id).innerHTML = "Long: " + d[0] + "
Lat: " + d[1]; + } catch (e) { + if (typeof (console) !== 'undefined') { + console.error(e); + } + } + }); + } + }, + criaJanelaBusca : function() { + var layers = i3GEO.editorOL.layersLigados(), nlayers = layers.length, i, ins, combo = + ""; + ins = "
" + $trad("a7") + ":
" + combo; + ins += "
" + $trad("x64") + ":
"; + ins += "
" + $trad("t23") + ":
"; + ins += "

"; + ins += "
'" + $trad("result") + "':
"; + try { + YAHOO.namespace("procura.container"); + YAHOO.procura.container.panel = new YAHOO.widget.Panel("panelprocura", { + zIndex : 2000, + iframe : false, + width : "250px", + visible : false, + draggable : true, + close : true + }); + YAHOO.procura.container.panel.setHeader("Encontre no mapa"); + YAHOO.procura.container.panel.setBody(ins); + YAHOO.procura.container.panel.setFooter(""); + YAHOO.procura.container.panel.render(document.body); + YAHOO.procura.container.panel.center(); + + document.getElementById("i3GEOOLbotaoBusca").onclick = + function() { + var layer = i3GEO.editorOL.layerAtivo(), item = document.getElementById("i3GEOOLbuscaItem").value, palavra = + document.getElementById("i3GEOOLpalavraBusca").value; + if (item === "" || palavra === "") { + alert("Escolha o item e o texto de busca"); + return; + } + i3GEO.editorOL.busca(layer, item, palavra, "i3GEOOLcomboresultado"); + }; + document.getElementById("i3GEOOLlistaTemasBusca").onchange = function() { + i3GEO.editorOL.ativaTema(this.value); + document.getElementById("i3GEOOLcomboitens").innerHTML = "..."; + i3GEO.editorOL.listaItens(i3GEO.editorOL.layerAtivo(), "i3GEOOLcomboitens", "i3GEOOLbuscaItem"); + }; + } catch (e) { + } + }, + criaComboTemas : function() { + var layers = i3GEO.editorOL.layersLigados(), nlayers = layers.length, i, nometema = "", combo = + ""; + return combo; + }, + atualizaJanelaAtivaTema : function() { + var combo = i3GEO.editorOL.criaComboTemas(); + YAHOO.temaativo.container.panel.setBody(combo); + }, + criaJanelaAtivaTema : function() { + var temp; + if (!document.getElementById("paneltemaativo")) { + YAHOO.namespace("temaativo.container"); + YAHOO.temaativo.container.panel = new YAHOO.widget.Panel("paneltemaativo", { + zIndex : 20000, + iframe : true, + width : "250px", + visible : false, + draggable : true, + close : true + }); + YAHOO.temaativo.container.panel.setBody(""); + if (i3GEO && typeof i3GEO != undefined && i3GEO != "") { + YAHOO.temaativo.container.panel + .setHeader("Tema ativo
"); + } else { + YAHOO.temaativo.container.panel.setHeader($trad("tativo")); + } + YAHOO.temaativo.container.panel.setFooter(""); + YAHOO.temaativo.container.panel.render(document.body); + YAHOO.temaativo.container.panel.show(); + YAHOO.temaativo.container.panel.center(); + i3GEO.editorOL.atualizaJanelaAtivaTema(); + YAHOO.util.Event.addListener(YAHOO.temaativo.container.panel.close, "click", function() { + i3GEO.editorOL.marcaBotao(); + if (i3GEO.eventos) { + i3GEO.eventos.adicionaEventos("ATUALIZAARVORECAMADAS", [ + "i3GEO.editorOL.atualizaJanelaAtivaTema()" + ]); + } + }); + if (i3GEO && typeof i3GEO != undefined && i3GEO != "") { + if (i3GEO.eventos) { + i3GEO.eventos.adicionaEventos("ATUALIZAARVORECAMADAS", [ + "i3GEO.editorOL.atualizaJanelaAtivaTema()" + ]); + } + } + temp = $i("paneltemaativo_minimizaCabecalho"); + if (temp) { + temp.onclick = function() { + i3GEO.janela.minimiza("paneltemaativo"); + }; + } + } else { + YAHOO.temaativo.container.panel.show(); + i3GEO.editorOL.atualizaJanelaAtivaTema(); + } + }, + ativaTema : function(id) { + document.getElementById("i3GEOOLlistaTemasAtivos").value = id; + }, + layerAtivo : function() { + var id = document.getElementById("i3GEOOLlistaTemasAtivos"); + if (id) { + id = id.value; + } else { + id = i3GEO.temaAtivo; + } + if (id == "") { + return []; + } else { + return i3GEO.editorOL.layersLigados()[id]; + } + }, + listaItens : function(layer, idonde, idobj) { + if (!layer) { + return; + } + if (!layer.params) { + return; + } + var u = layer.url + "&request=describefeaturetype&service=wfs&version=1.0.0"; + u += "&typename=" + layer.params.LAYERS; + document.body.style.cursor = "wait"; + document.getElementById("i3geoMapa").style.cursor = "wait"; + OpenLayers.Request.issue({ + method : "GET", + url : u, + callback : function(retorno) { + document.body.style.cursor = "default"; + document.getElementById("i3geoMapa").style.cursor = "default"; + var fromgml = new OpenLayers.Format.WFSDescribeFeatureType({ + geometryName : "msGeometry" + }), gml = fromgml.read(retorno.responseText), prop = gml.featureTypes[0].properties, nprop = prop.length, i, combo = + ""; + document.getElementById(idonde).innerHTML = combo; + }, + failure : function() { + document.body.style.cursor = "default"; + document.getElementById("i3geoMapa").style.cursor = "default"; + alert("Erro"); + } + }); + }, + busca : function(layer, item, palavra, onde) { + document.body.style.cursor = "wait"; + document.getElementById("i3geoMapa").style.cursor = "wait"; + var u = layer.url + "&request=getfeature&service=wfs&version=1.0.0"; + u = u.replace("Z=${z}&X=${x}&Y=${y}", ""); + u += "&OUTPUTFORMAT=gml2&typename=" + layer.params.LAYERS; + u += + "&filter=" + item + + "*" + + palavra + + "*"; + document.body.style.cursor = "wait"; + document.getElementById("i3geoMapa").style.cursor = "wait"; + document.getElementById(onde).innerHTML = "..."; + OpenLayers.Request.issue({ + method : "GET", + url : u, + callback : function(retorno) { + document.body.style.cursor = "default"; + document.getElementById("i3geoMapa").style.cursor = "default"; + var fromgml = new OpenLayers.Format.GML({ + geometryName : "msGeometry" + }), gml = fromgml.read(retorno.responseText), ngml = gml.length, i, ins = + ""; + document.getElementById(onde).innerHTML = ins; + }, + failure : function() { + document.body.style.cursor = "default"; + document.getElementById("i3geoMapa").style.cursor = "default"; + alert("Erro"); + } + }); + }, + zoomPara : function(bbox) { + var b = new OpenLayers.Bounds.fromString(bbox); + i3GEO.editorOL.mapa.zoomToExtent(b); + }, + mostraLegenda : function() { + //TODO testar no mashup + var layers = i3GEO.editorOL.layersLigados(), nlayers = layers.length, ins = "", i, icone = "", url, fers, f = "", fer = ""; + for (i = 0; i < nlayers; i++) { + try { + if (layers[i].get("isBaseLayer") === false) { + url = layers[i].getFullRequestString({ + "request" : "getlegendgraphic" + }); + //i3GEO.editorOL.mapa.getLayers().item(0).getSource().getUrls()[0] + icone = ""; + if (i3GEO.editorOL.legendahtml === true) { + // os parametros FORMAT e SERVICE sao inseridos de forma redundante para grantir + // caso seja um TMS + url = url.replace("image%2Fpng", "text/html") + "&FORMAT=text/html&SERVICE=WMS"; + // verifica se a camada veio de um plugin de classe_plugini3geo + // e insere o icone se for necessario + if (layers[i].options.plugini3geo) { + if (layers[i].params.LAYERS) { + // wms + icone = i3GEO.pluginI3geo[layers[i].options.plugini3geo].iconeArvoreDeCamadas(layers[i].params.LAYERS); + } else { + // tms + icone = i3GEO.pluginI3geo[layers[i].options.plugini3geo].iconeArvoreDeCamadas(layers[i].layers); + } + } + // + // verifica se a camada tem ferramentas parametrizadas + // insere o icone + // + fers = layers[i].options.ferramentas; + for (fer in fers) { + if (i3GEO.configura.ferramentasLayers[fer]) { + icone = i3GEO.configura.ferramentasLayers[fer].icone(layers[i]); + } + } + ins += icone + layers[i].name + "

"; + // necessario pq nao e sincrono + eval("var f = function(retorno){document.getElementById('legendaL_" + i + + "').innerHTML = retorno.responseText;};"); + var config = { + method : "GET", + url : url, + callback : f + }; + OpenLayers.Request.issue(config); + } else { + url = url.replace("LAYERS", "LAYER"); + url = url.replace("&Z=${z}&X=${x}&Y=${y}", ""); + url = url.replace("Z=${z}&X=${x}&Y=${y}", ""); + ins += layers[i].name + "

"; + } + } + } catch (e) { + } + } + // var w = window.open(); + // w.document.write(ins); + // w.document.close(); + if (!document.getElementById("panellegendaeditorOL")) { + YAHOO.namespace("legendaeditorOL.container"); + YAHOO.legendaeditorOL.container.panel = new YAHOO.widget.Panel("panellegendaeditorOL", { + zIndex : 20000, + iframe : true, + width : "auto", + visible : false, + draggable : true, + close : true + }); + YAHOO.legendaeditorOL.container.panel.setBody(ins); + YAHOO.legendaeditorOL.container.panel.setHeader($trad("p3")); + YAHOO.legendaeditorOL.container.panel.setFooter(""); + YAHOO.legendaeditorOL.container.panel.render(document.body); + YAHOO.legendaeditorOL.container.panel.show(); + YAHOO.legendaeditorOL.container.panel.center(); + + YAHOO.util.Event.addListener(YAHOO.legendaeditorOL.container.panel.close, "click", function() { + YAHOO.legendaeditorOL.container.panel.destroy(); + }); + } else { + YAHOO.legendaeditorOL.container.panel.setBody(ins); + YAHOO.legendaeditorOL.container.panel.show(); + } + }, + captura : function(lonlat) { + // if(i3GEO.desenho.layergrafico !== ""){return;} + + var d = 0.1, layers = [ + i3GEO.editorOL.layerAtivo() + ], xy = lonlat.split(","), u = layers[0].url + "&REQUEST=getfeature&service=wfs&version=1.0.0"; + u += "&OUTPUTFORMAT=gml2&typename=" + layers[0].params.LAYERS; + // remove parametros nao desejados + if (i3GEO.Interface.openlayers.googleLike === true) { + u += "&SRS=EPSG:3857"; + } + u = u.replace("&cache=sim", "&DESLIGACACHE=sim"); + u = u.replace("&Z=${z}&X=${x}&Y=${y}", ""); + u = u.replace("Z=${z}&X=${x}&Y=${y}", ""); + // u += + // "&filter=Geometry"+lonlat+""; + + xy[0] = xy[0] * 1; + xy[1] = xy[1] * 1; + var poligono = + (xy[0] - d) + "," + + (xy[1] + d) + + " " + + (xy[0] + d) + + "," + + (xy[1] + d) + + " " + + (xy[0] + d) + + "," + + (xy[1] - d) + + " " + + (xy[0] - d) + + "," + + (xy[1] - d) + + " " + + (xy[0] - d) + + "," + + (xy[1] + d); + u += + "&filter=Geometry" + poligono + + ""; + + document.body.style.cursor = "wait"; + if (document.getElementById("i3geoMapa")) { + document.getElementById("i3geoMapa").style.cursor = "wait"; + } + OpenLayers.Request.issue({ + method : "GET", + url : u, + callback : function(retorno) { + document.body.style.cursor = "default"; + if (document.getElementById("i3geoMapa")) { + document.getElementById("i3geoMapa").style.cursor = "default"; + } + var i, n, f, fromgml = new OpenLayers.Format.GML({ + geometryName : "msGeometry" + }), gml = fromgml.read(retorno.responseText); + n = gml.length; + for (i = 0; i < n; i++) { + f = gml[i]; + f["attributes"] = { + opacidade : i3GEO.editorOL.simbologia.opacidade, + texto : i3GEO.editorOL.simbologia.texto, + fillColor : i3GEO.editorOL.simbologia.fillColor, + strokeWidth : i3GEO.editorOL.simbologia.strokeWidth, + strokeColor : i3GEO.editorOL.simbologia.strokeColor, + pointRadius : i3GEO.editorOL.simbologia.pointRadius, + graphicName : i3GEO.editorOL.simbologia.graphicName, + registros : f["attributes"] + }; + } + i3GEO.desenho.layergrafico.addFeatures(gml); + }, + failure : function() { + document.body.style.cursor = "default"; + if (document.getElementById("i3geoMapa")) { + document.getElementById("i3geoMapa").style.cursor = "default"; + } + alert("Erro"); + } + }); + }, + salvaGeometrias : function() { + var geos = i3GEO.desenho.layergrafico.selectedFeatures, n = geos.length, ins = ""; + if (n > 0) { + if ($i("panelsalvageometrias")) { + if (YAHOO.i3GEO) { + YAHOO.salvaGeometrias.container.panel = YAHOO.i3GEO.janela.manager.find("panelsalvageometrias"); + } + YAHOO.salvaGeometrias.container.panel.show(); + YAHOO.salvaGeometrias.container.panel.bringToTop(); + } else { + try { + YAHOO.namespace("salvaGeometrias.container"); + YAHOO.salvaGeometrias.container.panel = new YAHOO.widget.Panel("panelsalvageometrias", { + zIndex : 2000, + iframe : false, + width : "250px", + visible : false, + draggable : true, + close : true + }); + YAHOO.salvaGeometrias.container.panel.setHeader($trad("u6")); + YAHOO.salvaGeometrias.container.panel.setBody(""); + YAHOO.salvaGeometrias.container.panel.setFooter(""); + YAHOO.salvaGeometrias.container.panel.render(document.body); + YAHOO.salvaGeometrias.container.panel.center(); + if (YAHOO.i3GEO && YAHOO.i3GEO.janela) { + YAHOO.i3GEO.janela.manager.register(YAHOO.salvaGeometrias.container.panel); + } + YAHOO.salvaGeometrias.container.panel.show(); + } catch (e) { + } + } + ins += "

" + n + " " + $trad("geosel") + "

"; + ins += + "

" + $trad("listar") + + "  "; + if (i3GEO.editorOL.nomeFuncaoSalvar && i3GEO.editorOL.nomeFuncaoSalvar != "") { + ins += "" + $trad("sdados") + "  "; + } + if (typeof i3geoOL !== "undefined") { + ins += "" + $trad("incorpo") + "

"; + ins += "

" + $trad("ajudaEditorOlSalva") + "

"; + } + YAHOO.salvaGeometrias.container.panel.setBody(ins); + } else { + i3GEO.janela.tempoMsg($trad("selum")); + } + }, + exportarSHP : function() { + i3GEO.editorOL.processageo("converteSHP"); + }, + incorporar : function() { + i3GEO.editorOL.processageo("incorporar"); + }, + listaGeometriasSel : function() { + var geos = i3GEO.desenho.layergrafico.selectedFeatures, n = geos.length, ins = "", i, a, w, g; + for (i = 0; i < n; i++) { + g = geos[i]; + ins += "" + $trad("u6") + ": " + i + "
" + i3GEO.editorOL.google2wgs(g.geometry) + "

"; + ins += "" + $trad("atrib") + ": " + i + "
"; + a = g.attributes; + for (key in a) { + if (a[key]) { + ins += key + " = " + a[key] + "
"; + } + } + // lista os registros se for fruto de uma captura + if (g.attributes.registros) { + ins += "" + $trad("reg") + ": " + i + "
"; + a = g.attributes.registros; + for (key in a) { + if (a[key]) { + ins += key + " = " + a[key] + "
"; + } + } + } + ins += "
"; + } + w = window.open(); + w.document.write(ins); + w.document.close(); + }, + testeSalvar : function() { + alert("Funcao nao disponivel. Defina o nome da funcao em i3GEO.editorOL.nomeFuncaoSalvar "); + }, + salvaGeo : function() { + // i3GEO.editorOL.testeSalvar(); + // return; + var geos = i3GEO.desenho.layergrafico.selectedFeatures, n = geos.length, funcaoOK = + function() { + // verifica se a geometria contem o atributo que indica a coluna ou codigo unico + if (geos[0].geometry) { + var registros = "", valorunico = "", nometema = $i("editorOLcomboTemaEditavel").value, key = "", tema, redesenha, p, g = + i3GEO.editorOL.google2wgs(geos[0].geometry); + if (nometema == "") { + return; + } + tema = i3GEO.arvoreDeCamadas.pegaTema(nometema, "", "name"); + // o tema contem o indicador de qual e a coluna que contem o identificador unico + if (geos[0].attributes.registros) { + registros = geos[0].attributes.registros; + for (key in registros) { + if (registros[key] && key == tema.colunaidunico) { + valorunico = registros[key]; + } + } + } + redesenha = function(retorno) { + i3GEO.janela.fechaAguarde("aguardeSalvaPonto"); + i3GEO.desenho.layergrafico.removeFeatures(i3GEO.desenho.layergrafico.selectedFeatures); + i3GEO.Interface.atualizaTema("", nometema); + }; + i3GEO.janela.AGUARDEMODAL = true; + i3GEO.janela.abreAguarde("aguardeSalvaPonto", $trad("adic") + "..."); + i3GEO.janela.AGUARDEMODAL = false; + + // cria um novo registro + if (valorunico == "") { + p = + i3GEO.configura.locaplic + "/ferramentas/editortema/exec.php?funcao=adicionaGeometria&g_sid=" + + i3GEO.configura.sid; + cpJSON.call(p, "foo", redesenha, "&tema=" + nometema + "&wkt=" + g); + } else { + // atualiza a geometria + p = + i3GEO.configura.locaplic + "/ferramentas/editortema/exec.php?funcao=atualizaGeometria&g_sid=" + + i3GEO.configura.sid; + cpJSON.call(p, "foo", redesenha, "&idunico=" + valorunico + "&tema=" + nometema + "&wkt=" + g); + } + } + }, funcaoCombo = function(obj) { + $i("editorOLondeComboTemaEditavel").innerHTML = obj.dados; + }, texto = $trad("stema") + ":


"; + if (n != 1) { + i3GEO.janela.tempoMsg($trad("seluma")); + } else { + i3GEO.janela.confirma(texto, 300, $trad("salva"), $trad("canc"), funcaoOK); + i3GEO.util.comboTemas("editorOLcomboTemaEditavel", funcaoCombo, "editorOLondeComboTemaEditavel", "", false, "editavel"); + } + }, + //muda a classe do botao para marca-lo como ativo + marcaBotao : function(classeBotao){ + //desmarca todos os botoes + var i, n, botoes = $i("i3GEObarraEdicao").getElementsByTagName("div"); + n = botoes.length; + for(i = 0; i < n; i++){ + botoes[i].className = botoes[i].className.replace("ItemActive","ItemInactive"); + if(classeBotao){ + botoes[i].className = botoes[i].className.replace(classeBotao+"ItemInactive",classeBotao+"ItemActive"); + } + } + i3GEO.editorOL.removeInteracoes(); + }, + //interacoes criadas ao ativar algum botao + //usado para remover as interacoes + interacoes : [], + removeInteracoes: function(){ + var i, n; + n = i3GEO.editorOL.interacoes.length; + for(i = 0; i < n; i++){ + i3geoOL.removeInteraction(i3GEO.editorOL.interacoes[i]); + } + i3GEO.editorOL.interacoes = []; + }, + criaBotoes : function(botoes) { + if($i("i3GEObarraEdicao")){ + $i("i3GEObarraEdicao").style.display = "block"; + return; + } + var temp; + //cria o painel onde entrarão os icones + i3GEOpanelEditor = document.createElement("div"); + i3GEOpanelEditor.id = "i3GEObarraEdicao"; + i3GEOpanelEditor.className = "olControlEditingToolbar1 noprint"; + //cria os icones + if (botoes.procura === true) { + temp = document.createElement("div"); + temp.className = "editorOLprocuraItemInactive olButton"; + temp.title = $trad("t23"); + temp.onclick = function(){ + YAHOO.procura.container.panel.show(); + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.pan === true) { + temp = document.createElement("div"); + temp.className = "editorOLpanItemInactive olButton"; + temp.title = "pan"; + temp.onclick = function(){ + i3GEO.editorOL.marcaBotao("editorOLpan"); + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.zoombox === true) { + temp = document.createElement("div"); + temp.className = "editorOLzoomboxItemInactive olButton"; + temp.title = "zoombox"; + temp.onclick = function(){ + i3GEO.barraDeBotoes.defBotao("zoomli").funcaoonclick; + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.zoomtot === true) { + temp = document.createElement("div"); + temp.className = "editorOLzoomtotItemInactive olButton"; + temp.title = $trad("d2t"); + temp.onclick = function(){ + if (i3GEO.editorOL.mapext && i3GEO.editorOL.mapext != "") { + i3GEO.Interface.openlayers.zoom2ext(i3GEO.editorOL.mapext.join(" ")); + } else { + i3GEO.Interface.openlayers.zoom2ext(i3GEO.parametros.extentTotal); + } + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.zoomin === true) { + temp = document.createElement("div"); + temp.className = "editorOLzoominItemInactive olButton"; + temp.title = $trad("d5t"); + temp.onclick = function(){ + var v = i3GEO.editorOL.mapa.getView(); + v.setZoom(v.getZoom() + 1); + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.zoomout === true) { + temp = document.createElement("div"); + temp.className = "editorOLzoomoutItemInactive olButton"; + temp.title = $trad("d5t"); + temp.onclick = function(){ + var v = i3GEO.editorOL.mapa.getView(); + v.setZoom(v.getZoom() - 1); + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.legenda === true) { + temp = document.createElement("div"); + temp.className = "editorOLlegendaItemInactive olButton"; + temp.title = $trad("p3"); + temp.onclick = function(){ + i3GEO.editorOL.mostraLegenda(); + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.distancia === true) { + temp = document.createElement("div"); + temp.className = "editorOLdistanciaItemInactive olButton"; + temp.title = $trad("d21t"); + temp.onclick = function(){ + i3GEO.editorOL.marcaBotao("editorOLdistancia"); + i3GEO.barraDeBotoes.defBotao("mede").funcaoonclick; + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.area === true) { + temp = document.createElement("div"); + temp.className = "editorOLareaItemInactive olButton"; + temp.title = $trad("d21at"); + temp.onclick = function(){ + i3GEO.editorOL.marcaBotao("editorOLarea"); + i3GEO.barraDeBotoes.defBotao("area").funcaoonclick; + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.linha === true) { + temp = document.createElement("div"); + temp.className = "editorOLlinhaItemInactive olButton"; + temp.title = $trad("dlinha"); + temp.onclick = function(){ + i3GEO.eventos.cliquePerm.desativa(); + i3GEO.editorOL.marcaBotao("editorOLlinha"); + var draw = new ol.interaction.Draw({ + type : "LineString" + }); + //adiciona a interacao para poder ser removida + i3GEO.editorOL.interacoes.push(draw); + //desativa ol.interaction.DoubleClickZoom + i3GEO.Interface.openlayers.interacoes[0].setActive(false); + draw.on("drawend", function(evt) { + evt.feature.setStyle( + new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: 'rgba(' + i3GEO.editorOL.simbologia.strokeColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')', + width: i3GEO.editorOL.simbologia.strokeWidth + }), + fill: new ol.style.Fill({ + color: 'rgba(' + i3GEO.editorOL.simbologia.fillColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')' + }) + }) + ); + evt.feature.setId(i3GEO.util.uid()); + i3GEO.desenho.layergrafico.getSource().addFeature(evt.feature); + draw.setActive(false); + draw.setActive(true); + if (document.getElementById("panellistagEditor")) { + i3GEO.editorOL.listaGeometrias(); + } + }); + i3geoOL.addInteraction(draw); + }; + i3GEOpanelEditor.appendChild(temp); + } + //TODO falta definir imagem + if (botoes.ponto === true) { + i3GEO.eventos.cliquePerm.desativa(); + temp = document.createElement("div"); + temp.className = "editorOLpontoItemInactive olButton"; + temp.title = $trad("dponto"); + temp.onclick = function(){ + i3GEO.eventos.cliquePerm.desativa(); + i3GEO.editorOL.marcaBotao("editorOLponto"); + var draw = new ol.interaction.Draw({ + type : "Point" + }); + //adiciona a interacao para poder ser removida + i3GEO.editorOL.interacoes.push(draw); + i3GEO.Interface.openlayers.interacoes[0].setActive(false); + draw.on("drawend", function(evt) { + evt.feature.setStyle( + new ol.style.Style({ + image: new ol.style.Circle({ + radius: i3GEO.editorOL.simbologia.pointRadius, + fill: new ol.style.Fill({ + color: 'rgba(' + i3GEO.editorOL.simbologia.fillColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')' + }), + stroke: new ol.style.Stroke({ + color: 'rgba(' + i3GEO.editorOL.simbologia.strokeColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')', + width: i3GEO.editorOL.simbologia.pointRadius / 3 + }) + }) + }) + ); + evt.feature.setId(i3GEO.util.uid()); + i3GEO.desenho.layergrafico.getSource().addFeature(evt.feature); + draw.setActive(false); + draw.setActive(true); + if (document.getElementById("panellistagEditor")) { + i3GEO.editorOL.listaGeometrias(); + } + }); + i3geoOL.addInteraction(draw); + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.poligono === true) { + i3GEO.eventos.cliquePerm.desativa(); + temp = document.createElement("div"); + temp.className = "editorOLpoligonoItemInactive olButton"; + temp.title = $trad("dpol"); + temp.onclick = function(){ + i3GEO.editorOL.marcaBotao("editorOLpoligono"); + var draw = new ol.interaction.Draw({ + type : "Polygon" + }); + /* + snap = new ol.interaction.Snap({ + source: i3GEO.desenho.layergrafico.getSource() + }); + i3GEO.editorOL.interacoes.push(snap); + */ + //adiciona a interacao para poder ser removida + i3GEO.editorOL.interacoes.push(draw); + i3GEO.Interface.openlayers.interacoes[0].setActive(false); + draw.on("drawend", function(evt) { + evt.feature.setStyle( + new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: 'rgba(' + i3GEO.editorOL.simbologia.strokeColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')', + width: i3GEO.editorOL.simbologia.strokeWidth + }), + fill: new ol.style.Fill({ + color: 'rgba(' + i3GEO.editorOL.simbologia.fillColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')' + }) + }) + ); + evt.feature.setId(i3GEO.util.uid()); + i3GEO.desenho.layergrafico.getSource().addFeature(evt.feature); + draw.setActive(false); + draw.setActive(true); + if (document.getElementById("panellistagEditor")) { + i3GEO.editorOL.listaGeometrias(); + } + }); + i3geoOL.addInteraction(draw); + }; + i3GEOpanelEditor.appendChild(temp); + } + + if (botoes.texto === true) { + i3GEO.eventos.cliquePerm.desativa(); + temp = document.createElement("div"); + temp.className = "editorOLtextoItemInactive olButton"; + temp.title = $trad("dtexto"); + temp.onclick = function(){ + i3GEO.eventos.cliquePerm.desativa(); + i3GEO.editorOL.marcaBotao("editorOLtexto"); + var draw = new ol.interaction.Draw({ + type : "Point" + }); + //adiciona a interacao para poder ser removida + i3GEO.editorOL.interacoes.push(draw); + i3GEO.Interface.openlayers.interacoes[0].setActive(false); + draw.on("drawend", function(evt) { + var texto = window.prompt("Texto", ""); + evt.feature.setStyle( + new ol.style.Style({ + text: new ol.style.Text({ + text: texto, + font: 'Bold ' + parseInt(i3GEO.editorOL.simbologia.fontSize,10) + 'px Arial', + textAlign: 'left', + stroke: new ol.style.Stroke({ + color: 'white', + width: i3GEO.editorOL.simbologia.strokeWidth + }), + fill: new ol.style.Fill({ + color: i3GEO.editorOL.simbologia.fontColor + }), + zIndex: 2000 + }) + }) + ); + evt.feature.setId(i3GEO.util.uid()); + i3GEO.desenho.layergrafico.getSource().addFeature(evt.feature); + draw.setActive(false); + draw.setActive(true); + i3GEO.editorOL.marcaBotao(); + }); + i3geoOL.addInteraction(draw); + }; + i3GEOpanelEditor.appendChild(temp); + } + + if (botoes.selecao === true) { + i3GEO.eventos.cliquePerm.desativa(); + temp = document.createElement("div"); + temp.className = "editorOLselecaoItemInactive olButton"; + temp.title = $trad("d24t"); + temp.onclick = function(){ + i3GEO.editorOL.marcaBotao("editorOLselecao"); + var sel = new ol.interaction.Select(); + //adiciona a interacao para poder ser removida + i3GEO.editorOL.interacoes.push(sel); + i3GEO.Interface.openlayers.interacoes[0].setActive(false); + sel.on("select", function(evt) { + var i, n, id, f; + n = evt.selected.length; + for(i=0; i 0){ + x = window.confirm($trad("excsel") + "?"); + if(x){ + i3GEO.editorOL.removeFeaturesSel(); + i3GEO.desenho.layergrafico.getSource().changed(); + } + } + else{ + i3GEO.janela.tempoMsg($trad("selum")); + } + }; + i3GEOpanelEditor.appendChild(temp); + } + + if (botoes.frente === true) { + temp = document.createElement("div"); + temp.className = "editorOLfrenteItemInactive olButton"; + temp.title = $trad("frente"); + temp.onclick = function(){ + var nsel = i3GEO.editorOL.idsSelecionados.length; + if(nsel > 0){ + i3GEO.editorOL.marcaBotao(); + i3GEO.editorOL.trazParaFrente(); + } + else{ + i3GEO.janela.tempoMsg($trad("selum")); + } + }; + i3GEOpanelEditor.appendChild(temp); + } + //TODO Translate nao funciona nessa versao do openlayers 3x precisa atualizar + if (botoes.edita === true) { + i3GEO.eventos.cliquePerm.desativa(); + temp = document.createElement("div"); + temp.className = "editorOLeditaItemInactive olButton"; + temp.title = $trad("dpol"); + temp.onclick = function(){ + i3GEO.editorOL.featuresBackup = []; + var draw, nsel, f, c; + nsel = i3GEO.editorOL.idsSelecionados.length; + if(nsel > 0){ + i3GEO.editorOL.marcaBotao("editorOLedita"); + f = i3GEO.desenho.layergrafico.getSource().getFeatureById(i3GEO.editorOL.idsSelecionados[nsel - 1]); + i3GEO.editorOL.featuresBackup.push(f.clone()); + c = new ol.Collection(); + c.push(f); + draw = new ol.interaction.Modify({ + features: c + }); + //adiciona a interacao para poder ser removida + i3GEO.editorOL.interacoes.push(draw); + i3GEO.Interface.openlayers.interacoes[0].setActive(false); + i3geoOL.addInteraction(draw); + } + else{ + i3GEO.janela.tempoMsg($trad("selum")); + } + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.edita === true && botoes.corta === true && i3GEO.php) { + i3GEO.eventos.cliquePerm.desativa(); + temp = document.createElement("div"); + temp.className = "editorOLcortaItemInactive olButton"; + temp.title = $trad("cortaf"); + temp.onclick = function(){ + var nsel = i3GEO.editorOL.idsSelecionados.length; + if (nsel != 1) { + alert("Selecione primeiro um elemento para ser cortado"); + } else { + i3GEO.janela.tempoMsg("Desenhe um polígono"); + i3GEO.editorOL.marcaBotao("editorOLcorta"); + var draw = new ol.interaction.Draw({ + type : "Polygon" + }); + //adiciona a interacao para poder ser removida + i3GEO.editorOL.interacoes.push(draw); + i3GEO.Interface.openlayers.interacoes[0].setActive(false); + draw.on("drawend", function(evt) { + var temp, f, c, format, fwkt, cwkt; + f = evt.feature; + c = i3GEO.desenho.layergrafico.getSource().getFeatureById(i3GEO.editorOL.idsSelecionados[nsel - 1]); + i3GEO.editorOL.featuresBackup.push(c.clone()); + i3GEO.editorOL.marcaBotao(); + //corta + format = new ol.format.WKT(); + if(f && c){ + fwkt = format.writeFeatures([f]); + cwkt = format.writeFeatures([c]); + if(fwkt && cwkt){ + temp = function(retorno) { + i3GEO.janela.fechaAguarde("i3GEO.cortador"); + if (retorno != "" && retorno.data && retorno.data != "") { + i3GEO.janela.fechaAguarde("i3GEO.cortador"); + c.setGeometry(format.readGeometry(retorno.data)); + //i3GEO.editorOL.substituiFeaturesSel(retorno.data); + if (document.getElementById("panellistagEditor")) { + i3GEO.editorOL.listaGeometrias(); + } + } + }; + i3GEO.janela.abreAguarde("i3GEO.cortador", "Cortando"); + i3GEO.php.funcoesGeometriasWkt(temp, cwkt + "|" + fwkt, "difference"); + } + } + }); + i3geoOL.addInteraction(draw); + } + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.edita === true && botoes.listag === true) { + temp = document.createElement("div"); + temp.className = "editorOLlistagItemInactive olButton"; + temp.title = $trad("listag"); + temp.onclick = function(){ + i3GEO.editorOL.listaGeometrias(); + }; + i3GEOpanelEditor.appendChild(temp); + } + //TODO abrir em uma janela flutuante interna + if (botoes.ajuda === true) { + temp = document.createElement("div"); + temp.className = "editorOLajudaItemInactive olButton"; + temp.title = $trad("s1"); + temp.onclick = function(){ + if(i3GEO.configura && i3GEO.configura.locaplic){ + window.open(i3GEO.configura.locaplic + "/mashups/openlayers_ajuda.php"); + } + else{ + window.open("openlayers_ajuda.php"); + } + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.fecha === true) { + temp = document.createElement("div"); + temp.className = "editorOLfechaItemInactive olButton"; + temp.title = $trad("x74"); + temp.onclick = function(){ + i3GEO.editorOL.unselTodos(); + i3GEO.editorOL.featuresBackup = []; + i3GEO.editorOL.marcaBotao(); + i3GEO.eventos.cliquePerm.ativa(); + $i("i3GEObarraEdicao").style.display = "none"; + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.tools === true) { + temp = document.createElement("div"); + temp.className = "editorOLtoolsItemInactive olButton"; + temp.title = $trad("u15a"); + temp.onclick = function(){ + // fora do i3geo, usa o jsts + if (i3GEO.php) { + i3GEO.editorOL.ferramentas(); + } else { + i3GEO.editorOL.carregajts("i3GEO.editorOL.ferramentas()"); + } + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.propriedades === true) { + temp = document.createElement("div"); + temp.className = "editorOLpropriedadesItemInactive olButton"; + temp.title = $trad("p13"); + temp.onclick = function(){ + i3GEO.editorOL.propriedades(); + }; + i3GEOpanelEditor.appendChild(temp); + } + if (botoes.identifica === true) { + i3GEO.eventos.cliquePerm.desativa(); + temp = document.createElement("div"); + temp.className = "editorOLidentificaItemInactive olButton"; + temp.title = $trad("d7t"); + temp.onclick = function(){ + i3GEO.editorOL.criaJanelaAtivaTema(); + i3GEO.eventos.cliquePerm.desativa(); + i3GEO.editorOL.marcaBotao("editorOLidentifica"); + var draw = new ol.interaction.Draw({ + type : "Point" + }); + //adiciona a interacao para poder ser removida + i3GEO.editorOL.interacoes.push(draw); + i3GEO.Interface.openlayers.interacoes[0].setActive(false); + draw.on("drawend", function(evt) { + var xy, p, retorno, url, layer, tema = $i("i3GEOOLlistaTemasAtivos"); + if(tema){ + layer = i3geoOL.getLayersByName(tema.value)[0]; + url = layer.getSource().getUrls()[0]; + xy = evt.target.downPx_; + retorno = function(r){ + var xy = evt.feature.getGeometry().getFirstCoordinate(); + i3GEO.eventos.cliquePerm.ativo = true; + i3GEO.Interface.openlayers.balao(r,"", xy[0], xy[1]); + i3GEO.eventos.cliquePerm.ativo = false; + }; + p = i3GEO.configura.locaplic + "/classesphp/proxy.php?" + + url + + "&tipoRetornoProxy=string&REQUEST=GetFeatureInfo&TIPOIMAGEM=nenhum&DESLIGACACHE=sim&STYLES=&SERVICE=WMS&VERSION=1.1.1&FEATURE_COUNT=1" + + "&FORMAT=image/png&INFO_FORMAT=text/plain&SRS=EPSG:4326" + + "&LAYERS= " + tema.value + + "&layer= " + tema.value + + "&QUERY_LAYERS= " + tema.value + + "&HEIGHT=" + i3GEO.parametros.h + + "&WIDTH=" + i3GEO.parametros.w + + "&BBOX=" + i3geoOL.getExtent().toBBOX().split(",").join(" ") + + "&X=" + xy[0] + "&Y=" + xy[1]; + cpJSON.call(p, "foo", retorno, ""); + } + //i3GEO.editorOL.marcaBotao(); + }); + i3geoOL.addInteraction(draw); + }; + i3GEOpanelEditor.appendChild(temp); + } + i3GEOpanelEditor.style.width = i3GEOpanelEditor.getElementsByTagName("div").length * 33 + "px"; + i3GEO.editorOL.mapa.getViewport().getElementsByClassName("ol-overlaycontainer-stopevent")[0].appendChild(i3GEOpanelEditor); + + /* + if (botoes.salva === true) { + + button = new OpenLayers.Control.Button({ + displayClass : "editorOLsalva", + trigger : function() { + i3GEO.editorOL.salvaGeometrias(); + }, + title : $trad("salva"), + type : OpenLayers.Control.TYPE_BUTTON + }); + controles.push(button); + adiciona = true; + + } + if (botoes.identifica === true) { + //TODO incluir codigo ol3 + + botaoIdentifica = + new OpenLayers.Control.WMSGetFeatureInfo( + { + maxFeatures : 1, + infoFormat : 'text/plain', // 'application/vnd.ogc.gml', + layers : [ + i3GEO.editorOL.layerAtivo() + ], + queryVisible : true, + title : $trad("d7t"), + type : OpenLayers.Control.TYPE_TOOL, + displayClass : "editorOLidentifica", + eventListeners : { + getfeatureinfo : function(event) { + var lonlat = i3GEO.editorOL.mapa.getLonLatFromPixel(event.xy), lonlattexto = "
", formata; + if (botoes.linha === true || botoes.ponto === true || botoes.poligono === true || botoes.edita === true) { + lonlattexto += + "
edita geometria

"; + } + formata = function(texto) { + var temp, temp1, n, i, f = [], textoN = texto.split(":"); + try { + if (textoN.length > 1) { + temp = textoN[2].replace(/\n\r/g, ""); + temp = temp.replace(/'/g, ""); + temp = temp.replace(/\n/g, "|"); + temp = temp.replace(/_/g, " "); + temp = temp.replace(/=/g, ":"); + temp = temp.split("|"); + n = temp.length; + for (i = 0; i < n; i++) { + temp1 = temp[i].replace(/^\s+/, ""); + temp1 = temp1.replace(/\s+$/, ""); + if (temp1 != "") + f.push(temp1); + } + texto = f.join("

"); + } + } catch (e) { + } + return texto; + }; + i3GEO.editorOL.mapa.addPopup(new OpenLayers.Popup.FramedCloud("chicken", i3GEO.editorOL.mapa + .getLonLatFromPixel(event.xy), null, "
" + lonlattexto + + "
"
+										+ formata(event.text)
+										+ "
", null, true)); + i3GEO.editorOL.removeClone(); + }, + beforegetfeatureinfo : function(event) { + var ativo = [ + i3GEO.editorOL.layerAtivo() + ]; + // se for TMS tem de pegar o clone wms + if (ativo[0].serviceVersion === "&tms=" || ativo[0].CLASS_NAME == "OpenLayers.Layer.TMS" + || ativo[0].CLASS_NAME == "OpenLayers.Layer.OSM") { + ativo = [ + i3GEO.editorOL.layertms2wms(ativo[0]) + ]; + } + ativo[0].projection = new OpenLayers.Projection("EPSG:4326"); + event.object.layers = ativo; + botaoIdentifica.layers = ativo; + botaoIdentifica.url = ativo[0].url; + }, + activate : function() { + i3GEO.editorOL.criaJanelaAtivaTema(); + } + } + }); + // button.events.register("getfeatureinfo", this, showInfo); + controles.push(botaoIdentifica); + adiciona = true; + + } + + */ + }, + removeFeaturesSel : function(){ + var s, i, nsel, f; + nsel = i3GEO.editorOL.idsSelecionados.length; + s = i3GEO.desenho.layergrafico.getSource(); + for(i=0; iEstilos (utilize a cor no formato r,g,b):

' + + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + //TODO incluir propriedades de uma figura + /* + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + */ + + '
Cor do contorno'; + if (i3GEO.configura) { + ins += + 'aquarela.gif'; + } + ins += + "" + '
Cor do preenchimento'; + if (i3GEO.configura) { + ins += + 'aquarela.gif'; + } + ins += + "" + '
Cor da fonte'; + if (i3GEO.configura) { + ins += + 'aquarela.gif'; + } + ins += + "" + '
Tamanho da fonte
Opacidade (de 0 a 1)
Largura da linha/contorno
Url de uma figura
Largura e altura 
'; + //TODO implementar ao atualizar OL3 + /* + + '
' + + '

Ajusta nó em edição para o(a):

' + + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
vérticeborda
' + + + '
' + + '

Divide intersecção ao digitalizar

' + + '' + + ' ' + + ' ' + + ' ' + + '
borda
' + + '
' + + '

Operação ativada pelo botão de modificação da figura

' + + '' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + '
altera figuraaltera tamanho
rotacionadesloca
'; + */ + YAHOO.editorOL.container.panel.setBody(ins); + if (i3GEO && typeof i3GEO != undefined && i3GEO != "") { + YAHOO.editorOL.container.panel + .setHeader("Propriedades
"); + } else { + YAHOO.editorOL.container.panel.setHeader("Propriedades"); + } + + YAHOO.editorOL.container.panel.setFooter(""); + YAHOO.editorOL.container.panel.render(document.body); + + YAHOO.editorOL.container.panel.center(); + YAHOO.util.Event.addListener(YAHOO.editorOL.container.panel.close, "click", function() { + }); + temp = $i("panelpropriedadesEditor_minimizaCabecalho"); + if (temp) { + temp.onclick = function() { + i3GEO.janela.minimiza("panelpropriedadesEditor"); + }; + } + } + YAHOO.editorOL.container.panel.show(); + temp = $i("panelpropriedadesEditor").getElementsByTagName("div"); + if (temp && temp[2]) { + temp[2].style.overflow = "auto"; + } + }, + listaGeometrias : function() { + if (!document.getElementById("panellistagEditor")) { + YAHOO.namespace("editorOL.listaGeometrias"); + YAHOO.editorOL.listaGeometrias.panel = new YAHOO.widget.Panel("panellistagEditor", { + zIndex : 20000, + iframe : true, + width : "320px", + visible : false, + draggable : true, + close : true + }); + if (i3GEO && typeof i3GEO != undefined && i3GEO != "") { + YAHOO.editorOL.listaGeometrias.panel + .setHeader($trad("u6") + "
"); + } else { + YAHOO.editorOL.listaGeometrias.panel.setHeader($trad("u6")); + } + YAHOO.editorOL.listaGeometrias.panel.setFooter(""); + YAHOO.editorOL.listaGeometrias.panel.render(document.body); + YAHOO.editorOL.listaGeometrias.panel.center(); + YAHOO.util.Event.addListener(YAHOO.editorOL.listaGeometrias.panel.close, "click", function() { + YAHOO.editorOL.listaGeometrias.panel.destroy(); + }); + temp = $i("panellistagEditor_minimizaCabecalho"); + if (temp) { + temp.onclick = function() { + i3GEO.janela.minimiza("panellistagEditor"); + }; + } + } else { + YAHOO.editorOL.listaGeometrias.panel.render(document.body); + } + var id, temp, geos = i3GEO.desenho.layergrafico.getSource().getFeatures(), n = geos.length, ins = ""; + ins += ""; + + while (n > 0) { + n -= 1; + id = geos[n].getId(); + if(id){ + ins += + ""; + } + } + ins += "
" + $trad("u6") + "" + $trad("opcoes") + "
" + id + + "selecionalimpa
"; + if (geos.length === 0) { + ins = $trad("meneditor2"); + } + YAHOO.editorOL.listaGeometrias.panel.show(); + if (i3GEO.configura) { + temp = $i("panellistagEditor").getElementsByTagName("div")[2]; + } else { + temp = $i("panellistagEditor").getElementsByTagName("div")[1]; + } + temp.style.overflow = "auto"; + temp.style.height = "100px"; + temp.innerHTML = ins; + }, + //TODO incuir um botao para executar a operacao ao inves do evento onchange + ferramentas : function() { + if (!document.getElementById("panelferramentasEditor")) { + YAHOO.namespace("editorOL.ferramentas"); + YAHOO.editorOL.ferramentas.panel = new YAHOO.widget.Panel("panelferramentasEditor", { + zIndex : 20000, + iframe : true, + width : "300px", + visible : false, + draggable : true, + close : true + }); + var ins = + "" + '

' + + $trad("opsel") + + ':

' + + '
' + + '
'; + + YAHOO.editorOL.ferramentas.panel.setBody(ins); + if (i3GEO && typeof i3GEO != undefined && i3GEO != "") { + YAHOO.editorOL.ferramentas.panel + .setHeader("Ferramentas
"); + } else { + YAHOO.editorOL.ferramentas.panel.setHeader("Ferramentas"); + } + + YAHOO.editorOL.ferramentas.panel.setFooter(""); + YAHOO.editorOL.ferramentas.panel.render(document.body); + YAHOO.editorOL.ferramentas.panel.center(); + YAHOO.util.Event.addListener(YAHOO.editorOL.ferramentas.panel.close, "click", function() { + }); + temp = $i("panelferramentasEditor_minimizaCabecalho"); + if (temp) { + temp.onclick = function() { + i3GEO.janela.minimiza("panelferramentasEditor"); + }; + } + } else { + YAHOO.editorOL.ferramentas.panel.render(document.body); + } + YAHOO.editorOL.ferramentas.panel.show(); + }, + //TODO implementar ao atualizar OL3 + snap : function() { + var target = i3GEOOLsnap.targets[0], tipos = [ + "node", "vertex", "edge" + ], ntipos = tipos.length, i, temp, ativa = false; + i3GEOOLsnap.deactivate(); + for (i = 0; i < ntipos; i++) { + temp = $i("target_" + tipos[i]); + target[tipos[i]] = temp.checked; + if (temp.checked === true) { + ativa = true; + } + temp = $i("target_" + tipos[i] + "Tolerance"); + target[tipos[i] + "Tolerance"] = temp.value; + } + if (ativa === true) { + i3GEOOLsnap.activate(); + } + }, + split : function() { + i3GEOOLsplit.deactivate(); + var temp = $i("edge_split_toggle"); + if (temp.checked === true) { + i3GEOOLsplit.activate(); + } + }, + processageo : function(operacao) { + if (operacao === "") { + return; + } + var polis, linhas, pontos, temp, nsel = i3GEO.editorOL.idsSelecionados.length; + if (nsel > 0) { + polis = i3GEO.editorOL.retornaGeometriasTipo("Polygon"); + linhas = i3GEO.editorOL.retornaGeometriasTipo("LineString"); + pontos = i3GEO.editorOL.retornaGeometriasTipo("Point"); + temp = function(retorno) { + if (i3GEO.janela) { + i3GEO.janela.fechaAguarde("i3GEO.editorPoli"); + i3GEO.janela.fechaAguarde("i3GEO.editorLinhas"); + i3GEO.janela.fechaAguarde("i3GEO.editorPontos"); + } + if (retorno != "" && retorno.data && retorno.data != "" && operacao != "converteSHP") { + i3GEO.editorOL.substituiFeaturesSel(retorno.data); + } + if (operacao === "converteSHP") { + i3GEO.atualiza(); + i3GEO.janela.minimiza("paneltemaativo"); + } + }; + if (operacao === "incorporar") { + if (polis.length > 0) { + temp = i3GEO.editorOL.merge(polis); + } + if (linhas.length > 0) { + temp = i3GEO.editorOL.merge(linhas); + } + if (pontos.length > 0) { + temp = i3GEO.editorOL.merge(pontos); + } + if (i3GEO.mapa) { + i3GEO.mapa.dialogo.wkt2layer(temp); + } + return; + } + if (operacao === "union" && !i3GEO.php) { + if (polis.length > 0) { + temp = i3GEO.editorOL.uniaojts(polis); + i3GEO.editorOL.substituiFeaturesSel(temp); + } + if (linhas.length > 0) { + temp = i3GEO.editorOL.uniaojts(linhas); + i3GEO.editorOL.substituiFeaturesSel(temp); + } + if (pontos.length > 0) { + temp = i3GEO.editorOL.uniaojts(pontos); + i3GEO.editorOL.substituiFeaturesSel(temp); + } + } else { + if (polis.length > 0) { + i3GEO.janela.abreAguarde("i3GEO.editorPoli", "Poligonos"); + i3GEO.php.funcoesGeometriasWkt(temp, polis.join("|"), operacao); + } + if (linhas.length > 0) { + i3GEO.janela.abreAguarde("i3GEO.editorLinhas", "Linhas"); + i3GEO.php.funcoesGeometriasWkt(temp, linhas.join("|"), operacao); + } + if (pontos.length > 0) { + i3GEO.janela.abreAguarde("i3GEO.editorPontos", "Pontos"); + i3GEO.php.funcoesGeometriasWkt(temp, pontos.join("|"), operacao); + } + } + i3GEO.desenho.layergrafico.getSource().changed(); + return; + } else { + i3GEO.janela.tempoMsg("Selecione pelo menos dois elementos"); + } + }, + merge : function(geoms) { + var n = geoms.length, w = new Wkt.Wkt(), g, m, i, format = new ol.format.WKT(); + w.read(format.writeFeatures([geoms[0]])); + if (n > 1) { + for (i = 1; i < n; i++) { + g = format.writeFeatures([geoms[i]]); + m = new Wkt.Wkt(); + m.read(g); + w.merge(m); + } + } + return w.write(); + }, + uniaojts : function(geoms) { + var n = geoms.length, + fwkt = new ol.format.WKT(), + rwkt = new jsts.io.WKTReader(), + wwkt = new jsts.io.WKTWriter(), + g, i, uniao; + if (n > 1) { + uniao = fwkt.writeFeatures([geoms[0]]); + uniao = rwkt.read(uniao); + for (i = 1; i <= n; i++) { + g = fwkt.writeFeatures([geoms[i]]); + uniao = uniao.union(rwkt.read(g)); + } + uniao = wwkt.write(uniao); + return [ + fwkt.readFeatures(uniao) + ]; + } else { + return false; + } + }, + retornaGeometriasTipo : function(tipo) { + var n = i3GEO.editorOL.idsSelecionados.length, lista = [], i, + s = i3GEO.desenho.layergrafico.getSource(), + fwkt = new ol.format.WKT(); + for (i = 0; i < n; i++) { + f = s.getFeatureById(i3GEO.editorOL.idsSelecionados[i]); + if (f.getGeometry().getType() == tipo) { + lista.push(fwkt.writeFeatures([f])); + } + } + return lista; + }, + guardaBackup : function() { + return; + // if(!i3GEO.editorOL.backup) + // {i3GEO.editorOL.backup = new OpenLayers.Layer.Vector("Backup",{displayInLayerSwitcher:false,visibility:false});} + // else + // {i3GEO.editorOL.backup.removeFeatures(i3GEO.editorOL.backup.features);} + // i3GEO.editorOL.backup.addFeatures(i3GEO.desenho.layergrafico.features); + }, + selTodos : function() { + i3GEO.editorOL.unselTodos(); + var features, n, f, i, id; + features = i3GEO.desenho.layergrafico.getSource().getFeatures(); + n = features.length; + for (i = 0; i < n; i++) { + f = features[i]; + id = f.getId(); + if(!id){ + id = i3GEO.util.uid(); + f.setId(id); + } + i3GEO.editorOL.idsSelecionados.push(id); + f.setProperties({ + fillColor: f.getStyle().getFill().getColor(), + strokeColor: f.getStyle().getStroke().getColor() + }); + f.getStyle().getFill().setColor('rgba(255, 255, 255, 0.5)'); + f.getStyle().getStroke().setColor('blue'); + } + i3GEO.desenho.layergrafico.getSource().changed(); + }, + unselTodos : function() { + var i, n, f, s; + s = i3GEO.desenho.layergrafico.getSource(); + n = i3GEO.editorOL.idsSelecionados.length; + for(i=0; i 0) { + i3GEO.desenho.layergrafico.removeFeatures(i3GEO.desenho.layergrafico.features); + i3GEO.desenho.layergrafico.addFeatures(i3GEO.editorOL.backup.features); + } + if (document.getElementById("panellistagEditor")) { + i3GEO.editorOL.listaGeometrias(); + } + // i3GEO.editorOL.backup.removeFeatures(i3GEO.editorOL.backup.features); + }, + substituiFeaturesSel : function(f) { + i3GEO.editorOL.removeFeaturesSel(); + var fwkt = new ol.format.WKT(); + f = fwkt.readFeatures(f)[0]; + f.setStyle( + new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: 'rgba(' + i3GEO.editorOL.simbologia.strokeColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')', + width: i3GEO.editorOL.simbologia.strokeWidth + }), + fill: new ol.style.Fill({ + color: 'rgba(' + i3GEO.editorOL.simbologia.fillColor + ',' + i3GEO.editorOL.simbologia.opacidade + ')' + }) + }) + ); + f.setId(i3GEO.util.uid()); + i3GEO.desenho.layergrafico.getSource().addFeature(f); + }, + adicionaFeatureWkt : function(wkt, atributos) { + var f, fwkt = new OpenLayers.Format.WKT(); + + if (atributos.externalGraphic && atributos.externalGraphic != "") { + var style_mark = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']); + style_mark.externalGraphic = atributos.externalGraphic; + style_mark.graphicWidth = atributos.graphicWidth; + style_mark.graphicHeight = atributos.graphicHeight; + style_mark.fillOpacity = atributos.opacidade; + f = fwkt.read(wkt); + f["attributes"] = atributos; + f["style"] = style_mark; + } else { + f = fwkt.read(wkt); + f["attributes"] = atributos; + } + i3GEO.desenho.layergrafico.addFeatures([ + f + ]); + if (document.getElementById("panellistagEditor")) { + i3GEO.editorOL.listaGeometrias(); + } + }, + flashFeaturesI : function(index) { + i3GEO.editorOL.flashFeatures([ + i3GEO.desenho.layergrafico.features[index] + ], 0); + }, + flashFeatures : function(features, index) { + if (!index) { + index = 0; + } + var current = features[index]; + if (current && current.layer === i3GEO.desenho.layergrafico) { + i3GEO.desenho.layergrafico.drawFeature(features[index], "select"); + } + var prev = features[index - 1]; + if (prev && prev.layer === i3GEO.desenho.layergrafico) { + i3GEO.desenho.layergrafico.drawFeature(prev, "default"); + } + ++index; + if (index <= features.length) { + window.setTimeout(function() { + i3GEO.editorOL.flashFeatures(features, index); + }, 75); + } + }, + selFeature : function(id) { + var s,f; + s = i3GEO.desenho.layergrafico.getSource(); + f = s.getFeatureById(id); + if(!i3GEO.util.in_array(id,i3GEO.editorOL.idsSelecionados)){ + i3GEO.editorOL.idsSelecionados.push(id); + f.setProperties({ + fillColor: f.getStyle().getFill().getColor(), + strokeColor: f.getStyle().getStroke().getColor() + }); + f.getStyle().getFill().setColor('rgba(255, 255, 255, 0.5)'); + f.getStyle().getStroke().setColor('blue'); + s.changed(); + } + }, + carregajts : function(funcao) { + if (i3GEO.configura) { + i3GEO.util.scriptTag(i3GEO.configura.locaplic + "/pacotes/jsts/lib/jsts.js", funcao, "i3GEOjts", true); + } else { + i3GEO.util.scriptTag("../pacotes/jsts/lib/jsts.js", funcao, "i3GEOjts", true); + } + }, + trazParaFrente : function() { + var s, i, nsel, id, clone; + s = i3GEO.desenho.layergrafico.getSource(); + nsel = i3GEO.editorOL.idsSelecionados.length; + for(i=0; iArcGIS'})]})}),e_ims:new ol.layer.Tile({title:"ESRI Imagery World 2D",visible:false,isBaseLayer:true,name:"ims",source:new ol.source.TileArcGISRest({url:"http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer",attributions:[new ol.Attribution({html:'Tiles © ArcGIS'})]})}),e_wsm:new ol.layer.Tile({title:"ESRI World Street Map",visible:false,isBaseLayer:true,name:"wsm",source:new ol.source.TileArcGISRest({url:"http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer",attributions:[new ol.Attribution({html:'Tiles © ArcGIS'})]})}),ol_mma:new ol.layer.Tile({title:"Base carto MMA",visible:false,isBaseLayer:true,name:"bra",source:new ol.source.TileWMS({url:"http://mapas.mma.gov.br/cgi-bin/mapserv?map=/opt/www/html/webservices/baseraster.map&",params:{'layers':"baseraster",'srs':"EPSG:4326",'format':"image/png"}})}),ol_wms:new ol.layer.Tile({title:"ESRI World Street Map",visible:false,isBaseLayer:true,name:"wsm",source:new ol.source.TileArcGISRest({url:"http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer",attributions:[new ol.Attribution({html:'Tiles © ArcGIS'})]})}),fundo:"e_ims,e_wsm,ol_mma,ol_wms,top_wms",kml:[],layersIniciais:[],botoes:{'pan':true,'zoombox':true,'zoomtot':true,'zoomin':true,'zoomout':true,'distancia':true,'area':true,'identifica':true,'linha':true,'ponto':true,'poligono':true,'texto':true,'edita':true,'listag':true,'corta':true,'apaga':true,'procura':true,'selecao':true,'selecaotudo':true,'salva':true,'ajuda':true,'propriedades':true,'fecha':false,'tools':true,'undo':false,'frente':false,'legenda':true,'rodadomouse':true},pontos:[],marca:"../pacotes/openlayers/img/marker-gold.png",controles:[],tiles:true,incluilayergrafico:true,ativalayerswitcher:false,ativarodadomouse:true,legendahtml:false,numzoom:12,minresolution:0.703125,maxext:"",mapext:[-76.5125927,-39.3925675209,-29.5851853,9.49014852081],mapa:"",inicia:function(){if(i3GEO.editorOL.controles.length===0){i3GEO.editorOL.controles=[new ol.interaction.DoubleClickZoom(),new ol.interaction.KeyboardPan(),new ol.interaction.KeyboardZoom(),new ol.interaction.MouseWheelZoom(),new ol.interaction.PinchRotate(),new ol.interaction.PinchZoom(),new ol.interaction.DragZoom(),new ol.interaction.DragPan(),new ol.control.Zoom(),new ol.control.ZoomSlider(),new ol.control.ScaleLine()]}var alayers=[],fundo=(i3GEO.editorOL.fundo).split(","),nfundo=fundo.length,ncontroles=i3GEO.editorOL.controles.length,i,n,temp;if(i3GEO.editorOL.ativarodadomouse==="false"){i3GEO.editorOL.ativarodadomouse=false}if(i3GEO.editorOL.ativarodadomouse==="true"){i3GEO.editorOL.ativarodadomouse=true}if(i3GEO.editorOL.legendahtml==="false"){i3GEO.editorOL.legendahtml=false}if(i3GEO.editorOL.legendahtml==="true"){i3GEO.editorOL.legendahtml=true}if(i3GEO.editorOL.incluilayergrafico==="false"){i3GEO.editorOL.incluilayergrafico=false}if(i3GEO.editorOL.incluilayergrafico==="true"){i3GEO.editorOL.incluilayergrafico=true}if(i3GEO.editorOL.incluilayergrafico===true){if(!i3GEO.desenho.layergrafico){i3GEO.editorOL.criaLayerGrafico()}}else{i3GEO.desenho.layergrafico="";i3GEO.editorOL.botoes.linha=false;i3GEO.editorOL.botoes.ponto=false;i3GEO.editorOL.botoes.poligono=false;i3GEO.editorOL.botoes.texto=false;i3GEO.editorOL.botoes.edita=false;i3GEO.editorOL.botoes.listag=false;i3GEO.editorOL.botoes.corta=false;i3GEO.editorOL.botoes.apaga=false;i3GEO.editorOL.botoes.selecao=false;i3GEO.editorOL.botoes.selecaotudo=false;i3GEO.editorOL.botoes.salva=false;i3GEO.editorOL.botoes.propriedades=false;i3GEO.editorOL.botoes.fecha=false;i3GEO.editorOL.botoes.tools=false;i3GEO.editorOL.botoes.undo=false;i3GEO.editorOL.botoes.frente=false}if(i3GEO.editorOL.mapa===""){alert("O objeto i3GEO.editorOL.mapa nao existe. Precisa ser criado com new OpenLayers.Map()");return}for(i=0;i=0;i--){if(fundo[i]!=""){try{i3GEO.editorOL[fundo[i]].transitionEffect='resize';i3GEO.editorOL[fundo[i]].setVisibility(false);i3GEO.editorOL[fundo[i]].singleTile=false;alayers.push(i3GEO.editorOL[fundo[i]])}catch(e){if(alayers[0]){alayers[0].setVisibility(true)}}}}}i3GEO.editorOL.mapa.addLayers(alayers);if(i3GEO.editorOL.layersIniciais!==""){n=i3GEO.editorOL.layersIniciais.length;for(i=0;i0){i3GEO.editorOL.mapa.removeLayer(i3GEO.editorOL.mapa.getLayersByName(camada.name)[0],false)}},coordenadas:function(){var idcoord=i3GEO.editorOL.mapa.getControlsBy("separator"," ");if(idcoord[0]){i3GEO.editorOL.mapa.events.register("mousemove",i3GEO.editorOL.mapa,function(e){var p,lonlat,d;if(navm){p=new OpenLayers.Pixel(e.x,e.y)}else{p=e.xy}lonlat=i3GEO.editorOL.mapa.getLonLatFromPixel(p);lonlat=i3GEO.util.projOSM2Geo(lonlat);d=i3GEO.calculo.dd2dms(lonlat.lon,lonlat.lat);try{$i(idcoord[0].id).innerHTML="Long: "+d[0]+"
Lat: "+d[1]}catch(e){}}})}},criaJanelaBusca:function(){var layers=i3GEO.editorOL.layersLigados(),nlayers=layers.length,i,ins,combo="";ins="
"+$trad("a7")+":
"+combo;ins+="
"+$trad("x64")+":
";ins+="
"+$trad("t23")+":
";ins+="

";ins+="
'"+$trad("result")+"':
";try{YAHOO.namespace("procura.container");YAHOO.procura.container.panel=new YAHOO.widget.Panel("panelprocura",{zIndex:2000,iframe:false,width:"250px",visible:false,draggable:true,close:true});YAHOO.procura.container.panel.setHeader("Encontre no mapa");YAHOO.procura.container.panel.setBody(ins);YAHOO.procura.container.panel.setFooter("");YAHOO.procura.container.panel.render(document.body);YAHOO.procura.container.panel.center();document.getElementById("i3GEOOLbotaoBusca").onclick=function(){var layer=i3GEO.editorOL.layerAtivo(),item=document.getElementById("i3GEOOLbuscaItem").value,palavra=document.getElementById("i3GEOOLpalavraBusca").value;if(item===""||palavra===""){alert("Escolha o item e o texto de busca");return}i3GEO.editorOL.busca(layer,item,palavra,"i3GEOOLcomboresultado")};document.getElementById("i3GEOOLlistaTemasBusca").onchange=function(){i3GEO.editorOL.ativaTema(this.value);document.getElementById("i3GEOOLcomboitens").innerHTML="...";i3GEO.editorOL.listaItens(i3GEO.editorOL.layerAtivo(),"i3GEOOLcomboitens","i3GEOOLbuscaItem")}}catch(e){}},criaComboTemas:function(){var layers=i3GEO.editorOL.layersLigados(),nlayers=layers.length,i,nometema="",temp,combo="";return combo},atualizaJanelaAtivaTema:function(){var combo=i3GEO.editorOL.criaComboTemas();YAHOO.temaativo.container.panel.setBody(combo);document.getElementById("i3GEOOLlistaTemasAtivos").onchange=function(){if(botaoIdentifica){botaoIdentifica.layers=[i3GEO.editorOL.layersLigados()[this.value]]}}},criaJanelaAtivaTema:function(){var temp;if(!document.getElementById("paneltemaativo")){YAHOO.namespace("temaativo.container");YAHOO.temaativo.container.panel=new YAHOO.widget.Panel("paneltemaativo",{zIndex:20000,iframe:true,width:"250px",visible:false,draggable:true,close:true});YAHOO.temaativo.container.panel.setBody("");if(i3GEO&&typeof i3GEO!=undefined&&i3GEO!=""){YAHOO.temaativo.container.panel.setHeader("Tema ativo
")}else{YAHOO.temaativo.container.panel.setHeader($trad("tativo"))}YAHOO.temaativo.container.panel.setFooter("");YAHOO.temaativo.container.panel.render(document.body);YAHOO.temaativo.container.panel.show();YAHOO.temaativo.container.panel.center();i3GEO.editorOL.atualizaJanelaAtivaTema();YAHOO.util.Event.addListener(YAHOO.temaativo.container.panel.close,"click",function(){i3GEOpanelEditor.deactivate();i3GEOpanelEditor.activate();if(i3GEO.eventos){i3GEO.eventos.adicionaEventos("ATUALIZAARVORECAMADAS",["i3GEO.editorOL.atualizaJanelaAtivaTema()"])}});if(i3GEO&&typeof i3GEO!=undefined&&i3GEO!=""){if(i3GEO.eventos){i3GEO.eventos.adicionaEventos("ATUALIZAARVORECAMADAS",["i3GEO.editorOL.atualizaJanelaAtivaTema()"])}}temp=$i("paneltemaativo_minimizaCabecalho");if(temp){temp.onclick=function(){i3GEO.janela.minimiza("paneltemaativo")}}}else{YAHOO.temaativo.container.panel.show();i3GEO.editorOL.atualizaJanelaAtivaTema()}},ativaTema:function(id){document.getElementById("i3GEOOLlistaTemasAtivos").value=id},layerAtivo:function(){var id=document.getElementById("i3GEOOLlistaTemasAtivos");if(id){id=id.value}else{id=i3GEO.temaAtivo}if(id==""){return[]}else{return i3GEO.editorOL.layersLigados()[id]}},listaItens:function(layer,idonde,idobj){if(!layer){return}if(!layer.params){return}var u=layer.url+"&request=describefeaturetype&service=wfs&version=1.0.0";u+="&typename="+layer.params.LAYERS;document.body.style.cursor="wait";document.getElementById("i3geoMapa").style.cursor="wait";OpenLayers.Request.issue({method:"GET",url:u,callback:function(retorno){document.body.style.cursor="default";document.getElementById("i3geoMapa").style.cursor="default";var fromgml=new OpenLayers.Format.WFSDescribeFeatureType({geometryName:"msGeometry"}),gml=fromgml.read(retorno.responseText),prop=gml.featureTypes[0].properties,nprop=prop.length,i,combo="";document.getElementById(idonde).innerHTML=combo},failure:function(){document.body.style.cursor="default";document.getElementById("i3geoMapa").style.cursor="default";alert("Erro")}})},busca:function(layer,item,palavra,onde){document.body.style.cursor="wait";document.getElementById("i3geoMapa").style.cursor="wait";var u=layer.url+"&request=getfeature&service=wfs&version=1.0.0";u=u.replace("Z=${z}&X=${x}&Y=${y}","");u+="&OUTPUTFORMAT=gml2&typename="+layer.params.LAYERS;u+="&filter="+item+"*"+palavra+"*";document.body.style.cursor="wait";document.getElementById("i3geoMapa").style.cursor="wait";document.getElementById(onde).innerHTML="...";OpenLayers.Request.issue({method:"GET",url:u,callback:function(retorno){document.body.style.cursor="default";document.getElementById("i3geoMapa").style.cursor="default";var fromgml=new OpenLayers.Format.GML({geometryName:"msGeometry"}),gml=fromgml.read(retorno.responseText),ngml=gml.length,i,ins="";document.getElementById(onde).innerHTML=ins},failure:function(){document.body.style.cursor="default";document.getElementById("i3geoMapa").style.cursor="default";alert("Erro")}})},zoomPara:function(bbox){var b=new OpenLayers.Bounds.fromString(bbox);i3GEO.editorOL.mapa.zoomToExtent(b)},mostraLegenda:function(){var layers=i3GEO.editorOL.layersLigados(),nlayers=layers.length,ins="",i,icone="",url,fers,f="",fer="";for(i=0;i

";eval("var f = function(retorno){document.getElementById('legendaL_"+i+"').innerHTML = retorno.responseText;};");var config={method:"GET",url:url,callback:f};OpenLayers.Request.issue(config)}else{url=url.replace("LAYERS","LAYER");url=url.replace("&Z=${z}&X=${x}&Y=${y}","");url=url.replace("Z=${z}&X=${x}&Y=${y}","");ins+=layers[i].name+"

"}}}catch(e){}}if(!document.getElementById("panellegendaeditorOL")){YAHOO.namespace("legendaeditorOL.container");YAHOO.legendaeditorOL.container.panel=new YAHOO.widget.Panel("panellegendaeditorOL",{zIndex:20000,iframe:true,width:"auto",visible:false,draggable:true,close:true});YAHOO.legendaeditorOL.container.panel.setBody(ins);YAHOO.legendaeditorOL.container.panel.setHeader($trad("p3"));YAHOO.legendaeditorOL.container.panel.setFooter("");YAHOO.legendaeditorOL.container.panel.render(document.body);YAHOO.legendaeditorOL.container.panel.show();YAHOO.legendaeditorOL.container.panel.center();YAHOO.util.Event.addListener(YAHOO.legendaeditorOL.container.panel.close,"click",function(){YAHOO.legendaeditorOL.container.panel.destroy()})}else{YAHOO.legendaeditorOL.container.panel.setBody(ins);YAHOO.legendaeditorOL.container.panel.show()}},captura:function(lonlat){var d=0.1,layers=[i3GEO.editorOL.layerAtivo()],xy=lonlat.split(","),u=layers[0].url+"&REQUEST=getfeature&service=wfs&version=1.0.0";u+="&OUTPUTFORMAT=gml2&typename="+layers[0].params.LAYERS;if(i3GEO.Interface.openlayers.googleLike===true){u+="&SRS=EPSG:3857"}u=u.replace("&cache=sim","&DESLIGACACHE=sim");u=u.replace("&Z=${z}&X=${x}&Y=${y}","");u=u.replace("Z=${z}&X=${x}&Y=${y}","");xy[0]=xy[0]*1;xy[1]=xy[1]*1;var poligono=(xy[0]-d)+","+(xy[1]+d)+" "+(xy[0]+d)+","+(xy[1]+d)+" "+(xy[0]+d)+","+(xy[1]-d)+" "+(xy[0]-d)+","+(xy[1]-d)+" "+(xy[0]-d)+","+(xy[1]+d);u+="&filter=Geometry"+poligono+"";document.body.style.cursor="wait";if(document.getElementById("i3geoMapa")){document.getElementById("i3geoMapa").style.cursor="wait"}OpenLayers.Request.issue({method:"GET",url:u,callback:function(retorno){document.body.style.cursor="default";if(document.getElementById("i3geoMapa")){document.getElementById("i3geoMapa").style.cursor="default"}var i,n,f,fromgml=new OpenLayers.Format.GML({geometryName:"msGeometry"}),gml=fromgml.read(retorno.responseText);n=gml.length;for(i=0;i0){if($i("panelsalvageometrias")){if(YAHOO.i3GEO){YAHOO.salvaGeometrias.container.panel=YAHOO.i3GEO.janela.manager.find("panelsalvageometrias")}YAHOO.salvaGeometrias.container.panel.show();YAHOO.salvaGeometrias.container.panel.bringToTop()}else{try{YAHOO.namespace("salvaGeometrias.container");YAHOO.salvaGeometrias.container.panel=new YAHOO.widget.Panel("panelsalvageometrias",{zIndex:2000,iframe:false,width:"250px",visible:false,draggable:true,close:true});YAHOO.salvaGeometrias.container.panel.setHeader($trad("u6"));YAHOO.salvaGeometrias.container.panel.setBody("");YAHOO.salvaGeometrias.container.panel.setFooter("");YAHOO.salvaGeometrias.container.panel.render(document.body);YAHOO.salvaGeometrias.container.panel.center();if(YAHOO.i3GEO&&YAHOO.i3GEO.janela){YAHOO.i3GEO.janela.manager.register(YAHOO.salvaGeometrias.container.panel)}YAHOO.salvaGeometrias.container.panel.show()}catch(e){}}ins+="

"+n+" "+$trad("geosel")+"

";ins+="

"+$trad("listar")+"  ";if(i3GEO.editorOL.nomeFuncaoSalvar&&i3GEO.editorOL.nomeFuncaoSalvar!=""){ins+=""+$trad("sdados")+"  "}if(typeof i3geoOL!=="undefined"){ins+=""+$trad("incorpo")+"

";ins+="

"+$trad("ajudaEditorOlSalva")+"

"}YAHOO.salvaGeometrias.container.panel.setBody(ins)}else{i3GEO.janela.tempoMsg($trad("selum"))}},exportarSHP:function(){i3GEO.editorOL.processageo("converteSHP")},incorporar:function(){i3GEO.editorOL.processageo("incorporar")},listaGeometriasSel:function(){var geos=i3GEO.desenho.layergrafico.selectedFeatures,n=geos.length,ins="",i,a,w,g;for(i=0;i"+$trad("u6")+": "+i+"
"+i3GEO.editorOL.google2wgs(g.geometry)+"

";ins+=""+$trad("atrib")+": "+i+"
";a=g.attributes;for(key in a){if(a[key]){ins+=key+" = "+a[key]+"
"}}if(g.attributes.registros){ins+=""+$trad("reg")+": "+i+"
";a=g.attributes.registros;for(key in a){if(a[key]){ins+=key+" = "+a[key]+"
"}}}ins+="
"}w=window.open();w.document.write(ins);w.document.close()},testeSalvar:function(){alert("Funcao nao disponivel. Defina o nome da funcao em i3GEO.editorOL.nomeFuncaoSalvar ")},salvaGeo:function(){var geos=i3GEO.desenho.layergrafico.selectedFeatures,n=geos.length,funcaoOK=function(){if(geos[0].geometry){var registros="",valorunico="",nometema=$i("editorOLcomboTemaEditavel").value,key="",tema,redesenha,p,g=i3GEO.editorOL.google2wgs(geos[0].geometry);if(nometema==""){return}tema=i3GEO.arvoreDeCamadas.pegaTema(nometema,"","name");if(geos[0].attributes.registros){registros=geos[0].attributes.registros;for(key in registros){if(registros[key]&&key==tema.colunaidunico){valorunico=registros[key]}}}redesenha=function(retorno){i3GEO.janela.fechaAguarde("aguardeSalvaPonto");i3GEO.desenho.layergrafico.removeFeatures(i3GEO.desenho.layergrafico.selectedFeatures);i3GEO.Interface.atualizaTema("",nometema)};i3GEO.janela.AGUARDEMODAL=true;i3GEO.janela.abreAguarde("aguardeSalvaPonto",$trad("adic")+"...");i3GEO.janela.AGUARDEMODAL=false;if(valorunico==""){p=i3GEO.configura.locaplic+"/ferramentas/editortema/exec.php?funcao=adicionaGeometria&g_sid="+i3GEO.configura.sid;cpJSON.call(p,"foo",redesenha,"&tema="+nometema+"&wkt="+g)}else{p=i3GEO.configura.locaplic+"/ferramentas/editortema/exec.php?funcao=atualizaGeometria&g_sid="+i3GEO.configura.sid;cpJSON.call(p,"foo",redesenha,"&idunico="+valorunico+"&tema="+nometema+"&wkt="+g)}}},funcaoCombo=function(obj){$i("editorOLondeComboTemaEditavel").innerHTML=obj.dados},texto=$trad("stema")+":


";if(n!=1){i3GEO.janela.tempoMsg($trad("seluma"))}else{i3GEO.janela.confirma(texto,300,$trad("salva"),$trad("canc"),funcaoOK);i3GEO.util.comboTemas("editorOLcomboTemaEditavel",funcaoCombo,"editorOLondeComboTemaEditavel","",false,"editavel")}},criaBotoes:function(botoes){var controles=[],adiciona=true,sketchSymbolizers={"Point":{pointRadius:4,graphicName:"square",fillColor:"white",fillOpacity:1,strokeWidth:1,strokeOpacity:1,strokeColor:"#333333"},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"#666666",strokeDashstyle:"dash"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"#666666",fillColor:"white",fillOpacity:0.3}};i3GEOpanelEditor=new OpenLayers.Control.Panel({displayClass:"olControlEditingToolbar1 noprint",saveState:false,activateControl:function(c){this.deactivate();this.activate();try{i3GEO.editorOL.ModifyFeature.deactivate();if(i3GEO&&i3GEO.barraDeBotoes){i3GEO.barraDeBotoes.ativaPadrao()}}catch(e){}if(!c.trigger){c.activate()}else{c.trigger.call()}}});if(botoes.procura===false){button=new OpenLayers.Control.Button({displayClass:"editorOLprocura",trigger:function(){YAHOO.procura.container.panel.show()},title:$trad("t23"),type:OpenLayers.Control.TYPE_BUTTON});controles.push(button);adiciona=true}if(botoes.pan===true){controles.push(new OpenLayers.Control.Navigation({title:"pan",displayClass:"editorOLpan",type:OpenLayers.Control.TYPE_TOOL}));adiciona=true}if(botoes.zoombox===true){controles.push(new OpenLayers.Control.ZoomBox({title:"zoombox",displayClass:"editorOLzoombox",type:OpenLayers.Control.TYPE_TOOL}));adiciona=true}if(botoes.zoomtot===true){button=new OpenLayers.Control.Button({displayClass:"editorOLzoomtot",trigger:function(){if(i3GEO.editorOL.mapext&&i3GEO.editorOL.mapext!=""){i3GEO.editorOL.mapa.zoomToExtent(i3GEO.editorOL.mapext)}else{i3GEO.editorOL.mapa.zoomToMaxExtent()}},title:$trad("d2t"),type:OpenLayers.Control.TYPE_BUTTON});controles.push(button);adiciona=true}if(botoes.zoomin===true){button=new OpenLayers.Control.Button({displayClass:"editorOLzoomin",trigger:function(){i3GEO.editorOL.mapa.zoomIn()},title:$trad("d5t"),type:OpenLayers.Control.TYPE_BUTTON});controles.push(button);adiciona=true}if(botoes.zoomout===true){button=new OpenLayers.Control.Button({displayClass:"editorOLzoomout",trigger:function(){i3GEO.editorOL.mapa.zoomOut()},title:$trad("d6t"),type:OpenLayers.Control.TYPE_BUTTON});controles.push(button);adiciona=true}if(botoes.legenda===true){button=new OpenLayers.Control.Button({displayClass:"editorOLlegenda",trigger:function(){i3GEO.editorOL.mostraLegenda()},title:$trad("p3"),type:OpenLayers.Control.TYPE_BUTTON});controles.push(button);adiciona=true}if(botoes.distancia===true){button=new OpenLayers.Control.Measure(OpenLayers.Handler.Path,{handlerOptions:{layerOptions:{styleMap:styleMap}},persist:true,displayClass:"editorOLdistancia",title:$trad("d21t"),type:OpenLayers.Control.TYPE_TOOL});button.events.on({"measure":function(event){var units=event.units,measure=event.measure;alert($trad("d21t")+": "+measure.toFixed(3)+" "+units)}});controles.push(button);adiciona=true}if(botoes.area===true){button=new OpenLayers.Control.Measure(OpenLayers.Handler.Polygon,{handlerOptions:{layerOptions:{styleMap:styleMap}},persist:true,displayClass:"editorOLarea",title:$trad("d21at"),type:OpenLayers.Control.TYPE_TOOL});button.events.on({"measure":function(event){var units=event.units;var measure=event.measure;alert($trad("d21at")+": "+measure.toFixed(3)+" "+units+"2")}});controles.push(button);adiciona=true}if(botoes.identifica===true){}if(botoes.linha===true){}if(botoes.ponto===true){}if(botoes.poligono===true){}if(botoes.texto===true){}if(botoes.edita===true&&botoes.corta===true&&i3GEO.php){}if(botoes.edita===true){}if(botoes.edita===true&&botoes.listag===true){}if(botoes.frente===true){}if(botoes.tools===true&&i3GEO.php){}if(botoes.selecao===true){}if(botoes.selecaotudo===true){}if(botoes.apaga===true){}if(botoes.propriedades===true){}if(botoes.salva===true){}if(botoes.ajuda===true){}if(botoes.fecha===true){}if(adiciona===true){i3GEOpanelEditor.addControls(controles)}},mudaSimbolo:function(estilo,id){var valor=$i(id).value,geos=i3GEO.desenho.layergrafico.selectedFeatures,n=geos.length,i;i3GEO.editorOL.simbologia[estilo]=valor;for(i=0;iEstilos (utilize a cor no formato r,g,b):

'+''+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+'
Cor do contorno';if(i3GEO.configura){ins+='aquarela.gif'}ins+=""+'
Cor do preenchimento';if(i3GEO.configura){ins+='aquarela.gif'}ins+=""+'
Cor da fonte';if(i3GEO.configura){ins+='aquarela.gif'}ins+=""+'
Tamanho da fonte
Opacidade (de 0 a 1)
Largura da linha/contorno
Url de uma figura
Largura e altura 
'+'
'+'

Ajusta nó em edição para o(a):

'+''+' '+' '+' '+' '+' '+' '+' '+' '+'
vérticeborda
'+'
'+'

Divide intersecção ao digitalizar

'+''+' '+' '+' '+'
borda
'+'
'+'

Operação ativada pelo botão de modificação da figura

'+''+' '+' '+' '+' '+' '+' '+' '+' '+'
altera figuraaltera tamanho
rotacionadesloca
';YAHOO.editorOL.container.panel.setBody(ins);if(i3GEO&&typeof i3GEO!=undefined&&i3GEO!=""){YAHOO.editorOL.container.panel.setHeader("Propriedades
")}else{YAHOO.editorOL.container.panel.setHeader("Propriedades")}YAHOO.editorOL.container.panel.setFooter("");YAHOO.editorOL.container.panel.render(document.body);YAHOO.editorOL.container.panel.center();YAHOO.util.Event.addListener(YAHOO.editorOL.container.panel.close,"click",function(){});temp=$i("panelpropriedadesEditor_minimizaCabecalho");if(temp){temp.onclick=function(){i3GEO.janela.minimiza("panelpropriedadesEditor")}}}YAHOO.editorOL.container.panel.show();temp=$i("panelpropriedadesEditor").getElementsByTagName("div");if(temp&&temp[2]){temp[2].style.overflow="auto"}},listaGeometrias:function(){if(!document.getElementById("panellistagEditor")){YAHOO.namespace("editorOL.listaGeometrias");YAHOO.editorOL.listaGeometrias.panel=new YAHOO.widget.Panel("panellistagEditor",{zIndex:20000,iframe:true,width:"320px",visible:false,draggable:true,close:true});if(i3GEO&&typeof i3GEO!=undefined&&i3GEO!=""){YAHOO.editorOL.listaGeometrias.panel.setHeader($trad("u6")+"
")}else{YAHOO.editorOL.listaGeometrias.panel.setHeader($trad("u6"))}YAHOO.editorOL.listaGeometrias.panel.setFooter("");YAHOO.editorOL.listaGeometrias.panel.render(document.body);YAHOO.editorOL.listaGeometrias.panel.center();YAHOO.util.Event.addListener(YAHOO.editorOL.listaGeometrias.panel.close,"click",function(){YAHOO.editorOL.listaGeometrias.panel.destroy()});temp=$i("panellistagEditor_minimizaCabecalho");if(temp){temp.onclick=function(){i3GEO.janela.minimiza("panellistagEditor")}}}else{YAHOO.editorOL.listaGeometrias.panel.render(document.body)}var g,temp,geos=i3GEO.desenho.layergrafico.features,n=geos.length,ins="";ins+="";while(n>0){n-=1;g=geos[n].geometry;ins+=""}ins+="
"+$trad("u6")+""+$trad("opcoes")+"
"+g.CLASS_NAME+"selecionalimpabrilha
";if(geos.length===0){ins=$trad("meneditor2")}YAHOO.editorOL.listaGeometrias.panel.show();if(i3GEO.configura){temp=$i("panellistagEditor").getElementsByTagName("div")[2]}else{temp=$i("panellistagEditor").getElementsByTagName("div")[1]}temp.style.overflow="auto";temp.style.height="100px";temp.innerHTML=ins},ferramentas:function(){if(!document.getElementById("panelferramentasEditor")){YAHOO.namespace("editorOL.ferramentas");YAHOO.editorOL.ferramentas.panel=new YAHOO.widget.Panel("panelferramentasEditor",{zIndex:20000,iframe:true,width:"300px",visible:false,draggable:true,close:true});var ins=""+'

'+$trad("opsel")+':

'+''+'

Apaga tudo';YAHOO.editorOL.ferramentas.panel.setBody(ins);if(i3GEO&&typeof i3GEO!=undefined&&i3GEO!=""){YAHOO.editorOL.ferramentas.panel.setHeader("Ferramentas
")}else{YAHOO.editorOL.ferramentas.panel.setHeader("Ferramentas")}YAHOO.editorOL.ferramentas.panel.setFooter("");YAHOO.editorOL.ferramentas.panel.render(document.body);YAHOO.editorOL.ferramentas.panel.center();YAHOO.util.Event.addListener(YAHOO.editorOL.ferramentas.panel.close,"click",function(){});temp=$i("panelferramentasEditor_minimizaCabecalho");if(temp){temp.onclick=function(){i3GEO.janela.minimiza("panelferramentasEditor")}}}else{YAHOO.editorOL.ferramentas.panel.render(document.body)}YAHOO.editorOL.ferramentas.panel.show()},snap:function(){var target=i3GEOOLsnap.targets[0],tipos=["node","vertex","edge"],ntipos=tipos.length,i,temp,ativa=false;i3GEOOLsnap.deactivate();for(i=0;i0){polis=i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.Polygon");linhas=i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.LineString");pontos=i3GEO.editorOL.retornaGeometriasTipo(geosel,"OpenLayers.Geometry.Point");temp=function(retorno){if(i3GEO.janela){i3GEO.janela.fechaAguarde("i3GEO.editorPoli");i3GEO.janela.fechaAguarde("i3GEO.editorLinhas");i3GEO.janela.fechaAguarde("i3GEO.editorPontos")}if(retorno!=""&&retorno.data&&retorno.data!=""&&operacao!="converteSHP"){i3GEO.editorOL.substituiFeaturesSel(retorno.data)}if(operacao==="converteSHP"){i3GEO.atualiza();i3GEO.janela.minimiza("paneltemaativo")}};if(operacao==="incorporar"){if(polis.length>0){temp=i3GEO.editorOL.merge(polis)}if(linhas.length>0){temp=i3GEO.editorOL.merge(linhas)}if(pontos.length>0){temp=i3GEO.editorOL.merge(pontos)}if(i3GEO.mapa){i3GEO.mapa.dialogo.wkt2layer(temp)}return}if(operacao==="union"&&!i3GEO.php){if(polis.length>0){temp=i3GEO.editorOL.uniaojts(polis);i3GEO.editorOL.substituiFeaturesSel(temp)}if(linhas.length>0){temp=i3GEO.editorOL.uniaojts(linhas);i3GEO.editorOL.substituiFeaturesSel(temp)}if(pontos.length>0){temp=i3GEO.editorOL.uniaojts(pontos);i3GEO.editorOL.substituiFeaturesSel(temp)}}else{if(polis.length>0){i3GEO.janela.abreAguarde("i3GEO.editorPoli","Poligonos");i3GEO.php.funcoesGeometriasWkt(temp,polis.join("|"),operacao)}if(linhas.length>0){i3GEO.janela.abreAguarde("i3GEO.editorLinhas","Linhas");i3GEO.php.funcoesGeometriasWkt(temp,linhas.join("|"),operacao)}if(pontos.length>0){i3GEO.janela.abreAguarde("i3GEO.editorPontos","Pontos");i3GEO.php.funcoesGeometriasWkt(temp,pontos.join("|"),operacao)}}return}else{i3GEO.janela.tempoMsg("Selecione pelo menos dois elementos")}},merge:function(geoms){var n=geoms.length,w=new Wkt.Wkt(),g,m,i;w.read(geoms[0].toString());if(n>1){for(i=1;i1){uniao=(fwkt.read(geoms[0]).geometry).toString();uniao=rwkt.read(uniao);for(i=1;i<=n;i++){g=(fwkt.read(geoms[i]).geometry).toString();uniao=uniao.union(rwkt.read(g))}uniao=wwkt.write(uniao);return[fwkt.read(uniao)]}else{return false}},retornaGeometriasTipo:function(features,tipo){var n=features.length,lista=[],i,temp;for(i=0;i0){i3GEO.desenho.layergrafico.removeFeatures(i3GEO.desenho.layergrafico.features);i3GEO.desenho.layergrafico.addFeatures(i3GEO.editorOL.backup.features)}if(document.getElementById("panellistagEditor")){i3GEO.editorOL.listaGeometrias()}},substituiFeaturesSel:function(wkt){i3GEO.editorOL.guardaBackup();try{var f,fwkt=new OpenLayers.Format.WKT();i3GEO.desenho.layergrafico.removeFeatures(i3GEO.desenho.layergrafico.selectedFeatures);f=fwkt.read(wkt);f["attributes"]={opacidade:i3GEO.editorOL.simbologia.opacidade,texto:i3GEO.editorOL.simbologia.texto,fillColor:i3GEO.editorOL.simbologia.fillColor,strokeWidth:i3GEO.editorOL.simbologia.strokeWidth,strokeColor:i3GEO.editorOL.simbologia.strokeColor,pointRadius:i3GEO.editorOL.simbologia.pointRadius,graphicName:i3GEO.editorOL.simbologia.graphicName};i3GEO.desenho.layergrafico.addFeatures([f]);if(document.getElementById("panellistagEditor")){i3GEO.editorOL.listaGeometrias()}}catch(e){i3GEO.editorOL.restauraBackup()}},adicionaFeatureWkt:function(wkt,atributos){var f,fwkt=new OpenLayers.Format.WKT();if(atributos.externalGraphic&&atributos.externalGraphic!=""){var style_mark=OpenLayers.Util.extend({},OpenLayers.Feature.Vector.style['default']);style_mark.externalGraphic=atributos.externalGraphic;style_mark.graphicWidth=atributos.graphicWidth;style_mark.graphicHeight=atributos.graphicHeight;style_mark.fillOpacity=atributos.opacidade;f=fwkt.read(wkt);f["attributes"]=atributos;f["style"]=style_mark}else{f=fwkt.read(wkt);f["attributes"]=atributos}i3GEO.desenho.layergrafico.addFeatures([f]);if(document.getElementById("panellistagEditor")){i3GEO.editorOL.listaGeometrias()}},flashFeaturesI:function(index){i3GEO.editorOL.flashFeatures([i3GEO.desenho.layergrafico.features[index]],0)},flashFeatures:function(features,index){if(!index){index=0}var current=features[index];if(current&¤t.layer===i3GEO.desenho.layergrafico){i3GEO.desenho.layergrafico.drawFeature(features[index],"select")}var prev=features[index-1];if(prev&&prev.layer===i3GEO.desenho.layergrafico){i3GEO.desenho.layergrafico.drawFeature(prev,"default")}++index;if(index<=features.length){window.setTimeout(function(){i3GEO.editorOL.flashFeatures(features,index)},75)}},selFeature:function(index){i3GEO.editorOL.selbutton.select(i3GEO.desenho.layergrafico.features[index])},unselFeature:function(index){i3GEO.editorOL.selbutton.unselect(i3GEO.desenho.layergrafico.features[index])},carregajts:function(funcao){if(i3GEO.configura){i3GEO.util.scriptTag(i3GEO.configura.locaplic+"/pacotes/jsts/lib/jsts.js",funcao,"i3GEOjts",true)}else{i3GEO.util.scriptTag("../pacotes/jsts/lib/jsts.js",funcao,"i3GEOjts",true)}},trazParaFrente:function(){var features=i3GEO.desenho.layergrafico.selectedFeatures;if(features.length>0){i3GEO.editorOL.backup=new OpenLayers.Layer.Vector("Backup",{displayInLayerSwitcher:false,visibility:false});i3GEO.editorOL.backup.addFeatures(features);i3GEO.editorOL.unselTodosBackup();i3GEO.desenho.layergrafico.removeFeatures(features);i3GEO.desenho.layergrafico.addFeatures(i3GEO.editorOL.backup.features);if(document.getElementById("panellistagEditor")){i3GEO.editorOL.listaGeometrias()}}else{i3GEO.janela.tempoMsg("Selecione pelo menos um elemento")}},pegaControle:function(classe){var n=i3GEO.editorOL.controles.length,i;for(i=0;i'; echo ''; + echo ''; echo ''; echo '
'; echo '
 
'; -- libgit2 0.21.2