< >

stadtplan.php


Quell Code


<?php
$planWidth=800;        // pixel; Breite des Stadtplans
$planHeight=600;       // pixel; Hoehe des Stadtplans
$roadSizeBase=12;      // pixel; Breite einer Strasse
$roadsMinDistHoriz=60; // pixel; Mindestabstand rechter Rand einer Strasse zum linken Rand der rechts liegenden Parallelstrasse
$roadsMinDistVert=80;  // pixel; Mindestabstand unterer Rand einer Strasse zum oberen Rand der darunter liegenden Parallelstrasse
$planOffsetLeft=30;    // pixel; erste X-Koordinate der ganz links liegenden Strasse
$planOffsetTop=20;     // pixel; erste Y-Koordinate der ganz oben liegenden Strasse

$img=imagecreatetruecolor($planWidth,$planHeight);
$bgcolor=imagecolorallocate($img,128,128,128);
imagefill($img,0,0,$bgcolor);

$roadColorBase=imagecolorallocate($img,0,0,0);

$roads=array(); // erhaelt die [Rechteck-]Koordinaten jeder Strasse
$streetID=0;    // jede Strasse bekommt eine ID; hier einfacher Zaehler, der hochgezaehlt wird
                // erste Strasse bekommt ID 1, zweite Strasse ID 2 etc.

// die Strassennamen sind hier in einem eigenen Array definiert,
// werden aber nochmal in das roads-Array uebernommen.
// Ist nicht zwingend noetig, aber so hat man alles in einem Array.
// Gleiches gilt fuer die Strassenlinks.
$strassenNamen=array(
  1 => 'Strasse #1',
  2 => 'Strasse #2',
  3 => 'Strasse #3',
  4 => 'Strasse #4',
  5 => 'Strasse #5',
  6 => 'Strasse #6',
  7 => 'Strasse #7',
  8 => 'Strasse #8',
  9 => 'Strasse #9',
 10 => 'Strasse #10',
 11 => 'Strasse #11',
 12 => 'Strasse #12',
 13 => 'Strasse #13',
 14 => 'Strasse #14',
 15 => 'Strasse #15',
 16 => 'Strasse #16',
 17 => 'Strasse #17',
 18 => 'Strasse #18'
);

$strassenLinks=array(
  1 => 'http://www.example.com',
  2 => 'http://www.example.com',
  3 => 'http://www.example.com',
  4 => 'http://www.example.com',
  5 => 'http://www.example.com',
  6 => 'http://www.example.com',
  7 => 'http://www.example.com',
  8 => 'http://www.example.com',
  9 => 'http://www.example.com',
 10 => 'http://www.example.com',
 11 => 'http://www.example.com',
 12 => 'http://www.example.com',
 13 => 'http://www.example.com',
 14 => 'http://www.example.com',
 15 => 'http://www.example.com',
 16 => 'http://www.example.com',
 17 => 'http://www.example.com',
 18 => 'http://www.example.com'
);

$areas=''; // !! wird ausgegeben, aber muss im Quelltext gefunden werden, weil <area>-Tags; einfuegen in usemap

// ######################
// vertikale Strassen
// ######################
// fuer senkrechte Strassen: linken Rand beachten. Y-Werte gehen von 0 bis $planHeight
// hier wird ein Rechteck als erste senkrechte Strasse definiert
$x1=$planOffsetLeft;
$y1=0;
$x2=$x1+$roadSizeBase;
$y2=$planHeight;

WHILE($x2 < $planWidth)
{
 // die Koordinaten eines Rechtecks sind die Definition der Strasse.
 // Zwar gibt es Ueberschneidungen an den Kreuzungen, aber damit muss man leben.
 $streetID++;
 $roads[$streetID]=array($x1,$y1,$x2,$y2,$strassenNamen[$streetID],$strassenLinks[$streetID]);
 $areas.="<area id=\"$streetID\" shape=\"rect\" coords=\"$x1,$y1,$x2,$y2\" href=\"$strassenLinks[$streetID]\" title=\"$strassenNamen[$streetID]\">\n";
 imagefilledrectangle($img,$x1,$y1,$x2,$y2,$roadColorBase);
 $x1=$x2+$roadsMinDistHoriz;
 $x2=$x1+$roadSizeBase;
}

// ######################
// horizontale Strassen
// ######################
// fuer waagerechte Strassen: oberen Rand beachten. X-Werte gehen von 0 bis $planWidth
// hier wird ein Rechteck als erste waagerechte Strasse definiert
$x1=0;
$y1=$planOffsetTop;
$x2=$planWidth;
$y2=$y1+$roadSizeBase;

WHILE($y2 < $planHeight)
{
 $streetID++;
 $roads[$streetID]=array($x1,$y1,$x2,$y2,$strassenNamen[$streetID],$strassenLinks[$streetID]);
 $areas.="<area id=\"$streetID\" shape=\"rect\" coords=\"$x1,$y1,$x2,$y2\" href=\"$strassenLinks[$streetID]\" title=\"$strassenNamen[$streetID]\">\n";
 imagefilledrectangle($img,$x1,$y1,$x2,$y2,$roadColorBase);
 $y1=$y2+$roadsMinDistVert;
 $y2=$y1+$roadSizeBase;
}

imagejpeg($img,'plan1.jpg');
imagedestroy($img);

//print_r($roads);
echo$areas;
?>

Add Comment

* Required information
1000
Powered by Commentics

Comments (1)

Gravatar
Admin
Sascha65says...

Die Canvas Balken Uhr ist ja mal Fett