/** * Aplica um filtro para mostrar apenas uma regiao escolhida pelo usuario * Altera todos os layers com o mesmo codigo_tipo_regiao * Se codigo_tipo_regiao for vazio, remove os filtros de todos os layers * @param arquivo mapfile do mapa atual * @param codigo da regiao * @param valor da regiao (id) * @return string */ function analise_aplicafiltroregiao($map_file, $codigo_tipo_regiao, $codigo_regiao) { //echo $codigo_tipo_regiao;exit; $m = new Metaestat(); $mapa = ms_newMapObj($map_file); $layersm = analise_listaLayersMetaestat($mapa); if (count($layersm) > 0) { //remove o filtro if (empty($codigo_tipo_regiao)) { foreach ($layersm as $l) { $data = $l->data; //substitui os marcadores definidos na construcao do layer. Veja a classe metaestat $s = explode("/*FR*/", $data); if (count($s) > 1) { $data = $s[0] . "/*FR*//*FR*/" . $s[2]; } $l->set("data", $data); } } else { //pega as regioes que sao filhos de $codigo_tipo_regiao $regioesfilho = $m->listaHierarquiaRegioes($codigo_tipo_regiao); //if(count($regioesfilho) > 0){ $regiao = $m->listaTipoRegiao($codigo_tipo_regiao); $filtro = $regiao["identificador"] . "::text = '{$codigo_regiao}'"; $layers = analise_listaLayersRegiao($layersm, $codigo_tipo_regiao); foreach ($layers as $l) { $data = $l->data; //substitui os marcadores definidos na construcao do layer. Veja a classe metaestat $s = explode("/*FR*/", $data); if (count($s) > 1) { $data = $s[0] . "/*FR*/ AND " . $filtro . " /*FR*/" . $s[2]; } $l->set("data", $data); } //} //else{ foreach ($regioesfilho as $r) { $regiao = $m->listaTipoRegiao($r["codigo_tipo_regiao"]); $filtro = $r["colunaligacao_regiaopai"] . "::text = '{$codigo_regiao}'"; $layers = analise_listaLayersRegiao($layersm, $r["codigo_tipo_regiao"]); foreach ($layers as $l) { $data = $l->data; //substitui os marcadores definidos na construcao do layer. Veja a classe metaestat $s = explode("/*FR*/", $data); if (count($s) > 1) { $data = $s[0] . "/*FR*/ AND " . $filtro . " /*FR*/" . $s[2]; } $l->set("data", $data); } } //} } } $mapa->save($map_file); return "ok"; }
Valor: LISTATIPOREGIAO Lista de tipos de regiao Retorno: {JSON} */ case "LISTATIPOREGIAO": $m = new Metaestat(); retornaJSON($m->listaTipoRegiao($codigo_tipo_regiao)); exit; break; case "LISTAHIERARQUIAREGIOES": $m = new Metaestat(); $regioes = $m->listaHierarquiaRegioes($codigo_tipo_regiao); $valores = ""; //se achou apenas uma regiao, pega os valores if (count($regioes) < 2 && $codigo_tipo_regiao != "") { $valores = $m->listaDadosRegiao($codigo_tipo_regiao, $_GET["codigoregiaopai"], $_GET["valorregiaopai"]); } retornaJSON(array("regiaopai" => $codigo_tipo_regiao, "regioes" => $regioes, "valores" => $valores)); exit; break; case "LISTAREGIOESMEDIDA": $m = new Metaestat(); retornaJSON($m->listaRegioesMedida($id_medida_variavel)); exit; break; case "LISTAAGREGAREGIAO": $m = new Metaestat();