Ignore:
Timestamp:
2017-07-22T14:25:19+02:00 (7 years ago)
Author:
bastiK
Message:

see #15013, see #14877 - remember projection when session is saved to a .jos/.joz file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java

    r11795 r12486  
    1111import java.nio.charset.StandardCharsets;
    1212import java.util.ArrayList;
     13import java.util.Collection;
    1314import java.util.HashMap;
    1415import java.util.List;
     
    4041import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
    4142import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer;
     43import org.openstreetmap.josm.gui.preferences.projection.ProjectionPreference;
    4244import org.openstreetmap.josm.tools.JosmRuntimeException;
    4345import org.openstreetmap.josm.tools.MultiMap;
     
    213215        doc.appendChild(root);
    214216
    215         Element viewportEl = doc.createElement("viewport");
    216         root.appendChild(viewportEl);
    217         Element centerEl = doc.createElement("center");
    218         viewportEl.appendChild(centerEl);
    219         EastNorth center = Main.map.mapView.getCenter();
    220         LatLon centerLL = Projections.inverseProject(center);
    221         centerEl.setAttribute("lat", Double.toString(centerLL.lat()));
    222         centerEl.setAttribute("lon", Double.toString(centerLL.lon()));
    223         Element scale = doc.createElement("scale");
    224         viewportEl.appendChild(scale);
    225         double dist100px = Main.map.mapView.getDist100Pixel();
    226         scale.setAttribute("meter-per-pixel", Double.toString(dist100px / 100));
     217        writeViewPort(root);
     218        writeProjection(root);
    227219
    228220        Element layersEl = doc.createElement("layers");
     
    263255    }
    264256
     257    private void writeViewPort(Element root) {
     258        Document doc = root.getOwnerDocument();
     259        Element viewportEl = doc.createElement("viewport");
     260        root.appendChild(viewportEl);
     261        Element centerEl = doc.createElement("center");
     262        viewportEl.appendChild(centerEl);
     263        EastNorth center = Main.map.mapView.getCenter();
     264        LatLon centerLL = Projections.inverseProject(center);
     265        centerEl.setAttribute("lat", Double.toString(centerLL.lat()));
     266        centerEl.setAttribute("lon", Double.toString(centerLL.lon()));
     267        Element scale = doc.createElement("scale");
     268        viewportEl.appendChild(scale);
     269        double dist100px = Main.map.mapView.getDist100Pixel();
     270        scale.setAttribute("meter-per-pixel", Double.toString(dist100px / 100));
     271    }
     272
     273    private void writeProjection(Element root) {
     274        Document doc = root.getOwnerDocument();
     275        Element projectionEl = doc.createElement("projection");
     276        root.appendChild(projectionEl);
     277        String pcId = ProjectionPreference.getCurrentProjectionChoiceId();
     278        Element projectionChoiceEl = doc.createElement("projection-choice");
     279        projectionEl.appendChild(projectionChoiceEl);
     280        Element idEl = doc.createElement("id");
     281        projectionChoiceEl.appendChild(idEl);
     282        idEl.setTextContent(pcId);
     283        Collection<String> parameters = ProjectionPreference.getSubprojectionPreference(pcId);
     284        Element parametersEl = doc.createElement("parameters");
     285        projectionChoiceEl.appendChild(parametersEl);
     286        for (String param : parameters) {
     287            Element paramEl = doc.createElement("param");
     288            parametersEl.appendChild(paramEl);
     289            paramEl.setTextContent(param);
     290        }
     291        String code = Main.getProjection().toCode();
     292        Element codeEl = doc.createElement("code");
     293        projectionEl.appendChild(codeEl);
     294        codeEl.setTextContent(code);
     295    }
     296
    265297    /**
    266298     * Writes given .jos document to an output stream.
Note: See TracChangeset for help on using the changeset viewer.