Deutschland Karte: Rechteck über dhtml positionieren?

ich denke ich habe das soweit verstanden, bis auf:

PHP:
            $file_name_dest = "../../bilder/karte_d-trans.png"; // wofür das ?
            @unlink("../../bilder/karte_d-trans.png"); // wofür das ?
            imagepng($bild,$file_name_dest);

Was soll das sein ?
 
ich denke ich habe das soweit verstanden, bis auf:

PHP:
            $file_name_dest = "../../bilder/karte_d-trans.png"; // wofür das ?
            @unlink("../../bilder/karte_d-trans.png"); // wofür das ?
            imagepng($bild,$file_name_dest);

Was soll das sein ?

- Pfad und Name des zu erzeugenden Bildes
- altes Bild löschen, da das Überschreiben nicht immer funktioniert
- Bild erzeugen
 
ok, nun kommt nur noch 1 Fehler:
Warning: Invalid argument supplied for foreach() in

Hier nochmal der Code:
PHP:
			// Koordinaten aus Objekt in Variable schreiben
			$xpos = $GLOBALS['lv']->f('xpos');  // X ist z.B 5,65
			$ypos = $GLOBALS['lv']->f('ypos');  // Y ist z.B 14,65
			
			$bg = imagecreatefrompng("setron_karte/karte_deutschland.png");
			$punkt = imagecreatefrompng("setron_karte/pixel.png");
			$punktb = imagecreatefrompng("setron_karte/pixel.png");
			
			$width = imagesx($bg); 
			$height = imagesy($bg); 
			$bild = imagecreatetruecolor($width, $height);
			$weiss = imagecolorallocate ( $bild, 255, 255, 255);
			imagecolortransparent ( $bild, $weiss );
			imagecopymerge($bild, $bg, 0, 0, 0, 0, $width, $height, 100);
			foreach ($xpos as $key => $wert){
				if ($wert !=0 && $ypos[$key]!=0){ 
					$x1 = $wert - 3; 
					$y1 = $ypos[$key] - 3; 
					imagecopymerge($bild, $punkt, $x1, $y1, 0, 0, 8, 8, 100); 
        }
			}
			$file_name_dest = "setron_karte/karte_deutschland_trans.png";
			@unlink("setron_karte/karte_deutschland_trans.png");
			imagepng($bild,$file_name_dest);

Ist doch eigentlich richtig, oder ?
 
Eigentlich ja. Hab es jetzt nicht ausprobiert, aber ist $xpos sicher ein Array? Was anderes fällt mir dazu nicht ein. Laß dir doch vorher mal $xpos mit print_r ausgeben.

Aber was bedeutet dieser Kommentar?
X ist z.B 5,65
Mit Kommas kannst du da nix anfangen!
 
Zuletzt bearbeitet:
Nein, xpos und ypos sind einfach ein Feld in einem Objekt.

( Ich nutze das CMS webEdition, wo man einfach verschieden Daten in ein Objekt speichern kann)

Demnach ist xpos ein Feld im Objekt, was ich so einfach auslese:
PHP:
$xpos = $GLOBALS['lv']->f('xpos');

Die Ausgabe wäre dann z.B. 5,67

Ich habe ein Javascript, was die Mausposition ermittelt und dann in xpos und ypos abspeichert. Jedoch wird der Pixelwert noch einmal umgerechnet, also z.B. in 4,79
Der Pixelwert ergibt sich aus der größe der Grafik. Also wenn ich eine Grafik mit 100px Breite und 100px Höhe habe und ich die Maus genau mittig ausrichte, hätte ich als Ergebnis xpos = 50px und ypos = 50px.
 
Dann mußt du das Script aber völlig umbauen. Hab ja schon deutlich gesagt, daß es sich bei $xpos und $ypos um Arrays handelt, in denen die Koordinaten von allen Niederlassungen drinstehen. Hast du aber scheinbar übersehen..
 
Ja ok.

Kann man das vorhandene php Script nicht so umbauen, dass es mit 2 einfach Pixelwerten (also xpos & ypos) arbeitet? Es müsste doch möglich sein, mit php ein Pixelkoordinatennetz über meine Deutschland-Grafik legen zu können.

Oder?
 
Ja ok.

Kann man das vorhandene php Script nicht so umbauen, dass es mit 2 einfach Pixelwerten (also xpos & ypos) arbeitet? Es müsste doch möglich sein, mit php ein Pixelkoordinatennetz über meine Deutschland-Grafik legen zu können.

Oder?

Das tut es doch. Nur daß diese Werte eben aus einem Array genommen werden. Um mehrere Punkte einzutragen, brauchst du eine Schleife und der einfachste Weg eine Schleife abzuarbeiten, ist mMn foreach. Und das arbeitet nun mal mit einem Array.
 
ok, nun läuft es...so einigermaßen

Ich habe die Pixelkoordinaten nun in ein Array geschrieben.
Jedoch stimmt die Positionierung nicht, sämtliche Quadrate sind oben links in der Ecke.
PHP:
			// Koordinaten aus Objekt in Variable schreiben
			echo "<br>";
			 $xpos = $GLOBALS['lv']->f('xpos'); 
			echo "-";
			 $ypos = $GLOBALS['lv']->f('ypos'); 
			echo "<br>";
			 $stammsitz = "Miami"; 
			echo "<br>";
			
			// Textausgabe - richtige Werte sind enthalten
			$userpos = array($xpos,$ypos,$stammsitz);
			echo $userpos[0];
			echo "<br>";
			echo $userpos[1];
			echo "<br>";
			echo $userpos[2];
			
			$bg = imagecreatefrompng("setron_karte/karte_deutschland.png"); // leere Deutschlandkarte
			$punkt = imagecreatefrompng("setron_karte/pixel.png"); // Grafik für normale Niederlassung
			$punktb = imagecreatefrompng("setron_karte/pixel.png"); // Grafik für Hauptniederlassung
			
			$width = imagesx($bg); // Breite des Bildes auslesen
			$height = imagesy($bg); // Höhe des Bildes auslesen
			$bild = imagecreatetruecolor($width, $height); // Neue Grafik mit entsprechender Größe anlegen
			$weiss = imagecolorallocate ( $bild, 255, 255, 255); // Hintergrund der Grafik auf Weiss setzten
			imagecolortransparent ( $bild, $weiss ); // Transparenz des Bildes
			imagecopymerge($bild, $bg, 0, 0, 0, 0, $width, $height, 100); // Setzt die Grafik auf die Deutschlandkarte
			foreach ($userpos as $wert){
							if ($wert[xpos]!=0 && $wert[ypos]!=0){
									$x1 = $wert[xpos] - 3;
									$y1 = $wert[ypos] - 3;
									if ($wert[hauptort])
											imagecopymerge($bild, $punkt, $x1, $y1, 0, 0, 8, 8, 100);
									else
											imagecopymerge($bild, $punktb, $x1, $y1, 0, 0, 8, 8, 100);
							}
					} 

			
			$file_name_dest = "setron_karte/karte_deutschland_trans.png"; // Zielpfad für neue Deutschlandkarte
			@unlink("setron_karte/karte_deutschland_trans.png"); // altes Bild löschen, da das Überschreiben nicht immer funktioniert
			imagepng($bild,$file_name_dest); // Grafik unter angegebenen Pfad speichern

$x1 und $y1 enthalten auch komische Werte, z.B -1-111

Jemand eine Idee ?
 
Zum einen baust du oben ein numerisches Array auf, in der Schleife wird aber ein assoziatives Array verwendet. Das könnte z.B. ein Grund sein. Außerdem läßt du dir nur einen einzigen Wert vorher anzeigen. Wenn es nicht klappt läßt du am besten vor der Schleife per print_r($userdat) mal das ganze Array ausgeben und postest hier mal die Quelltextansicht.
 

Neue Beiträge

Zurück