[Mapbender-users] Adressen-Navigation

Spacebernsen andreasnahser at gmx.de
Fri Oct 5 07:25:36 PDT 2012


Hallo Mapbender-Gemeinde!

NAch ca. zwei wochen oder einer gefühlten ewigkeit ist es nun soweit. meine
Ortssuche funktioniert. Da ab php 5.4 einige Funktionen nicht mehr
funktionieren hier einmal die veränderte adress_nav.php.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Adressensuche</title>
    <link rel="stylesheet" type="text/css" href="../css/adressnav.css">
</head>
<body>
<?php
// 2009-06-25: Umstellung Adress-DB auf WFS-T-Erfassung, mandantenfaehige
Programmversion (gkz=)
// 2011-06-21: Umstellung DB auf UTF-8
// 2011-07-18: EPSG variabel (transformieren), nur noch eine Conf
// 2011-10-27: nach Positionierung 'showHighlight'
//                Functions: parent.parent.mb_showHighlight =>
parent.showHighlight
ini_set("display_errors", TRUE);
error_reporting(-1 ^ E_NOTICE);
include("../../conf/adressnav.conf");
//import_request_variables("PG"); veraltet
//extract($_REQUEST, EXTR_PREFIX_ALL|EXTR_REFS, 'v'); // neu
$_GET['epsg'] = str_replace("EPSG:", "" , $_GET["epsg"]);   
$con_string = "host=$host port=$port dbname=$dbname user=$user
password=$password";
$con=pg_connect ($con_string) or die ("Fehler bei der Verbindung zur
Datenbank ".$dbname);

// Strassen nach Name(-nsanfang) suchen, Straßenliste ausgeben
function getStreetsByName() {
    global $con, $scale_str;
    $sql="SELECT ST_AsText(geom) AS x, skey, sname FROM adressen.stra WHERE
sname ILIKE $1 ORDER BY sname";
    preg_match("/^(\D+)(\d*)(\D*)/",$_GET['street'],$matches); # 4 matches
name/nr/zusatz echo "match: ".$matches[1].",".$matches[2].",".$matches[3];
    $matches[1] = preg_replace("/strasse/i","str", $matches[1]);
    $matches[1] = preg_replace("/str\./i","str", $matches[1]);
    if(preg_match("/\*/",$matches[1])){
        $mat=trim(preg_replace("/\*/i","%", strtoupper($matches[1])));
    } else {
        $mat=trim($matches[1])."%";
    }
    $v=array($mat);
    $res=pg_prepare("", $sql);
    $res=pg_execute("", $v);
    $str="";
    $cnt=0;
    while($row = pg_fetch_array($res)) {
        preg_match('/.*\((.*) (.*)\)/',$row['x'],$coords);
        $skey=$row["skey"];
        $sname=$row["sname"];
        $str.="\n ".$sname." <javascript:";
            $str.=>  <br>";
        $cnt++;
    }
    if($cnt == 0) { $str = "Kein Ergebnis.";}
    if($cnt == 1) { $_GET['str_schl']=$skey;}
    return $str;
}

// Nach einem Straßenschlüssel suchen, Haeuser zu der Strasse ausgeben
function getStreetByKey(){
    global $con, $scale_hn, $scale_str;
    $sql= "SELECT DISTINCT ST_AsText(geom) AS xs, sname FROM adressen.stra
WHERE skey = $1 ";
    $v=array($_GET['str_schl']);
    $res=pg_prepare("", $sql);
    $res=pg_execute("", $v);
    if($row = pg_fetch_array($res)) { // stra gefunden
        preg_match('/.*\((.*) (.*)\)/',$row['xs'],$coords);
        $sname=$row["sname"];

        // Kopfzeile zur Straße
        echo " ".$sname." (".$_GET['str_schl'].") <javascript:";
            echo >  \n<hr>";

        $sql= "SELECT DISTINCT nr, zus, ST_AsText(geom) AS x FROM
adressen.haus WHERE skey = $1 ORDER BY adressen.haus.nr, adressen.haus.zus
ASC";
        $v=array($_GET['str_schl']);
        $res=pg_prepare("", $sql);
        $res=pg_execute("", $v);

        // Liste der Hausnummern
        $cnt=0;
        $count=0;
        echo "\n
";
        while($row = pg_fetch_array($res)) {
            if($count == 0) {
                echo "\n
";
            }
            $nr=$row["nr"];
            $zus=$row["zus"];
            preg_match('/.*\((.*) (.*)\)/',$row['x'],$coords);
            echo "	 ".$nr.$zus." <javascript:";
                echo
"parent.parent.mb_repaintScale(\"mapframe1\",".$coords[1].",".$coords[2].",".$scale_hn.");
";
                echo "parent.showHighlight(".$coords[1].",".$coords[2].");>  
";
            echo ">".$nr.$zus." 	";
            $cnt++;
            $count++;
            if($count == 5){
                echo "";
                $count=0;
            }
        }
        echo "\n
";
    } else {
        echo "Kein Ergebnis.";
    }
}
// Hier Start
if(isset($_GET['street']))
{
    if (is_numeric($_GET['street'])) $_GET['str_schl'] = $_GET['street'];
    else $str = getStreetsByName();
}
//else echo "Street ist nicht gesetzt <br />";


if(isset($_GET['str_schl'])) $str = getStreetByKey();
else echo $str;
?>
</body>
</html>


bis zum nächsten mal!



--
View this message in context: http://osgeo-org.1560.n6.nabble.com/Re-Adressen-Navigation-tp5004927p5006686.html
Sent from the mapbender-users mailing list archive at Nabble.com.


More information about the Mapbender_users mailing list