diff options
| -rw-r--r-- | altosui/AltosSiteMapCache.java | 15 | ||||
| -rw-r--r-- | altosui/AltosSiteMapPreload.java | 2 | 
2 files changed, 16 insertions, 1 deletions
diff --git a/altosui/AltosSiteMapCache.java b/altosui/AltosSiteMapCache.java index 40c8ff6b..03dc3cf5 100644 --- a/altosui/AltosSiteMapCache.java +++ b/altosui/AltosSiteMapCache.java @@ -25,8 +25,13 @@ import java.net.URL;  import java.net.URLConnection;  public class AltosSiteMapCache extends JLabel { +	static final long google_maps_ratelimit_ms = 1200; +	// Google limits static map queries to 50 per minute per IP, so +	// each query should take at least 1.2 seconds. +  	public static boolean fetchMap(File file, String url) {  		URL u; +		long startTime = System.nanoTime();  		try {  			u = new URL(url); @@ -70,6 +75,16 @@ public class AltosSiteMapCache extends JLabel {  			}  			return false;  		} + +		long duration_ms = (System.nanoTime() - startTime) / 1000000; +		if (duration_ms < google_maps_ratelimit_ms) { +			try { +				Thread.sleep(google_maps_ratelimit_ms - duration_ms); +			} catch (InterruptedException e) { +				Thread.currentThread().interrupt(); +			} +		} +  		return true;  	} diff --git a/altosui/AltosSiteMapPreload.java b/altosui/AltosSiteMapPreload.java index 7112fed6..66399557 100644 --- a/altosui/AltosSiteMapPreload.java +++ b/altosui/AltosSiteMapPreload.java @@ -213,7 +213,7 @@ public class AltosSiteMapPreload extends AltosUIDialog implements ActionListener  	AltosMapPos	lat;  	AltosMapPos	lon; -	final static int	radius = 3; +	final static int	radius = 5;  	final static int	width = (radius * 2 + 1);  	final static int	height = (radius * 2 + 1);  | 
