diff options
| author | Keith Packard <keithp@keithp.com> | 2016-05-11 10:47:31 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2016-05-11 23:22:15 -0700 | 
| commit | 0a50669b1fde3e3c1cbc08c4836613b58ead219b (patch) | |
| tree | 8e4f0580d144a56e2a1a42995af5fb706de69a6b | |
| parent | 471091d0fddf09ed69df75e4f2fdd92e5f57b9c5 (diff) | |
altoslib: Clean up map file and url handling
move it all to AltosMapStore.java
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | altoslib/AltosMapStore.java | 46 | ||||
| -rw-r--r-- | altoslib/AltosMapTile.java | 41 | 
2 files changed, 45 insertions, 42 deletions
| diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index aed365ca..ca4c9c75 100644 --- a/altoslib/AltosMapStore.java +++ b/altoslib/AltosMapStore.java @@ -28,6 +28,45 @@ public class AltosMapStore {  	int					status; +	private static File map_file(AltosLatLon center, int zoom, int maptype, int px_size, int scale) { +		double lat = center.lat; +		double lon = center.lon; +		char chlat = lat < 0 ? 'S' : 'N'; +		char chlon = lon < 0 ? 'W' : 'E'; + +		if (lat < 0) lat = -lat; +		if (lon < 0) lon = -lon; +		String maptype_string = String.format("%s-", AltosMap.maptype_names[maptype]); +		String format_string; +		if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) +			format_string = "jpg"; +		else +			format_string = "png"; +		return new File(AltosPreferences.mapdir(), +				String.format("map-%c%.6f,%c%.6f-%s%d%s.%s", +					      chlat, lat, chlon, lon, maptype_string, zoom, scale == 1 ? "" : String.format("-%d", scale), format_string)); +	} + +	private static String map_url(AltosLatLon center, int zoom, int maptype, int px_size, int scale) { +		String format_string; +		int z = zoom; + +		if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) +			format_string = "jpg"; +		else +			format_string = "png32"; + +		for (int s = 1; s < scale; s <<= 1) +			z--; + +		if (AltosVersion.has_google_maps_api_key()) +			return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s&key=%s", +					     center.lat, center.lon, z, px_size/scale, px_size/scale, scale, AltosMap.maptype_names[maptype], format_string, AltosVersion.google_maps_api_key); +		else +			return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s", +					     center.lat, center.lon, z, px_size/scale, px_size/scale, AltosMap.maptype_names[maptype], format_string); +	} +  	public int status() {  		return status;  	} @@ -229,16 +268,19 @@ public class AltosMapStore {  	static HashMap<String,AltosMapStore> stores = new HashMap<String,AltosMapStore>(); -	public static AltosMapStore get(String url, File file) { +	public static AltosMapStore get(AltosLatLon center, int zoom, int maptype, int px_size, int scale) { +		String url = map_url(center, zoom, maptype, px_size, scale); +  		AltosMapStore	store;  		synchronized(stores) {  			if (stores.containsKey(url)) {  				store = stores.get(url);  			} else { -				store = new AltosMapStore(url, file); +				store = new AltosMapStore(url, map_file(center, zoom, maptype, px_size, scale));  				stores.put(url, store);  			}  		}  		return store;  	} +  } diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index d921fd10..19332de1 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -38,45 +38,6 @@ public class AltosMapTile implements AltosFontListener, AltosMapStoreListener {  	static public final int	bad_request = 4;/* downloading failed */  	static public final int	forbidden = 5;	/* downloading failed */ -	private File map_file() { -		double lat = center.lat; -		double lon = center.lon; -		char chlat = lat < 0 ? 'S' : 'N'; -		char chlon = lon < 0 ? 'W' : 'E'; - -		if (lat < 0) lat = -lat; -		if (lon < 0) lon = -lon; -		String maptype_string = String.format("%s-", AltosMap.maptype_names[maptype]); -		String format_string; -		if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) -			format_string = "jpg"; -		else -			format_string = "png"; -		return new File(AltosPreferences.mapdir(), -				String.format("map-%c%.6f,%c%.6f-%s%d%s.%s", -					      chlat, lat, chlon, lon, maptype_string, zoom, scale == 1 ? "" : String.format("-%d", scale), format_string)); -	} - -	private String map_url() { -		String format_string; -		int z = zoom; - -		if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) -			format_string = "jpg"; -		else -			format_string = "png32"; - -		for (int s = 1; s < scale; s <<= 1) -			z--; - -		if (AltosVersion.has_google_maps_api_key()) -			return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s&key=%s", -					     center.lat, center.lon, z, px_size/scale, px_size/scale, scale, AltosMap.maptype_names[maptype], format_string, AltosVersion.google_maps_api_key); -		else -			return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s", -					     center.lat, center.lon, z, px_size/scale, px_size/scale, AltosMap.maptype_names[maptype], format_string); -	} -  	public void font_size_changed(int font_size) {  	} @@ -132,7 +93,7 @@ public class AltosMapTile implements AltosFontListener, AltosMapStoreListener {  		this.px_size = px_size;  		this.scale = scale; -		store = AltosMapStore.get(map_url(), map_file()); +		store = AltosMapStore.get(center, zoom, maptype, px_size, scale);  		store.add_listener(this);  	} | 
