Vollstndige Version anzeigen : bild koordinaten erstellung??? - hilfe gesucht -
Hallo,
ich hab da mal eine fragen wie man das folgende realisieren kann.
Ihc habe ein Bild (in Form einer Landkarte) und ich mchte das der jeweiige Besucher die Position seines Wohnort auf dieser karte eintragen (anklicken) kann. Wenn er dann auf der Karte seine Position angeklickt hat und auf "ok" klickt soll ein Bild erstellt werden wo die Position in Form eines kleinen Kreises dagestellt wird.
ein bsp fr die ausgabe seht ihr auf dem bild hier:
http://www.traum-ferienwohnungen.de/bilder/karten/3567.png?rl=17
Kann mir bitte jemand helfen wie man das realsiert???
In Javascript kannst du mit window.event.x / window.event.y (http://de.selfhtml.org/javascript/objekte/event.htm#x_y) ermitteln, an welche Stelle ein Benutzer geklickt hat (funktioniert nur im IE). Einen Kreis kannst du in PHP mit der Funktion imagearc() (http://de.php.net/manual/de/function.imagearc.php) einen Kreis zeichnen.
hi,
link funzt jetzt, danke fr die antworten aber ich versteh das ganze aber trozdem noch ned?? *heul*
wie knnte man sonst so einen lageplan auf dieser basis realsieren ? hab irgendwo gesehen das dass auch mit *.png bilder funzt
link funzt jetzt, danke fr die antworten aber ich versteh das ganze aber trozdem noch ned?? *heul*
Was genau ist dir noch nicht klar?
hab irgendwo gesehen das dass auch mit *.png bilder funzt
Ob du das resultierende Bild letztendlich als png-, jpeg- oder gif-Bild abspeicherst, ist relativ egal.
danke, so richtig versteh ich den ganzen aufbau nicht wenn das klicken nur mit java script und dem ie funzt ist das ganze schon mal nicht so gut. das mit imagearc ist klasse nur ich check es ned kannst du mir bitte eine kurzanleitung geben???? wre super super super nett
Gruss
Robert
Kleines Beispiel (x und y geben den Mittelpunkt und $d den Durchmesser des Kreises an):
<?php
header('Content-Type: image/jpeg');
// Arbeitsflche aus der Datei erstellen, die die Karte enthlt
$img = imagecreatefromjpeg('map.jpg');
// Farbe des Kreis (hier mal schwarz) festlegen
imagecolorallocate($img, 0, 0, 0);
// Kreis zeichnen
imagearc($img, $x, $y, $d, $d, 0, 360, $col);
// Ausgabe des Bildes an den Browser senden
imagejpeg($img);
?>
Anstatt diese JavaScript-Funktionen zu nutzen kannst du auch einfach die Formularfunktion mit grafischem Absendebutton etwas missbrauchen, indem du die Karte als Absendebutton definierst. Dabei werden dann nmlich automatisch in den Variablen x und y die entsprechenden Koordinaten mit bergeben, bei denen du auf das Bild geklickt hast.
Uups, da war ich zu langsam...
Hallo zusammen,
noch eine andere Mglichkeit die Koordinaten zu ermitteln.
Mit ohne JS :-)))
<?php
if($_POST['map_x']) {
echo $_POST['map_x'];
echo '<br>';
echo $_POST['map_y'];
}
$img_src = 'test.jpg';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<input type="image" src="'.$img_src.'" name="map">';
echo '</form>';
?>
Gre
vielen vielen dank das leuchtet mir ein, und kannst du mir bitte bitte auch noch in kurzform erklren wie ich das dann mit dem imagesarc mache? im tutorial ist das sehr umfangreich beschrieben und ich hab den berblick verloren
vielen vielen dank das leuchtet mir ein, und kannst du mir bitte bitte auch noch in kurzform erklren wie ich das dann mit dem imagesarc mache? im tutorial ist das sehr umfangreich beschrieben und ich hab den berblick verloren
Was war da denn an meinem Beispiel nicht verstndlich?
vieleicht stell ich mich ja wirklich zu bld an aber danke fr dein verstndis. wie ich die kooardinaten von einem bild (mittels form) bergebe schekc ich glaube ich aber wie lass ich dann den kreis zeichen ist 'map_x' dann = der x wert vom kreis?
habe das mal probiert aber wenn ich das so mache wie du beschrieben hast dann bekomm ich was ganz komisches ausgegeben
http://www.camping-web.de/maptest.php
danke vielmals ich habe es doch noch hinbekommen ;-)
vielen dank
[...] aber wie lass ich dann den kreis zeichen ist 'map_x' dann = der x wert vom kreis?
Sollte eigentlich so sein, da der Punkt auf den du im Bild geklickt hast, ja der Mittelpunkt des Kreises sein soll.
habe das mal probiert aber wenn ich das so mache wie du beschrieben hast dann bekomm ich was ganz komisches ausgegeben
Das ist schon richtig so. Damit dir da auch das Bild angezeigt wird, musst du noch einen entsprechenden Header senden (s. meinen genderten Beitrag).
EDIT:
danke vielmals ich habe es doch noch hinbekommen ;-)
Woran lag es?
hi,
die farbe 0,0,0 hat wohl den fehler verursacht habe es jetzt auf 10,10,10 gendert und dann gings auf einmal
header('Location: image/jpeg');
@xabbuh, da hast Du Dich im Regal vergriffen ;-)
header('Content-type: image/jpeg');
??? wie jetzt?
bei mir ndert sich ned die farbe des kreises egal welchen wert ich einstelle
schon erledigt vielen dank fr eure hilfen
@xabbuh, da hast Du Dich im Regal vergriffen ;-)
Oh, oh *g*
die farbe 0,0,0 hat wohl den fehler verursacht habe es jetzt auf 10,10,10 gendert und dann gings auf einmal
Eigentlich kann es daran nicht liegen. Hast du den Header denn jetzt drin?
hi jo header is drin funzt alles bestens aber vieleicht kannst mir dochnoch bitte bitte kurz mal helfen ich habe den code jetzt wie folgt:
if($_POST['map_x']) {
$y=$_POST['map_y'];
$x=$_POST['map_x'];
$d='10';
// Arbeitsflche aus der Datei erstellen, die die Karte enthlt
$img = imagecreatefromgif('map.gif');
// Farbe des Kreis (hier mal schwarz) festlegen
$col = imagecolorallocate($img,255,0,0);
// Kreis zeichnen
imagearc($img, $x, $y, $d, $d, 0, 360, $col);
header("Content-Type: image/png");
// Ausgabe des Bildes an den Browser senden
imagepng($img);
}
else {
$img_src = 'map.gif';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<input type="image" src="'.$img_src.'" name="map">';
echo '</form>'; }
so funzt das ganze super ich wrd das blo gerne so haben da nach der auswahl ich wieder auf das bild klicken kann und immer eine neue position whlen. hoffe du verstehst mich ich mein das so (code funzt aber ned)
if($_POST['map_x']) {
$y=$_POST['map_y'];
$x=$_POST['map_x'];
$d='10';
// Arbeitsflche aus der Datei erstellen, die die Karte enthlt
$img = imagecreatefromgif('map.gif');
// Farbe des Kreis (hier mal schwarz) festlegen
$col = imagecolorallocate($img,255,0,0);
// Kreis zeichnen
imagearc($img, $x, $y, $d, $d, 0, 360, $col);
header("Content-Type: image/png");
// Ausgabe des Bildes an den Browser senden
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<input type="image" src="'.imagepng($img).'" name="map">';
echo '</form>';
}
else {
$img_src = 'map.gif';
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<input type="image" src="'.$img_src.'" name="map">';
echo '</form>'; }
Dadurch, dass Du im zweiten Code den HEADER sendest (Content-Type: image/png), wird das PHP-Script zum Bild. In einem Bild kannst Du bekanntlich nichts per ECHO-Konstrukt ausgeben.
Du musst es also in sofern umstricken, dass Du eine "erstelle Bild" Datei hast und eine Datei in der das Bild eingebunden und darunter das Formular ausgegeben wird.
das wre aber ungnstig weil ich fr ca. 500 objekte einen solchen lageplan bentige und die x-y koordinaten aus ner mysql gelesen werden. es ist ungnstig 500 bilder zu erstellen. geht das denn sonst irgendwie??
Du musst in jedemfall das Image-Script vom Formular trennen.
Mit einem Image-Header kannst Du keine Textausgabe (Formular) ttigen.
kann man denn das images script als variable vereinbaren?
z.B. so: $images2 = imagepng($img);
sonst gibts nur die mglichkeit nen extra button zu machen wo dann das org. mit der form aufgerufen wird und dann das ganze neu vereinbart wird
Verstehe jetzt gerade nicht was Du meinst...
Folgendermaen knntest du es machen:
<?php
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo '<input type="image" src="map.php?x=' . (int)$_POST['max_x'] . '&y=' . $_POST['max_y'] . '" name="map">';
echo '</form>';
?>
Und in der map.php steht dann der Code zum Erzeugen des Bildes (lediglich $_POST muss gegen $_GET ersetzt werden).
vielen dank bei mir funzt der code aber nur so:
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="get">';
echo '<input type="image" src="map.php?x='.$x.'&y='.$y.'" name="">';
echo '</form>';
so geht alles bestens
Wo ist denn das Problem, wenn du das Formular mit der Methode POST sendest?
vBulletin v3.0.7, Copyright ©2000-2006, Jelsoft Enterprises Ltd.