Beliebigen Bereich in Image selektieren Hallo, ich habe folgende Problem:
Ich habe eine Seekarte (als Backgroundimage) Darüber befindet sich ein
canvas in dem der Benutzer eine Route anklicken kann. Diese Route zeichne ich mit Hilfe von wz_grapics in der Seekarte. Kurse, Entfernung, Dauer werden berechnet und in einer Tabelle abgelegt. Diese wird dann per Ajax als PDF erzeugt. Es wird auch das Image mit den eingezeichneten Kursen in der PDF abgelegt.
Da dann u.U. der gesamte westliche Teil der Ostsee auf DIN A4 Größe gebracht wird, möchte ich auch den relevanten Ausschnitt der Seekarte in die PDF bringen.
- Der Anwender soll dazu mit der Maus den Bereich selektieren.
- Dabei wird der ausgewählte Bereich mit einem Rahmen versehen,
bekommt eine andere Hintergrundfarbe und ist transparent.
Wichtig: es ist ein Eventhandler onmousemove auf die Karte registriert, der permanent die Koordinaten der augenblicklichen
Mausposition berechnet (Breite, Länge)und anzeigt
Mein Lösungsversuch :
- ich erzeuge ein hidden Div
- wenn der Benutzer auf den pdf-Button klickt registriere ich einen mousedown-Eventhandler auf die Hintergrundkarte
- Beim nächsten Mousedown wird die obere linke Ecke des hidden div
auf die Position der Mausgelegt und das Div visible geschaltet.
- Es werden zusätzliche Handler registriert.
- ein Mousemove-Handler, der die widht und height Attribute des Divs ändert.
- ein mouseup-Handler,
-ein mouseout-Handler (der Anwender soll ja nur einen Ausschnitt der Karte markieren)
In beiden Fällen möchte ich die Mausposition speichern, damit ich
den Ausschnitt berechnen und an die Pdf-Erzeugung übergeben kann.
Probleme:
- Ich bekomme immer sehr schnell ein mouseout-Event, obwohl
sich die Maus noch über der Karte befindet und das zeichnen erfolgt nicht schnell genug.
-Das Zeichen des Divs erfolgte mit fast befriedigender Geschwindigkeit, als ich die Events noch fest an an das div gekoppelt hatte. Ich habe das aber rausgenommen, damit ich mehrere Handler registrieren kann.
Meine Fragen:
- ist der Ansatz so ok oder gibt es einen einfachen Weg per javascript
den Bereich zu selektieren und optisch anzuzeigen?
- woran kann es liegen, dass ich die Mouseout-events bekomme?
- Kann es daran liegen, das ich mir debug-Outputs in eine Textarea schreibe?
Hat jemand damit Erfahrung oder eine Idee?
Vielen Dank im voraus
papalangi_44
Geändert von papalangi_44 (13.01.2010 um 20:25 Uhr).
Grund: Abgeschickt, bevor fertig geschrieben (dicke Finger)
|