package org.horaapps.leafpic.util;
import com.drew.lang.GeoLocation;
import org.horaapps.leafpic.SecretConstants;
// needed for Local.US
import java.util.Locale;
/**
* Created by dnld on 04/09/16.
*/
public enum StaticMapProvider {
GOOGLE_MAPS(0), MAP_BOX(1), MAP_BOX_DARK(2), MAP_BOX_LIGHT(3), TYLER(4);
int value;
StaticMapProvider(int value) {
this.value = value;
}
public int getValue() { return value;}
// String.format is locale dependent, we need to force a locale with point instead of comma in decimals,
// otherwise (at least) mapbox does not work in some countries
public String getUrl(GeoLocation location) {
if (value>=1 && value <=3) //MAP_MOX invert coordinates
return String.format(Locale.US, getUrl(value), location.getLongitude(), location.getLatitude());
return String.format(Locale.US, getUrl(value), location.getLatitude(), location.getLongitude());
}
private String getUrl(int value) {
switch (value) {
case 0: default: return ("http://maps.google.com/maps/api/staticmap?center=%f,%f&zoom=15&size=500x300&scale=2&sensor=false");
case 1: return "https://api.mapbox.com/v4/mapbox.streets/%f,%f,15/500x300.jpg?access_token=" + SecretConstants.MAP_BOX_TOKEN;
case 2: return "https://api.mapbox.com/v4/mapbox.dark/%f,%f,15/500x300.jpg?access_token="+ SecretConstants.MAP_BOX_TOKEN;
case 3: return "https://api.mapbox.com/v4/mapbox.light/%f,%f,15/500x300.jpg?access_token="+ SecretConstants.MAP_BOX_TOKEN;
case 4: return "https://tyler-demo.herokuapp.com/?greyscale=false&lat=%f&lon=%f&zoom=15&width=500&height=300&tile_url=http://[abcd].tile.stamen.com/watercolor/{zoom}/{x}/{y}.jpg";
}
}
public static StaticMapProvider fromValue(int value) {
switch (value) {
case 0: default: return GOOGLE_MAPS;
case 1: return MAP_BOX;
case 2: return MAP_BOX_DARK;
case 3: return MAP_BOX_LIGHT;
case 4: return TYLER;
}
}
}