Ignore:
Timestamp:
2009-07-03T23:35:00+02:00 (16 years ago)
Author:
stoecker
Message:

fixes for JOSM 1725 - utilsplugin JumpToAction still missing

Location:
applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj/AgpifojLayer.java

    r14916 r16294  
    2929import org.openstreetmap.josm.Main;
    3030import org.openstreetmap.josm.actions.RenameLayerAction;
     31import org.openstreetmap.josm.data.coor.CachedLatLon;
    3132import org.openstreetmap.josm.data.coor.EastNorth;
    3233import org.openstreetmap.josm.data.coor.LatLon;
     
    5354
    5455    private int currentPhoto = -1;
    55    
     56
    5657    // These are used by the auto-guess function to store the result,
    5758    // so when the dialig is re-opened the users modifications don't
     
    6869        Date time;
    6970        LatLon exifCoor;
    70         LatLon coor;
    71         EastNorth pos;
     71        CachedLatLon pos;
    7272        /** Speed in kilometer per second */
    7373        Double speed;
     
    7575        Double elevation;
    7676
     77        public void setCoor(LatLon latlon)
     78        {
     79            pos = new CachedLatLon(latlon);
     80        }
    7781        public int compareTo(ImageEntry image) {
    7882            if (time != null && image.time != null) {
     
    362366    public void visitBoundingBox(BoundingXYVisitor v) {
    363367        for (ImageEntry e : data)
    364             v.visit(e.pos);
     368            v.visit(e.pos.getEastNorth());
    365369    }
    366370
     
    411415            // Store values
    412416
    413             e.coor = new LatLon(lat, lon);
    414             e.exifCoor = e.coor;
    415             e.pos = Main.proj.latlon2eastNorth(e.coor);
     417            e.setCoor(new LatLon(lat, lon));
     418            e.exifCoor = e.pos;
    416419
    417420        } catch (Exception p) {
    418             e.coor = null;
    419421            e.pos = null;
    420422        }
  • applications/editors/josm/plugins/agpifoj/src/org/openstreetmap/josm/plugins/agpifoj/CorrelateGpxWithImages.java

    r16290 r16294  
    765765                // Reset previous position
    766766                for(ImageEntry x : autoImgs) {
    767                     x.coor = null;
    768767                    x.pos = null;
    769768                }
     
    893892                if (e.time != null) {
    894893                    // Reset previous position
    895                     e.coor = null;
    896894                    e.pos = null;
    897895                    dateImgLst.add(e);
     
    908906        } else {
    909907            for (ImageEntry e : yLayer.data) {
    910                 if (e.time != null && e.coor == null) {
     908                if (e.time != null && e.pos == null) {
    911909                    dateImgLst.add(e);
    912910                }
     
    999997            while(i >= 0 && (dateImgLst.get(i).time.getTime()/1000) <= curDateWp
    1000998                        && (dateImgLst.get(i).time.getTime()/1000) >= (curDateWp - interval)) {
    1001                 if(dateImgLst.get(i).coor == null) {
    1002                     dateImgLst.get(i).pos = curWp.eastNorth;
    1003                     dateImgLst.get(i).coor = Main.proj.eastNorth2latlon(dateImgLst.get(i).pos);
     999                if(dateImgLst.get(i).pos == null) {
     1000                    dateImgLst.get(i).setCoor(curWp.getCoor());
    10041001                    dateImgLst.get(i).speed = speed;
    10051002                    dateImgLst.get(i).elevation = curElevation;
     
    10161013        while(i >= 0 && (imgDate = dateImgLst.get(i).time.getTime()/1000) >= prevDateWp) {
    10171014
    1018             if(dateImgLst.get(i).coor == null) {
     1015            if(dateImgLst.get(i).pos == null) {
    10191016                // The values of timeDiff are between 0 and 1, it is not seconds but a dimensionless
    10201017                // variable
    10211018                double timeDiff = (double)(imgDate - prevDateWp) / interval;
    1022                 dateImgLst.get(i).pos = new EastNorth(
    1023                         interpolate(prevWp.eastNorth.east(),  curWp.eastNorth.east(),  timeDiff),
    1024                         interpolate(prevWp.eastNorth.north(), curWp.eastNorth.north(), timeDiff));
    1025                 dateImgLst.get(i).coor = Main.proj.eastNorth2latlon(dateImgLst.get(i).pos);
     1019                dateImgLst.get(i).setCoor(prevWp.getCoor().interpolate(curWp.getCoor(), timeDiff));
    10261020                dateImgLst.get(i).speed = speed;
    10271021
    10281022                if (curElevation != null && prevElevation != null)
    1029                     dateImgLst.get(i).elevation = interpolate(prevElevation, curElevation, timeDiff);
     1023                    dateImgLst.get(i).elevation = prevElevation + (curElevation - prevElevation) * timeDiff;
    10301024
    10311025                ret++;
     
    10341028        }
    10351029        return ret;
    1036     }
    1037 
    1038     private double interpolate(double val1, double val2, double time) {
    1039         return val1 + (val2 - val1) * time;
    10401030    }
    10411031
     
    11681158     * Formula and earth radius from : http://en.wikipedia.org/wiki/Great-circle_distance */
    11691159    public double getDistance(WayPoint p1, WayPoint p2) {
    1170         double p1Lat = p1.latlon.lat() * Math.PI / 180;
    1171         double p1Lon = p1.latlon.lon() * Math.PI / 180;
    1172         double p2Lat = p2.latlon.lat() * Math.PI / 180;
    1173         double p2Lon = p2.latlon.lon() * Math.PI / 180;
     1160        double p1Lat = p1.getCoor().lat() * Math.PI / 180;
     1161        double p1Lon = p1.getCoor().lon() * Math.PI / 180;
     1162        double p2Lat = p2.getCoor().lat() * Math.PI / 180;
     1163        double p2Lon = p2.getCoor().lon() * Math.PI / 180;
    11741164        double ret = Math.atan2(Math.sqrt(Math.pow(Math.cos(p2Lat) * Math.sin(p2Lon - p1Lon), 2)
    11751165                                          + Math.pow(Math.cos(p1Lat) * Math.sin(p2Lat)
Note: See TracChangeset for help on using the changeset viewer.