0){ return substr($s,$c+1); } else{ return $s; } } $wfsRequest = $url . urlencode($filter); $connection = new connector($wfsRequest); $data = $connection->file; if (!$data) die('wfs not available'); $geometries = array('Point', 'Polygon', 'LineString', 'MultiPolygon', 'MultiLineString'); //TODO: // parsing via class_gml // add method toJSON to classGML $parser = xml_parser_create(); xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); xml_parser_set_option($parser,XML_OPTION_TARGET_ENCODING,CHARSET); xml_parse_into_struct($parser,$data,$values,$tags); xml_parser_free($parser); $member = -1; $section = false; $geom = false; $memberHasBeenCreated = false; $str = array(); $geomtype = array(); $el = -1; $fid = -1; $typename = $_REQUEST["typename"]; $element_str = ""; $geom_str = ""; foreach ($values as $element) { if(strtoupper($element[tag]) == strtoupper("gml:featureMember") && $element[type] == "open"){ $member++; $section = true; $cnt_geom = 0; } else if(strtoupper($element[tag]) == strtoupper($typename) && $element[type] == "open") { $fid = $element[attributes][fid]; } else if(in_array(sepNameSpace($element[tag]),$geometries) && $element[type] == "open" && $section == true){ $geom = true; if (sepNameSpace($element[tag]) == "MultiLineString") { $geom_str .= "geom.addMember(geomType.line);\n"; $memberHasBeenCreated = true; } else if (sepNameSpace($element[tag]) == "MultiPolygon" ) { $geom_str .= "geom.addMember(geomType.polygon);\n"; $memberHasBeenCreated = true; } elseif (sepNameSpace($element[tag]) == "Point") { $geom_str .= "geom.addMember(geomType.point);\n"; $memberHasBeenCreated = true; $geom_str .= "geom.get(-1).addGeometry();\n"; } elseif (sepNameSpace($element[tag]) == "LineString") { if (!$memberHasBeenCreated) { $geom_str .= "geom.addMember(geomType.line);\n"; $memberHasBeenCreated = true; } $geom_str .= "geom.get(-1).addGeometry();\n"; } else if (sepNameSpace($element[tag]) == "Polygon" ) { if (!$memberHasBeenCreated) { $geom_str .= "geom.addMember(geomType.polygon);\n"; $memberHasBeenCreated = true; } $geom_str .= "geom.get(-1).addGeometry();\n"; } else { $geom_str .= "alert('unknown geomtype ".sepNameSpace($element[tag])."');"; } // TO DO: the following is added twice! Once suffices. $element_str .= "geom.get(" . $member . ").e.setElement('fid', '".$fid."');\n"; $element_str .= "geom.get(" . $member . ").wfs_conf = ".$_REQUEST['wfs_conf_id'].";\n"; } else if(strtoupper($element[tag]) == strtoupper("gml:coordinates") && $geom == true){ $tmp = str_replace(",,","",str_replace(" ",",",trim($element[value]))); $geom_str .= "var tmp1 = '".$tmp."';\n"; $geom_str .= "var tmp = tmp1.split(',');\n"; $geom_str .= "for (var i = 0 ; i < tmp.length ; i+=2) {\n"; $geom_str .= "\tgeom.getGeometry(-1,-1).addPointByCoordinates(parseFloat(tmp[i]), parseFloat(tmp[i+1]));\n"; $geom_str .= "}\n"; $geom_str .= "geom.close();\n"; $cnt_geom++; } else if(in_array(sepNameSpace($element[tag]),$geometries) && $element[type] == "close"){ $geom = false; $memberHasBeenCreated = false; } else if($section == true && $geom == false && $element[value]){ $el++; $str = $element[value]; $element_str .= "geom.get(" . $member . ").e.setElement('".sepNameSpace($element[tag])."', '".addslashes($str)."');\n"; } else if(strtoupper($element[tag]) == strtoupper("gml:featureMember") && $element[type] == "close"){ $section = false; $el = -1; } } if ($geom_str != "") { $geom_str = "var geom = new GeometryArray();\n" . $geom_str; } header('Content-type: text/html'); echo $geom_str; echo $element_str; ?>