Changeset 9818 in josm for trunk/src/org/openstreetmap/josm/gui/layer
- Timestamp:
- 2016-02-17T23:27:47+01:00 (8 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui/layer
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/layer/TMSLayer.java
r9731 r9818 5 5 6 6 import org.apache.commons.jcs.access.CacheAccess; 7 import org.openstreetmap.gui.jmapviewer.OsmMercator; 7 8 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader; 8 9 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource; … … 29 30 * 30 31 */ 31 public class TMSLayer extends AbstractCachedTileSourceLayer {32 public class TMSLayer extends AbstractCachedTileSourceLayer implements NativeScaleLayer { 32 33 private static final String CACHE_REGION_NAME = "TMS"; 33 34 … … 145 146 return AbstractCachedTileSourceLayer.getCache(CACHE_REGION_NAME); 146 147 } 148 149 @Override 150 public ScaleList getNativeScales() { 151 ScaleList scales = new ScaleList(); 152 for (int zoom = info.getMinZoom(); zoom <= info.getMaxZoom(); zoom++) { 153 double scale = OsmMercator.EARTH_RADIUS * Math.PI * 2 / Math.pow(2, zoom) / OsmMercator.DEFAUL_TILE_SIZE; 154 scales.add(new Scale(scale)); 155 } 156 return scales; 157 } 147 158 } -
trunk/src/org/openstreetmap/josm/gui/layer/WMTSLayer.java
r9430 r9818 6 6 7 7 import org.apache.commons.jcs.access.CacheAccess; 8 import org.openstreetmap.gui.jmapviewer.TileXY;9 import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate;10 8 import org.openstreetmap.gui.jmapviewer.interfaces.TileLoader; 11 9 import org.openstreetmap.gui.jmapviewer.tilesources.AbstractTMSTileSource; 12 10 import org.openstreetmap.josm.Main; 13 11 import org.openstreetmap.josm.data.cache.BufferedImageCacheEntry; 14 import org.openstreetmap.josm.data.coor.LatLon;15 12 import org.openstreetmap.josm.data.imagery.ImageryInfo; 16 13 import org.openstreetmap.josm.data.imagery.ImageryInfo.ImageryType; … … 19 16 import org.openstreetmap.josm.data.preferences.BooleanProperty; 20 17 import org.openstreetmap.josm.data.projection.Projection; 21 import org.openstreetmap.josm.gui.MapView;22 18 23 19 /** … … 28 24 * http://www.opengeospatial.org/standards/wmts 29 25 * 30 * @author Wiktor Niesiob ędzki26 * @author Wiktor NiesiobÄ™dzki 31 27 * 32 28 */ 33 public class WMTSLayer extends AbstractCachedTileSourceLayer {29 public class WMTSLayer extends AbstractCachedTileSourceLayer implements NativeScaleLayer { 34 30 /** 35 31 * default setting of autozoom per layer … … 63 59 } 64 60 65 /** 66 * @param zoom level of the tile 67 * @return how many pixels of the screen occupies one pixel of the tile 68 */ 69 private double getTileToScreenRatio(int zoom) { 70 MapView mv = Main.map.mapView; 71 LatLon topLeft = mv.getLatLon(0, 0); 72 LatLon botLeft = mv.getLatLon(0, tileSource.getTileSize()); 73 74 TileXY topLeftTile = tileSource.latLonToTileXY(topLeft.toCoordinate(), zoom); 75 76 ICoordinate north = tileSource.tileXYToLatLon(topLeftTile.getXIndex(), topLeftTile.getYIndex(), zoom); 77 ICoordinate south = tileSource.tileXYToLatLon(topLeftTile.getXIndex(), topLeftTile.getYIndex() + 1, zoom); 78 79 return Math.abs((north.getLat() - south.getLat()) / (topLeft.lat() - botLeft.lat())); 61 @Override 62 protected int getBestZoom() { 63 if (!Main.isDisplayingMapView()) return 0; 64 ScaleList scaleList = getNativeScales(); 65 for (int i = scaleList.size()-1; i >= 0; i--) { 66 Scale scale = scaleList.get(i); 67 if (scale.scale >= Main.map.mapView.getScale()) { 68 return i; 69 } 70 } 71 return 0; 80 72 } 81 73 82 74 @Override 83 protected int getBestZoom() { 84 if (!Main.isDisplayingMapView()) return 1; 75 protected int getMaxZoomLvl() { 76 return getNativeScales().size()-1; 77 } 85 78 86 for (int i = getMinZoomLvl() + 1; i <= getMaxZoomLvl(); i++) { 87 double ret = getTileToScreenRatio(i); 88 if (ret < 1) { 89 return i - 1; 90 } 91 } 92 return getMaxZoomLvl(); 79 @Override 80 protected int getMinZoomLvl() { 81 return 0; 93 82 } 94 83 … … 130 119 return AbstractCachedTileSourceLayer.getCache(CACHE_REGION_NAME); 131 120 } 121 122 @Override 123 public ScaleList getNativeScales() { 124 return ((WMTSTileSource) tileSource).getNativeScales(); 125 } 132 126 }
Note:
See TracChangeset
for help on using the changeset viewer.