PDA

Vollstndige Version anzeigen : bild koordinaten erstellung??? - hilfe gesucht -


inkvc17
16-04-2005, 15:46
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???

|Coding
16-04-2005, 16:29
Link funzt nicht.

xabbuh
16-04-2005, 16:36
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.

inkvc17
16-04-2005, 16:50
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

xabbuh
16-04-2005, 17:24
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.

inkvc17
16-04-2005, 17:32
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

xabbuh
16-04-2005, 17:47
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);
?>

Serp
16-04-2005, 17:52
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.

chris17
16-04-2005, 17:54
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

inkvc17
16-04-2005, 18:06
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

xabbuh
16-04-2005, 18:07
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?

inkvc17
16-04-2005, 19:36
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

inkvc17
16-04-2005, 20:07
danke vielmals ich habe es doch noch hinbekommen ;-)
vielen dank

xabbuh
16-04-2005, 20:08
[...] 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?

inkvc17
16-04-2005, 20:12
hi,

die farbe 0,0,0 hat wohl den fehler verursacht habe es jetzt auf 10,10,10 gendert und dann gings auf einmal

chris17
16-04-2005, 20:34
header('Location: image/jpeg');

@xabbuh, da hast Du Dich im Regal vergriffen ;-)

header('Content-type: image/jpeg');

inkvc17
16-04-2005, 20:46
??? wie jetzt?

bei mir ndert sich ned die farbe des kreises egal welchen wert ich einstelle

inkvc17
16-04-2005, 20:49
schon erledigt vielen dank fr eure hilfen

xabbuh
16-04-2005, 21:56
@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?

inkvc17
16-04-2005, 22:25
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>'; }

|Coding
16-04-2005, 22:47
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.

inkvc17
16-04-2005, 23:01
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??

|Coding
16-04-2005, 23:21
Du musst in jedemfall das Image-Script vom Formular trennen.
Mit einem Image-Header kannst Du keine Textausgabe (Formular) ttigen.

inkvc17
16-04-2005, 23:24
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

|Coding
17-04-2005, 01:08
Verstehe jetzt gerade nicht was Du meinst...

xabbuh
17-04-2005, 04:55
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).

inkvc17
17-04-2005, 13:38
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

xabbuh
17-04-2005, 13:45
Wo ist denn das Problem, wenn du das Formular mit der Methode POST sendest?