summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-05-11 10:47:31 -0700
committerKeith Packard <keithp@keithp.com>2016-05-11 23:22:15 -0700
commit0a50669b1fde3e3c1cbc08c4836613b58ead219b (patch)
tree8e4f0580d144a56e2a1a42995af5fb706de69a6b
parent471091d0fddf09ed69df75e4f2fdd92e5f57b9c5 (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.java46
-rw-r--r--altoslib/AltosMapTile.java41
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);
}