[android] #4318 - move min/max zoom level to MapboxMap
This commit is contained in:
@@ -250,7 +250,7 @@ public final class CameraUpdateFactory {
|
||||
float scaleY = (uiSettings.getHeight() - padding.top - padding.bottom) / height;
|
||||
float minScale = scaleX < scaleY ? scaleX : scaleY;
|
||||
double zoom = projection.calculateZoom(minScale);
|
||||
zoom = MathUtils.clamp(zoom, (float) uiSettings.getMinZoom(), (float) uiSettings.getMaxZoom());
|
||||
zoom = MathUtils.clamp(zoom, (float) mapboxMap.getMinZoom(), (float) mapboxMap.getMaxZoom());
|
||||
|
||||
// Calculate the center point
|
||||
PointF paddedNEPixel = new PointF(nePixel.x + padding.right / minScale, nePixel.y + padding.top / minScale);
|
||||
|
||||
@@ -265,8 +265,8 @@ public class MapView extends FrameLayout {
|
||||
uiSettings.setZoomControlsEnabled(options.getZoomControlsEnabled());
|
||||
|
||||
// Zoom
|
||||
uiSettings.setMaxZoom(options.getMaxZoom());
|
||||
uiSettings.setMinZoom(options.getMinZoom());
|
||||
mMapboxMap.setMaxZoom(options.getMaxZoom());
|
||||
mMapboxMap.setMinZoom(options.getMinZoom());
|
||||
|
||||
// Compass
|
||||
uiSettings.setCompassEnabled(options.getCompassEnabled());
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.mapbox.mapboxsdk.maps;
|
||||
|
||||
import android.location.Location;
|
||||
import android.os.SystemClock;
|
||||
import android.support.annotation.FloatRange;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.UiThread;
|
||||
@@ -72,6 +73,9 @@ public class MapboxMap {
|
||||
private MapboxMap.OnFpsChangedListener mOnFpsChangedListener;
|
||||
private MapboxMap.OnCameraChangeListener mOnCameraChangeListener;
|
||||
|
||||
private double mMaxZoomLevel = -1;
|
||||
private double mMinZoomLevel = -1;
|
||||
|
||||
MapboxMap(@NonNull MapView mapView) {
|
||||
mMapView = mapView;
|
||||
mMapView.addOnMapChangedListener(new MapChangeCameraPositionListener());
|
||||
@@ -83,6 +87,78 @@ public class MapboxMap {
|
||||
mInfoWindows = new ArrayList<>();
|
||||
}
|
||||
|
||||
//
|
||||
// MinZoom
|
||||
//
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Sets the minimum zoom level the map can be displayed at.
|
||||
* </p>
|
||||
*
|
||||
* @param minZoom The new minimum zoom level.
|
||||
*/
|
||||
@UiThread
|
||||
public void setMinZoom(@FloatRange(from = MapboxConstants.MINIMUM_ZOOM, to = MapboxConstants.MAXIMUM_ZOOM) double minZoom) {
|
||||
if ((minZoom < MapboxConstants.MINIMUM_ZOOM) || (minZoom > MapboxConstants.MAXIMUM_ZOOM)) {
|
||||
Log.e(MapboxConstants.TAG, "Not setting minZoom, value is in unsupported range: " + minZoom);
|
||||
return;
|
||||
}
|
||||
mMinZoomLevel = minZoom;
|
||||
mMapView.setMinZoom(minZoom);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Gets the maximum zoom level the map can be displayed at.
|
||||
* </p>
|
||||
*
|
||||
* @return The minimum zoom level.
|
||||
*/
|
||||
@UiThread
|
||||
public double getMinZoom() {
|
||||
if (mMinZoomLevel == -1) {
|
||||
return mMinZoomLevel = mMapView.getMinZoom();
|
||||
}
|
||||
return mMinZoomLevel;
|
||||
}
|
||||
|
||||
//
|
||||
// MaxZoom
|
||||
//
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Sets the maximum zoom level the map can be displayed at.
|
||||
* </p>
|
||||
*
|
||||
* @param maxZoom The new maximum zoom level.
|
||||
*/
|
||||
@UiThread
|
||||
public void setMaxZoom(@FloatRange(from = MapboxConstants.MINIMUM_ZOOM, to = MapboxConstants.MAXIMUM_ZOOM) double maxZoom) {
|
||||
if ((maxZoom < MapboxConstants.MINIMUM_ZOOM) || (maxZoom > MapboxConstants.MAXIMUM_ZOOM)) {
|
||||
Log.e(MapboxConstants.TAG, "Not setting maxZoom, value is in unsupported range: " + maxZoom);
|
||||
return;
|
||||
}
|
||||
mMaxZoomLevel = maxZoom;
|
||||
mMapView.setMaxZoom(maxZoom);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Gets the maximum zoom level the map can be displayed at.
|
||||
* </p>
|
||||
*
|
||||
* @return The maximum zoom level.
|
||||
*/
|
||||
@UiThread
|
||||
public double getMaxZoom() {
|
||||
if (mMaxZoomLevel == -1) {
|
||||
return mMaxZoomLevel = mMapView.getMaxZoom();
|
||||
}
|
||||
return mMaxZoomLevel;
|
||||
}
|
||||
|
||||
//
|
||||
// UiSettings
|
||||
//
|
||||
|
||||
@@ -26,9 +26,6 @@ public class UiSettings {
|
||||
private boolean zoomControlsEnabled;
|
||||
private boolean scrollGesturesEnabled;
|
||||
|
||||
private double maxZoomLevel = -1;
|
||||
private double minZoomLevel = -1;
|
||||
|
||||
UiSettings(@NonNull MapView mapView) {
|
||||
this.mapView = mapView;
|
||||
this.compassSettings = new ViewSettings();
|
||||
@@ -36,70 +33,6 @@ public class UiSettings {
|
||||
this.attributionSettings = new ViewSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Sets the minimum zoom level the map can be displayed at.
|
||||
* </p>
|
||||
*
|
||||
* @param minZoom The new minimum zoom level.
|
||||
*/
|
||||
@UiThread
|
||||
public void setMinZoom(@FloatRange(from = MapboxConstants.MINIMUM_ZOOM, to = MapboxConstants.MAXIMUM_ZOOM) double minZoom) {
|
||||
if ((minZoom < MapboxConstants.MINIMUM_ZOOM) || (minZoom > MapboxConstants.MAXIMUM_ZOOM)) {
|
||||
Log.e(MapboxConstants.TAG, "Not setting minZoom, value is in unsupported range: " + minZoom);
|
||||
return;
|
||||
}
|
||||
minZoomLevel = minZoom;
|
||||
mapView.setMinZoom(minZoom);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Gets the maximum zoom level the map can be displayed at.
|
||||
* </p>
|
||||
*
|
||||
* @return The minimum zoom level.
|
||||
*/
|
||||
@UiThread
|
||||
public double getMinZoom() {
|
||||
if (minZoomLevel == -1) {
|
||||
return minZoomLevel = mapView.getMinZoom();
|
||||
}
|
||||
return minZoomLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Sets the maximum zoom level the map can be displayed at.
|
||||
* </p>
|
||||
*
|
||||
* @param maxZoom The new maximum zoom level.
|
||||
*/
|
||||
@UiThread
|
||||
public void setMaxZoom(@FloatRange(from = MapboxConstants.MINIMUM_ZOOM, to = MapboxConstants.MAXIMUM_ZOOM) double maxZoom) {
|
||||
if ((maxZoom < MapboxConstants.MINIMUM_ZOOM) || (maxZoom > MapboxConstants.MAXIMUM_ZOOM)) {
|
||||
Log.e(MapboxConstants.TAG, "Not setting maxZoom, value is in unsupported range: " + maxZoom);
|
||||
return;
|
||||
}
|
||||
maxZoomLevel = maxZoom;
|
||||
mapView.setMaxZoom(maxZoom);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Gets the maximum zoom level the map can be displayed at.
|
||||
* </p>
|
||||
*
|
||||
* @return The maximum zoom level.
|
||||
*/
|
||||
@UiThread
|
||||
public double getMaxZoom() {
|
||||
if (maxZoomLevel == -1) {
|
||||
return maxZoomLevel = mapView.getMaxZoom();
|
||||
}
|
||||
return maxZoomLevel;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Enables or disables the compass. The compass is an icon on the map that indicates the
|
||||
|
||||
Reference in New Issue
Block a user