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 /altoslib/AltosMapStore.java | |
| 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>
Diffstat (limited to 'altoslib/AltosMapStore.java')
| -rw-r--r-- | altoslib/AltosMapStore.java | 46 | 
1 files changed, 44 insertions, 2 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;  	} +  } | 
