Ignore:
Timestamp:
2017-05-10T12:22:20+02:00 (7 years ago)
Author:
bastiK
Message:

fixed #14734 - Handling imagery offsets when reprojecting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/ImageryAdjustAction.java

    r11713 r12093  
    2626import org.openstreetmap.josm.actions.mapmode.MapMode;
    2727import org.openstreetmap.josm.data.coor.EastNorth;
     28import org.openstreetmap.josm.data.coor.LatLon;
    2829import org.openstreetmap.josm.data.imagery.OffsetBookmark;
    2930import org.openstreetmap.josm.gui.ExtendedDialog;
     
    4344    private static Cursor cursor = ImageProvider.getCursor("normal", "move");
    4445
    45     private EastNorth old;
     46    private OffsetBookmark old;
     47    private OffsetBookmark tempOffset;
    4648    private EastNorth prevEastNorth;
    4749    private transient AbstractTileSourceLayer<?> layer;
     
    6668            layer.setVisible(true);
    6769        }
    68         old = layer.getDisplaySettings().getDisplacement();
     70        old = layer.getDisplaySettings().getOffsetBookmark();
     71        EastNorth curOff = old == null ? EastNorth.ZERO : old.getDisplacement(Main.getProjection());
     72        LatLon center;
     73        if (Main.isDisplayingMapView()) {
     74            center = Main.getProjection().eastNorth2latlon(Main.map.mapView.getCenter());
     75        } else {
     76            center = LatLon.ZERO;
     77        }
     78        tempOffset = new OffsetBookmark(
     79                Main.getProjection().toCode(),
     80                layer.getInfo().getName(),
     81                null,
     82                curOff.east(), curOff.north(), center.lon(), center.lat());
     83        layer.getDisplaySettings().setOffsetBookmark(tempOffset);
    6984        addListeners();
    7085        showOffsetDialog(new ImageryOffsetDialog());
     
    96111        if (offsetDialog != null) {
    97112            if (layer != null) {
    98                 layer.getDisplaySettings().setDisplacement(old);
     113                layer.getDisplaySettings().setOffsetBookmark(old);
    99114            }
    100115            hideOffsetDialog();
     
    136151        if (dx != 0 || dy != 0) {
    137152            double ppd = layer.getPPD();
    138             layer.getDisplaySettings().addDisplacement(new EastNorth(dx / ppd, dy / ppd));
     153            EastNorth d = tempOffset.getDisplacement().add(new EastNorth(dx / ppd, dy / ppd));
     154            tempOffset.setDisplacement(d);
     155            layer.getDisplaySettings().setOffsetBookmark(tempOffset);
    139156            if (offsetDialog != null) {
    140157                offsetDialog.updateOffset();
     
    163180        if (layer == null || prevEastNorth == null) return;
    164181        EastNorth eastNorth = Main.map.mapView.getEastNorth(e.getX(), e.getY());
    165         EastNorth d = layer.getDisplaySettings().getDisplacement().add(eastNorth).subtract(prevEastNorth);
    166         layer.getDisplaySettings().setDisplacement(d);
     182        EastNorth d = tempOffset.getDisplacement().add(eastNorth).subtract(prevEastNorth);
     183        tempOffset.setDisplacement(d);
     184        layer.getDisplaySettings().setOffsetBookmark(tempOffset);
    167185        if (offsetDialog != null) {
    168186            offsetDialog.updateOffset();
     
    239257                    double dx = Double.parseDouble(easting);
    240258                    double dy = Double.parseDouble(northing);
    241                     layer.getDisplaySettings().setDisplacement(new EastNorth(dx, dy));
     259                    tempOffset.setDisplacement(new EastNorth(dx, dy));
     260                    layer.getDisplaySettings().setOffsetBookmark(tempOffset);
    242261                } catch (NumberFormatException nfe) {
    243262                    // we repaint offset numbers in any case
     
    305324            if (layer != null) {
    306325                if (getValue() != 1) {
    307                     layer.getDisplaySettings().setDisplacement(old);
     326                    layer.getDisplaySettings().setOffsetBookmark(old);
    308327                } else if (tBookmarkName.getText() != null && !tBookmarkName.getText().isEmpty()) {
    309328                    OffsetBookmark.bookmarkOffset(tBookmarkName.getText(), layer);
Note: See TracChangeset for help on using the changeset viewer.