aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/connector/gc/GCMap.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/connector/gc/GCMap.java')
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCMap.java83
1 files changed, 73 insertions, 10 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCMap.java b/main/src/cgeo/geocaching/connector/gc/GCMap.java
index 6c94150..dc2408f 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCMap.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCMap.java
@@ -29,7 +29,9 @@ import android.graphics.Bitmap;
import java.text.ParseException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -305,7 +307,7 @@ public class GCMap {
for (Tile tile : tiles) {
- if (!Tile.Cache.contains(tile)) {
+ if (!Tile.cache.contains(tile)) {
final Parameters params = new Parameters(
"x", String.valueOf(tile.getX()),
"y", String.valueOf(tile.getY()),
@@ -318,17 +320,13 @@ public class GCMap {
if (Settings.isExcludeMyCaches()) { // works only for PM
params.put("hf", "1", "hh", "1"); // hide found, hide hidden
}
- if (Settings.getCacheType() == CacheType.TRADITIONAL) {
- params.put("ect", "9,5,3,6,453,13,1304,137,11,4,8,1858"); // 2 = tradi 3 = multi 8 = mystery
- } else if (Settings.getCacheType() == CacheType.MULTI) {
- params.put("ect", "9,5,2,6,453,13,1304,137,11,4,8,1858");
- } else if (Settings.getCacheType() == CacheType.MYSTERY) {
- params.put("ect", "9,5,3,6,453,13,1304,137,11,4,2,1858");
+ // ect: exclude cache type (probably), comma separated list
+ if (Settings.getCacheType() != CacheType.ALL) {
+ params.put("ect", getCacheTypeFilter(Settings.getCacheType()));
}
if (tile.getZoomLevel() != 14) {
params.put("_", String.valueOf(System.currentTimeMillis()));
}
- // TODO: other types t.b.d
// The PNG must be requested first, otherwise the following request would always return with 204 - No Content
Bitmap bitmap = Tile.requestMapTile(params);
@@ -351,7 +349,7 @@ public class GCMap {
else {
searchResult.addSearchResult(search);
}
- Tile.Cache.add(tile);
+ Tile.cache.add(tile);
}
// release native bitmap memory
@@ -368,7 +366,7 @@ public class GCMap {
}
}
- if (strategy.flags.contains(StrategyFlag.SEARCH_NEARBY) && Settings.isPremiumMember()) {
+ if (strategy.flags.contains(StrategyFlag.SEARCH_NEARBY) && Settings.isGCPremiumMember()) {
final Geopoint center = viewport.getCenter();
if ((lastSearchViewport == null) || !lastSearchViewport.contains(center)) {
//FIXME We don't have a RecaptchaReceiver!?
@@ -383,4 +381,69 @@ public class GCMap {
return searchResult;
}
+
+ /**
+ * Creates a list of caches types to filter on the live map (exclusion string)
+ *
+ * @param typeToDisplay
+ * - cache type to omit from exclusion list so it gets displayed
+ * @return
+ *
+ * cache types for live map filter:
+ * 2 = traditional, 9 = ape, 5 = letterbox
+ * 3 = multi
+ * 6 = event, 453 = mega, 13 = cito, 1304 = gps adventures
+ * 4 = virtual, 11 = webcam, 137 = earth
+ * 8 = mystery, 1858 = whereigo
+ */
+ private static String getCacheTypeFilter(CacheType typeToDisplay) {
+ Set<String> filterTypes = new HashSet<String>();
+ // Put all types in set, remove what should be visible in a second step
+ filterTypes.addAll(Arrays.asList("2", "9", "5", "3", "6", "453", "13", "1304", "4", "11", "137", "8", "1858"));
+ switch (typeToDisplay) {
+ case TRADITIONAL:
+ filterTypes.remove("2");
+ break;
+ case PROJECT_APE:
+ filterTypes.remove("9");
+ break;
+ case LETTERBOX:
+ filterTypes.remove("5");
+ break;
+ case MULTI:
+ filterTypes.remove("3");
+ break;
+ case EVENT:
+ filterTypes.remove("6");
+ break;
+ case MEGA_EVENT:
+ filterTypes.remove("453");
+ break;
+ case CITO:
+ filterTypes.remove("13");
+ break;
+ case GPS_EXHIBIT:
+ filterTypes.remove("1304");
+ break;
+ case VIRTUAL:
+ filterTypes.remove("4");
+ break;
+ case WEBCAM:
+ filterTypes.remove("11");
+ break;
+ case EARTH:
+ filterTypes.remove("137");
+ break;
+ case MYSTERY:
+ filterTypes.remove("8");
+ break;
+ case WHERIGO:
+ filterTypes.remove("1858");
+ break;
+ default:
+ // nothing to remove otherwise
+ }
+
+ return StringUtils.join(filterTypes.toArray(), ",");
+ }
}