|
Verschieben mehrerer Punkte
|
|
28.09.2011, 05:08 AM
Post: #1
|
|||
|
|||
|
Verschieben mehrerer Punkte
Hallo,
bei meinen aufgezeichneten Tracks kommt es immer wieder ab und an vor, dass Teile des Tracks verschoben sind. Das passiert in der Regel nach dem verlassen von Gebäuden, Tunneln usw. Der Track ist dann in sich zwar stimmig (die Punkte relativ zueinander), aber eben nicht die absolute Position. Im Moment verschiebe ich die Punkte dann von Hand (meist so 20), bis die Aufzeichnung wieder eine korrekte Absolutposition hat (was nicht schleichend passiert, sondern als harter Sprung). Daher die Frage: Gibt es einen Weg, wie man mehrere Punkte ohne großen Aufwand verschieben kann und deren relative Position zueinander beibehält ? Thomas |
|||
|
28.09.2011, 08:07 AM
Post: #2
|
|||
|
|||
RE: Verschieben mehrerer Punkte
(28.09.2011 05:08 AM)lundefugl Wrote: Daher die Frage: Gibt es einen Weg, wie man mehrere Punkte ohne großen Aufwand verschieben kann und deren relative Position zueinander beibehält ? Nein, man kann mehrere Punkte in der Positionsliste rechts einfach per Drag-and-drop verschieben doch auf der Karte links sendet das Google Maps API nur 1 Event, wenn man eine der routen Blasen anklickt und verschiebt. Wenn es sich um eine Straße handelt, könntest Du die Punkte löschen, den ersten und den letzten vor der Löschung markieren und durch Position/Zwischenpositionen einfügen... zumindest Positionen auf der Straße erhalten. -- Christian |
|||
|
29.09.2011, 05:53 PM
Post: #3
|
|||
|
|||
RE: Verschieben mehrerer Punkte
(28.09.2011 08:07 AM)routeconverter Wrote: Nein, man kann mehrere Punkte in der Positionsliste rechts einfach per Drag-and-drop verschieben doch auf der Karte links sendet das Google Maps API nur 1 Event, wenn man eine der routen Blasen anklickt und verschiebt. Theoretisch würde mir da schon was einfallen, wie man das Problem evtl. lösen könnte. Allerdings weiß ich nicht, ob ich der Einzige mit dem Problem bin, oder ob es einen Benefit für Andere bringen würde. Meine Idee wäre, dass man einfach mehrere Punkte in der Liste markiert, und dann beim Verschieben des Bubbles im Google-Fenster eine Taste (z.B. Ctrl oder Shift) drückt. Da der RouteConverter von der Selektion weiß, könnte er dann einfach alle Deltas auf die anderen selektierten Punkte übernehmen - ohne dass die Google-API das mitteilen muss. (28.09.2011 08:07 AM)routeconverter Wrote: Wenn es sich um eine Straße handelt, ...Das ist leider nicht immer der Fall. :-( Thomas |
|||
|
29.09.2011, 07:59 PM
Post: #4
|
|||
|
|||
RE: Verschieben mehrerer Punkte
(29.09.2011 05:53 PM)lundefugl Wrote:(28.09.2011 08:07 AM)routeconverter Wrote: Nein, man kann mehrere Punkte in der Positionsliste rechts einfach per Drag-and-drop verschieben doch auf der Karte links sendet das Google Maps API nur 1 Event, wenn man eine der routen Blasen anklickt und verschiebt. Die Selektion bleibt beim Verschieben erhalten. Wenn man sich den Ausgangspunkt des Verschiebens merk, so kann man den Deltavektor bestimmen und auf die anderen Punkte anwenden. Was natürlich die Sache erst schick macht, ist das alle anderen Punkte gleichzeitig verschoben werden (sichtbar ). Gruß, Ilmari |
|||
|
30.09.2011, 10:06 AM
Post: #5
|
|||
|
|||
RE: Verschieben mehrerer Punkte
(29.09.2011 05:53 PM)lundefugl Wrote: Allerdings weiß ich nicht, ob ich der Einzige mit dem Problem bin, oder ob es einen Benefit für Andere bringen würde. Oder ob die Einschränkungen, die dadurch entstehen, für die anderen Nutzer akzeptabel sind weil sie sie fast nicht bemerken. (29.09.2011 05:53 PM)lundefugl Wrote: Meine Idee wäre, dass man einfach mehrere Punkte in der Liste markiert, und dann beim Verschieben des Bubbles im Google-Fenster eine Taste (z.B. Ctrl oder Shift) drückt. Ich habe nichts in der Google Maps API gefunden, um gedrückte Tasten während eines "dragend" Callbacks auszulesen. (29.09.2011 05:53 PM)lundefugl Wrote: Da der RouteConverter von der Selektion weiß, könnte er dann einfach alle Deltas auf die anderen selektierten Punkte übernehmen - ohne dass die Google-API das mitteilen muss. Das stimmt, doch wie sieht das für den Nutzer aus? Er hat eine einzige Position aus einer Menge von markierten Positionen ausgewählt, verschiebt nur die eine Position - erhält keine optische Rückmeldung, welche Positionen wirklich von der Verschiebung betroffen sind - und nachher sind alle markierten Positionen verschoben. Wäre der Code in BaseMapView#movePosition() einfacher, könnte man das mal kurz ausprobieren. Damit das mit Tracks mit ein paar Hunderttausend Positionen auch funktioniert, ist das recht gut optimiert. -- Christian |
|||
|
03.10.2011, 05:44 AM
Post: #6
|
|||
|
|||
RE: Verschieben mehrerer Punkte
(30.09.2011 10:06 AM)routeconverter Wrote: Ich habe nichts in der Google Maps API gefunden, um gedrückte Tasten während eines "dragend" Callbacks auszulesen. Wenn ich dich richtig verstanden habe, scheitert es eigentlich an der Tasten-Erkennung. Dann gäbs keine Überraschungen für den Benutzer, denn er hat die Taste ja bewusst gedrückt. Da ich die Google-API und vor allem deren Komponente nicht kenne, eine Frage. Wenn man per "java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(..., AWTEvent.KEY_EVENT_MASK)" einen globalen Listener anmeldet, löst der auch aus, wenn sich der Focus bei Google befindet ? Wenn ja, so könnte man sich über die Key-Up/Down-Events den aktuellen Zustand der Taste merken und diesen im Callback von Google abfragen. Thomas |
|||
|
03.10.2011, 10:27 AM
(This post was last modified: 03.10.2011 10:27 AM by routeconverter.)
Post: #7
|
|||
|
|||
RE: Verschieben mehrerer Punkte
(03.10.2011 05:44 AM)lundefugl Wrote: Wenn ich dich richtig verstanden habe, scheitert es eigentlich an der Tasten-Erkennung. Jein - Shift ist in den Vorabversionen bereits belegt, um die Selektion auf der Karte zu erweitern. (03.10.2011 05:44 AM)lundefugl Wrote: Wenn man per "java.awt.Toolkit.getDefaultToolkit().addAWTEventListener(..., AWTEvent.KEY_EVENT_MASK)" einen globalen Listener anmeldet, löst der auch aus, wenn sich der Focus bei Google befindet ? Wenn ja, so könnte man sich über die Key-Up/Down-Events den aktuellen Zustand der Taste merken und diesen im Callback von Google abfragen. So einfach ist es leider nicht: die Karte wird durch einen komplett eigenständigen Prozeß dargestellt. RouteConverter sieht nur optisch wie ein Programm aus, in Wahrheit sind es zwei: RouteConverter mit Menüs, Positionsliste, Dateien lesen/schreiben und ein Webbrowser, der die Karte darstellt. Technisch anspruchsvoll ;-) Das heißt, der RouteConverter-Prozeß sieht die Tastendrücke des Webbrowsers nicht, denn der Teil des Bildschirms gehört dem Webbrowser. Und der wird eher so programmiert: Code: function addListener(marker) {-- Christian |
|||
|
31.12.2011, 12:10 PM
(This post was last modified: 31.12.2011 12:11 PM by lundefugl.)
Post: #8
|
|||
|
|||
|
RE: Verschieben mehrerer Punkte
Hallo Christian,
evtl. hätte ich auch hier einen Lösungsansatz. Bei Mousmove erhält man den Status von Ctrl, Alt und Shift mit. Da beim Verschieben von Markern wohl meist die Maus bewegt wird, könnte man sich den Status einfach vorher merken. Eine bisher nicht verwendete Kombination (z.B. Alt+Ctrl ??) müsste sich doch für den Multi-Move finden lassen - oder ? Natürlich weiss ich nicht, was die ganzen Browser dazu sagen, da ich den Code aus dem Internet habe. Dort war von Firefox und dem IE die Rede. Chrome, Safari, Opera usw. wäre wohl wieder erst zu testen... Anbei mal ein Experimentalcode von mir, der auf alle 3 Tasten reagiert. Gruß Thomas |
|||
|
31.12.2011, 02:19 PM
Post: #9
|
|||
|
|||
RE: Verschieben mehrerer Punkte
(31.12.2011 12:10 PM)lundefugl Wrote: Hallo Christian, Die Ctrl Taste ist für Mac schon belegt. Code: /** |
|||
|
02.01.2012, 07:39 AM
Post: #10
|
|||
|
|||
RE: Verschieben mehrerer Punkte
(31.12.2011 12:10 PM)lundefugl Wrote: Eine bisher nicht verwendete Kombination (z.B. Alt+Ctrl ??) müsste sich doch für den Multi-Move finden lassen - oder ? Das ist wohl das Problem. Ctrl, Alt+Ctrl sind schon belegt. Wahrscheinlich klappt noch nichteinmal das auf dem Mac, aber entsprechende Berichte habe ich noch nicht erhalten. (31.12.2011 12:10 PM)lundefugl Wrote: Natürlich weiss ich nicht, was die ganzen Browser dazu sagen, da ich den Code aus dem Internet habe. Dort war von Firefox und dem IE die Rede. Chrome, Safari, Opera usw. wäre wohl wieder erst zu testen... Wichtig sind nur Internet Explorer 6-9 unter Windows und WebKit 1.2 unter Mac OS X und Linux. Details dazu in der Eclipse SWT FAQ. -- Christian |
|||
|
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 4 Guest(s)
Search
Member List
Calendar
Help



