Skip to content

Commit

Permalink
Using ratio to config max width of scalebar.
Browse files Browse the repository at this point in the history
  • Loading branch information
kevin committed Oct 8, 2019
1 parent 3df2708 commit b7593b5
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,6 @@
import timber.log.Timber;

import static com.mapbox.mapboxsdk.plugins.annotation.MapboxMapAction.invoke;
import static com.mapbox.pluginscalebar.ScaleBarOptions.ScaleBarRatio.HALF;
import static com.mapbox.pluginscalebar.ScaleBarOptions.ScaleBarRatio.QUARTER;
import static com.mapbox.pluginscalebar.ScaleBarOptions.ScaleBarRatio.THIRD;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
Expand Down Expand Up @@ -255,20 +252,20 @@ public void testMetrics() {
public void testRatio() {
validateTestSetup();
setupScaleBar();
assertEquals(HALF,scaleBarWidget.getRatio());
assertEquals(0.5f,scaleBarWidget.getRatio(), 0f);
invoke(mapboxMap, (uiController, mapboxMap) -> {
ScaleBarOptions option = new ScaleBarOptions(activity);
option.setRatio(THIRD);
option.setRatio(0.1f);
scaleBarWidget = scaleBarPlugin.create(option);
assertNotNull(scaleBarWidget);
assertEquals(THIRD, scaleBarWidget.getRatio());
assertEquals(0.1f, scaleBarWidget.getRatio(), 0f);
});
invoke(mapboxMap, (uiController, mapboxMap) -> {
ScaleBarOptions option = new ScaleBarOptions(activity);
option.setRatio(QUARTER);
option.setRatio(1.0f);
scaleBarWidget = scaleBarPlugin.create(option);
assertNotNull(scaleBarWidget);
assertEquals(QUARTER, scaleBarWidget.getRatio());
assertEquals(1.0f, scaleBarWidget.getRatio(), 0f);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class ScalebarActivity : AppCompatActivity() {
.setMarginTop(15f)
.setMarginLeft(16f)
.setTextBarMargin(15f)
.setRatio(ScaleBarOptions.ScaleBarRatio.QUARTER)
.setRatio(0.5f)

scaleBarPlugin.create(scaleBarOptions)
fabScaleWidget.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.content.Context;
import android.support.annotation.ColorRes;
import android.support.annotation.DimenRes;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import android.support.v4.content.ContextCompat;
Expand All @@ -15,15 +16,6 @@
public class ScaleBarOptions {
public static final int REFRESH_INTERVAL_DEFAULT = 15;

/**
* Enum for scale bar max width ratio compared with MapView width.
*/
public enum ScaleBarRatio {
HALF,
THIRD,
QUARTER
}

private final Context context;
private int refreshInterval;
private int textColor;
Expand All @@ -36,7 +28,7 @@ public enum ScaleBarRatio {
private float borderWidth;
private float textSize;
private boolean isMetricUnit;
private ScaleBarRatio ratio;
private float ratio;

public ScaleBarOptions(@NonNull Context context) {
this.context = context;
Expand All @@ -51,7 +43,7 @@ public ScaleBarOptions(@NonNull Context context) {
setTextColor(android.R.color.black);
setPrimaryColor(android.R.color.black);
setSecondaryColor(android.R.color.white);
setRatio(ScaleBarRatio.HALF);
setRatio(0.5f);
}

/**
Expand Down Expand Up @@ -270,9 +262,9 @@ public ScaleBarOptions setTextBarMargin(@DimenRes int textBarMargin) {
/**
* Set the ratio of scale bar max width compared with MapView width.
*
* @param ratio the ratio scale bar will use.
* @param ratio the ratio scale bar will use, must be in the range from 0.1f to 1.0f.
*/
public ScaleBarOptions setRatio(ScaleBarRatio ratio) {
public ScaleBarOptions setRatio(@FloatRange(from = 0.1f, to = 1.0f) float ratio) {
this.ratio = ratio;
return this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@
import static com.mapbox.pluginscalebar.ScaleBarConstants.KILOMETER;
import static com.mapbox.pluginscalebar.ScaleBarConstants.KILOMETER_UNIT;
import static com.mapbox.pluginscalebar.ScaleBarConstants.MILE_UNIT;
import static com.mapbox.pluginscalebar.ScaleBarOptions.ScaleBarRatio.HALF;
import static com.mapbox.pluginscalebar.ScaleBarOptions.ScaleBarRatio.QUARTER;
import static com.mapbox.pluginscalebar.ScaleBarOptions.ScaleBarRatio.THIRD;

/**
* The scale widget is a visual representation of the scale bar plugin.
Expand Down Expand Up @@ -371,25 +368,16 @@ private String getDistanceText(int distance) {
* Set the ratio of scale bar max width compared with MapView width.
* @param ratio the ratio scale bar will use.
*/
public void setRatio(ScaleBarOptions.ScaleBarRatio ratio) {
switch (ratio) {
case HALF:
this.ratio = 0.5f;
break;
case THIRD:
this.ratio = 0.33f;
break;
default:
this.ratio = 0.25f;
}
public void setRatio(float ratio) {
this.ratio = ratio;
}

/**
* Get the current ratio of scale bar.
* @return current ratio.
*/
public ScaleBarOptions.ScaleBarRatio getRatio() {
return this.ratio == 0.5f ? HALF : this.ratio == 0.33f ? THIRD : QUARTER;
public float getRatio() {
return this.ratio;
}

/**
Expand Down

0 comments on commit b7593b5

Please sign in to comment.