Das Verschieben oder Drehen ist weniger intuitiv, da man dazu die Geometrie filtern muss. Wir gehen in diesem Beispiel davon aus, dass wir bereits eine Geometrie (geom) haben.
Java |
---------- |
CoordinateFilter switchLatLon = new CoordinateFilter() {
@Override
public void filter(Coordinate coord) {
double t = coord.x;
coord.x = coord.y;
coord.y = t;
}
};
Wir schreiben uns einen Coordinate Filter. CoordinateFilter ist abstrakt, deswegen müssen wir die Methode ‚filter‘ überschreiben. In diesem Beispiel vertauschen wir die x- mit der y-Koordinate. Aber es sind auch alle möglichen anderen Operationen möglich. (z.B. nach links verschieben mit coord.x = coord.x – 1).
Java |
---------- |
bf.getGeometry().apply(switchLatLon);
bf.getGeometry().geometryChanged();
Danach wenden wir den Filter an und müssen dann auch dem Modell mitteilen, dass sich etwas geändert hat.
Java |
---------- |
// refresh mit wc.layerViewPanel.repaint();
Falls wir den Layer mit der Geometrie bereits gezeichnet haben, müssen wir ein Repaint auslösen, damit die Änderungen sichtbar werden.