// License: GPL. Copyright 2007 by Immanuel Scholz and others package org.openstreetmap.josm.data.coor; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.data.projection.Projection; public class CachedLatLon extends LatLon { private EastNorth eastNorth; private Projection proj; public CachedLatLon(double lat, double lon) { super(lat, lon); } public CachedLatLon(LatLon coor) { super(coor.lat(), coor.lon()); proj = null; } public CachedLatLon(EastNorth eastNorth) { super(Main.proj.eastNorth2latlon(eastNorth)); proj = Main.proj; this.eastNorth = eastNorth; } public final void setCoor(LatLon coor) { setLocation(coor.lon(), coor.lat()); proj = null; } public final void setEastNorth(EastNorth eastNorth) { proj = Main.proj; this.eastNorth = eastNorth; LatLon l = proj.eastNorth2latlon(eastNorth); setLocation(l.lon(), l.lat()); } public final EastNorth getEastNorth() { if(proj != Main.proj) { proj = Main.proj; eastNorth = proj.latlon2eastNorth(this); } return eastNorth; } @Override public String toString() { return "CachedLatLon[lat="+lat()+",lon="+lon()+"]"; } }