![]() | ||||||||
![]() |
Karte | Kalender | Suche | Bookmarks | Experte | FAQ |
ModuleDownloadSMFinder_Admin_genMapWird verwendet von:SMFinder_Main Diese Funktion aktualisiert die Übersichtskarte - da dies etwas dauert, wird die Funktion nur gelegentlich von einem Admin aufgerufen und nicht bei jedem Abruf der Karte. Es werden alle Einträge <adr> abgefragt und wenn Von aussortierten Einträgen wird die UID rot angezeigt, wenn keine geographischen Angaben gefunden wurden und blau, wenn es sich nicht um einen Eintrag aus Deutschland handelt. Neue Version mit svg-Grafik: Alte Version mit png-Grafik: Die Anzeige der Karte erfolgt mit per css positionierten Grafikelementen. Die Karte liegt im Hintergrund und für jeden Ort wird ein Symbol eingeblendet. Die Karte wurde mit xFig erzeugt, indem eine geeignete Vorlage in den Hintergrund gelegt wurde. Dann können die Kontouren - ggf. in verschiedenen Ebenen für verschiedene Informationen, wie Bundesländer oder Flüsse oder einige Städte zur Festlegung der Skalierung (s.o.) - nachgezeichnet werden. So entsteht eine Vektorgrafik, die sich beliebig skalieren und (ohne die Hintergrundgrafik) in verschiedenen Formaten speichern lässt. Da das xFig-Format ASCII-basiert ist, können die Farben mit Suchen&Ersetzen getauscht werden - und man könnte einen Export der SM-Finder-Übersichtskarte schreiben, der auf diesem Weg eine Vektorgrafik erzeugt, die großformatig zu Präsentationszwecken genutzt werden könnte. Die existenten Graphiken findest du unter SMFinder_Help_Download. <?php /* published under GPL www.gnu.org/licenses/gpl.html */ function SMFinder_Admin_genMap(){ include_once("SMFinder_Config.php"); $cityColor="yellow"; $searchRadius=30; #km $symbolRadius=7; $svg=SMFinder_genMapReadMap($GLOBALS['docDir'],"SMFinder_MapDACH.svg"); /* delte example cities from documentation */ $splitPos=strpos($svg,"<g id=\"staedte\"")+16; $svg=substr($svg,0,$splitPos)." transform=\"translate(42,0)\">"; /* add each existing city */ $fname=$GLOBALS['someDir']."SMFinder_Map.svg"; $fid = fopen($fname, "w"); fwrite($fid, $svg); list($city,$geoLat,$geoLon) = getGeo4Map(); $bad =array(" ","ä","ö","ü","ß"); $good=array("_","ae","oe","ue","ss"); for ($c=0;$c<count($city);$c++){ $cy=8862 -161*$geoLat[$c]; $cx=-621 +107*$geoLon[$c]; $thisCity ="<a xlink:href='../index.php?what2do=find&lat=".$geoLat[$c]."&lon=".$geoLon[$c]."&Radius=".$searchRadius."&calType=static' target='_parent'>\n"; $thisCity.=" <circle class='citySymbol'\n"; $thisCity.=" cx='".$cx."' cy='".$cy."' r='".$symbolRadius."'>\n"; $cityID=str_replace($bad,$good,$city[$c]); $thisCity.=" <title id='".$cityID."'>".$cityID."</title>\n"; $thisCity.="</circle>\n"; $thisCity.="</a>\n"; fwrite($fid, $thisCity); } #c $svgFoot="</g>\n</g> <!-- EndOfKarte -->\n</svg>\n"; fwrite($fid, $svgFoot); fclose($fid); /* for old InternetExplorer which does not support SVG */ SMFinder_Admin_genMap_old($city,$geoLat,$geoLon); } function SMFinder_genMapReadMap($dir,$SVGname){ /* read original Map.svg */ $fname=$dir.$SVGname; if (file_exists($fname)) { $fid = fopen($fname, "r"); $line = fgets( $fid, 240000 ); while(!feof($fid)){ $svg.=trim($line)."\n"; $line = fgets( $fid, 240000 ); } fclose($fid); }else{ echo "<p><aj>File not found: ".$fname."</aj></p>"; } /* $colorOrig=array(":green;",":lime;",":teal;"); for ($c=0;$c<count($color);$c++){ $color[$c]=":".$color[$c].";"; $svg=str_replace($colorOrig[$c],$color[$c],$svg); } #c */ return $svg; } function SMFinder_Admin_genMap4Variants(){ $SVGorig = SMFinder_genMapReadMap($GLOBALS['someDir'],"SMFinder_Map.svg"); for($variant=1;$variant<=count($GLOBALS['extSMFinder']);$variant++){ $style=$GLOBALS['extSMFinder'][$variant]; if($style[0]=="."){$style=".".$style;} $varNo=sprintf("%03d",$variant); $SVGvar = str_replace("index.php?w","index.php?pageID=".$varNo."&w",$SVGorig); $SVGvar = str_replace("../SMFinder_Style.css",$style,$SVGvar); $fname=$GLOBALS['someDir']."SMFinder_Map".$varNo.".svg"; $fid = fopen($fname, "w"); fwrite($fid, $SVGvar); fclose($fid); } #variant } function getGeo4Map(){ $dblink=mysql_connect($GLOBALS['dbserver'],$GLOBALS['dbuser'],$GLOBALS['dbpasswd']); mysql_select_db($GLOBALS['dbname'],$dblink); $Orte=array(); $lats=array(); $lons=array(); $PLZn=array(); $anfrage="select * from ".$GLOBALS['DBTadr'].";"; if ($ergebnis=mysql_query($anfrage)){ while ($zeile=mysql_fetch_row($ergebnis)){ $testStatus="select * from ".$GLOBALS['DBTaddress']." where UID='".$zeile[2]."';"; $finger=mysql_query($testStatus); $status=mysql_fetch_row($finger); if ($status[1]=="ok" ){ if ($zeile[9+1]!=0){ $country=$zeile[8+1]; if ($country[0]=="D"){ #Germany array_push($Orte, $zeile[5+1]); array_push($PLZn, $zeile[4+1]); array_push($lats, $zeile[9+1]); array_push($lons, $zeile[10+1]); echo " <span style='background-color:#00ff00;'>".$zeile[2]."</span><br>"; }elseif($country[0]=="A"){ #Austria array_push($Orte, $zeile[5+1]); array_push($PLZn, $zeile[4+1]); array_push($lats, $zeile[9+1]); array_push($lons, $zeile[10+1]); echo " <span style='background-color:teal;'>".$zeile[2]."</span><br>"; }else{ #rest of world echo " <span style='background-color:#0000ff;'>".$zeile[2]."</span>".$country."<br>"; } }else{ echo " <span style='background-color:red;'>".$zeile[2]."</span><br>"; } } } //while mysql_free_result($ergebnis); }else{ echo "Fehler=".mysql_error()."<br>"; } mysql_close($dblink); /* sort by cities and delete multiples */ array_multisort($Orte, $lats, $lons); $city[0]=$Orte[0]; $geoLat[0]=$lats[0]; $geoLon[0]=$lons[0]; $j=0; for ($i=1; $i<count($lats); $i++){ if ($Orte[$i]!=$city[$j]){ $j++; $city[$j]=$Orte[$i]; $geoLat[$j]=$lats[$i]; $geoLon[$j]=$lons[$i]; } } #i return array($city,$geoLat,$geoLon); } function SMFinder_Admin_genMap_old($city,$geoLat,$geoLon){ #list($city,$geoLat,$geoLon) = getGeo4Map(); $headerteil=""; $katenteil=""; for ($i=0; $i<count($geoLat); $i++){ if ($geoLat[$i]!=0){ $y=5768.2-102.8*$geoLat[$i]+15-125; /* 10 weil BVSM-Logo so gross 8-( */ $x=-190.5+64*$geoLon[$i]+18-200; /* 18 ist Zugestaendnis an IE */ $yy=5768.2-102.8*$geoLat[$i]+15; settype($x,"integer"); settype($y,"integer"); settype($yy,"integer"); $ort=$city[$i]; $city[$i]=preg_replace('/\s/m', '_', $city[$i]); $headerteil.="#".$city[$i]." {position:absolute; top:".$y."px; left:".$x."px; }\n"; $headerteil_00.="#".$city[$i]." {position:absolute; top:".$yy."px; left:".$x."px; }\n"; $kartenteil.="<div class='stadt' id='".$city[$i].# "'><a class='ort' href='".$_SERVER['PHP_SELF']."?what2do=find&lat=".# $geoLat[$i]."&lon=".$geoLon[$i].# "&Radius=30'><img src='./Grafik/stadt.png' title='".$city[$i].# "' border='0'></a></div>\n"; } } $kartenteil.="<p height='810px'></p>"; $fname=$GLOBALS['someDir']."SMFinder_Kartenstyle.php"; $fid = fopen($fname, "w"); fwrite($fid, $headerteil); fclose($fid); $fname=$GLOBALS['someDir']."SMFinder_Kartenstyle_00.php"; $fid = fopen($fname, "w"); fwrite($fid, $headerteil_00); fclose($fid); $fname=$GLOBALS['someDir']."SMFinder_Kartenteil.php"; $fid = fopen($fname, "w"); fwrite($fid, $kartenteil); fclose($fid); echo "neue Karte erzeugt"; } ?> IndexFür die Funktionalität des SM-Finders sind viele kleine Tools notwendig. Alle Funktionen beginnen mit SMFinder_ um deren Ursprung zu kennzeichnen. Dem schließt sich die Funktionsgruppe, z.B. Geo_ an, gefolgt vom eigentlichen Namen, der die Aufgabe der Funktion widerspiegeln soll, z.B. PLZ2DB. Der gesamte Sourcecode darf gemäß GNU General Public License weiterverbreitet werden. |
![]() |
Die hier zur Verfügung gestellten Informationen basieren auf dem Austauschnetzwerk des SM-Finders.
Änderungen an eurem Datensatz könnt ihr z.B. beim Arbeitskreis SM-Finder vornehmen.
Bei Fragen und Problemen schreibt bitte an: sm-finderki-co.org
Der AK-SM-Finder ist korporatives Mitglied der BVSM e.V.
Für Aktualität und Richtigkeit der dargebotenen Infomationen kann keine Gewähr übernommen werden!