diff options
| author | rsudev <rasch@munin-soft.de> | 2011-11-15 22:04:20 +0100 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2011-11-15 22:04:20 +0100 |
| commit | afb9a89209cf2e64eca726549f0da93a1da5ff80 (patch) | |
| tree | ddd96b3e03722e3e32861a3e7944a8c7cbf4265f /main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java | |
| parent | 2d9773fa90cba4bafff3bd71b9b7d3baaaff4766 (diff) | |
| download | cgeo-afb9a89209cf2e64eca726549f0da93a1da5ff80.zip cgeo-afb9a89209cf2e64eca726549f0da93a1da5ff80.tar.gz cgeo-afb9a89209cf2e64eca726549f0da93a1da5ff80.tar.bz2 | |
Implementing #179, refactor maps to single source, last part
Diffstat (limited to 'main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java')
| -rw-r--r-- | main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java b/main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java new file mode 100644 index 0000000..13373f1 --- /dev/null +++ b/main/src/cgeo/geocaching/maps/google/GoogleMapProvider.java @@ -0,0 +1,95 @@ +package cgeo.geocaching.maps.google; + +import cgeo.geocaching.R; +import cgeo.geocaching.cgCoord; +import cgeo.geocaching.cgeoapplication; +import cgeo.geocaching.enumerations.CacheType; +import cgeo.geocaching.geopoint.Geopoint; +import cgeo.geocaching.go4cache.Go4CacheUser; +import cgeo.geocaching.maps.MapProviderFactory; +import cgeo.geocaching.maps.interfaces.CachesOverlayItemImpl; +import cgeo.geocaching.maps.interfaces.GeoPointImpl; +import cgeo.geocaching.maps.interfaces.MapProvider; +import cgeo.geocaching.maps.interfaces.OtherCachersOverlayItemImpl; + +import com.google.android.maps.MapActivity; + +import android.content.Context; +import android.content.res.Resources; + +import java.util.HashMap; +import java.util.Map; + +public class GoogleMapProvider implements MapProvider { + + public final static int MAP = 1; + public final static int SATELLITE = 2; + + private final Map<Integer, String> mapSources; + + private int baseId; + + public GoogleMapProvider(int _baseId) { + baseId = _baseId; + final Resources resources = cgeoapplication.getInstance().getResources(); + + mapSources = new HashMap<Integer, String>(); + mapSources.put(baseId + MAP, resources.getString(R.string.map_source_google_map)); + mapSources.put(baseId + SATELLITE, resources.getString(R.string.map_source_google_satellite)); + } + + @Override + public Map<Integer, String> getMapSources() { + + return mapSources; + } + + @Override + public boolean IsMySource(int sourceId) { + return sourceId >= baseId + MAP && sourceId <= baseId + SATELLITE; + } + + public static boolean IsSatelliteSource(int sourceId) { + MapProvider mp = MapProviderFactory.getMapProvider(sourceId); + if (mp instanceof GoogleMapProvider) { + GoogleMapProvider gp = (GoogleMapProvider) mp; + if (gp.baseId + SATELLITE == sourceId) { + return true; + } + } + return false; + } + + @Override + public Class<? extends MapActivity> getMapClass() { + return GoogleMapActivity.class; + } + + @Override + public int getMapViewId() { + return R.id.map; + } + + @Override + public int getMapLayoutId() { + return R.layout.map_google; + } + + @Override + public GeoPointImpl getGeoPointBase(final Geopoint coords) { + return new GoogleGeoPoint(coords.getLatitudeE6(), coords.getLongitudeE6()); + } + + @Override + public CachesOverlayItemImpl getCachesOverlayItem(final cgCoord coordinate, final CacheType type) { + GoogleCacheOverlayItem baseItem = new GoogleCacheOverlayItem(coordinate, type); + return baseItem; + } + + @Override + public OtherCachersOverlayItemImpl getOtherCachersOverlayItemBase(Context context, Go4CacheUser userOne) { + GoogleOtherCachersOverlayItem baseItem = new GoogleOtherCachersOverlayItem(context, userOne); + return baseItem; + } + +} |
