diff options
author | Tobrun Van Nuland <nurbot@Tobruns-Mac-mini.local> | 2016-05-24 14:45:51 +0200 |
---|---|---|
committer | Tobrun Van Nuland <tobrun.van.nuland@gmail.com> | 2016-05-25 13:09:48 +0200 |
commit | 621bb018454d2edd9e5367fb150045d59def4166 (patch) | |
tree | 94a43323ddb999cb46468bf2f75330ee29adc80d /platform | |
parent | 1d7d8a9f2f39de2ae2425a9d440ce5c4151d1885 (diff) | |
download | qtlocation-mapboxgl-621bb018454d2edd9e5367fb150045d59def4166.tar.gz |
[android] #5115 - add visible integration to MarkerView
Diffstat (limited to 'platform')
4 files changed, 38 insertions, 6 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerViewOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerViewOptions.java index cf09ee75d4..18db87f2c1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerViewOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerViewOptions.java @@ -28,6 +28,7 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base protected int selectAnimRes; protected int deselectAnimRes; protected int rotation; + protected boolean visible = true; public BaseMarkerViewOptions() { centerOffset = new PointF(); @@ -84,6 +85,11 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base return getThis(); } + public T visible(boolean visible){ + this.visible = visible; + return getThis(); + } + public LatLng getPosition() { return position; } @@ -124,6 +130,10 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base return rotation; } + public boolean isVisible() { + return visible; + } + public abstract T getThis(); public abstract U getMarker(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java index 4f88cb038f..270b43d450 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java @@ -12,6 +12,7 @@ public class MarkerView extends Marker { private PointF centerOffset; private Point infoWindowOffset; private boolean flat; + private boolean visible; private int selectAnimRes; private int deselectAnimRes; @@ -82,6 +83,17 @@ public class MarkerView extends Marker { this.tiltValue = tiltValue; } + public void setVisible(boolean visible) { + this.visible = visible; + if (markerViewManager != null) { + markerViewManager.animateVisible(this, visible); + } + } + + public boolean isVisible() { + return visible; + } + public void setRotation(float rotation) { this.rotation = rotation; if (markerViewManager != null) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java index 982d279caf..c0c18e59e7 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java @@ -49,6 +49,13 @@ public class MarkerViewManager { } } + public void animateVisible(@NonNull MarkerView marker, boolean visible) { + View convertView = mMarkerViewMap.get(marker); + if (convertView != null) { + convertView.setVisibility(visible ? View.VISIBLE : View.GONE); + } + } + public void update() { View convertView; for (MarkerView marker : mMarkerViewMap.keySet()) { @@ -57,7 +64,7 @@ public class MarkerViewManager { PointF point = mapboxMap.getProjection().toScreenLocation(marker.getPosition()); convertView.setX(point.x - (convertView.getMeasuredWidth() / 2)); convertView.setY(point.y - (convertView.getMeasuredHeight() / 2)); - if (convertView.getVisibility() == View.GONE) { + if (marker.isVisible() && convertView.getVisibility() == View.GONE) { convertView.animate().cancel(); convertView.setAlpha(0); AnimatorUtils.alpha(convertView, 1); @@ -181,6 +188,9 @@ public class MarkerViewManager { // alpha adaptedView.setAlpha(marker.getAlpha()); + // visible + adaptedView.setVisibility(marker.isVisible() ? View.VISIBLE : View.GONE); + if (mapboxMap.getSelectedMarkers().contains(marker)) { // if a marker to be shown was selected // replay that animation with duration 0 diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java index 1896715f88..29435a9d91 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java @@ -27,6 +27,7 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV selectAnimatorResource(in.readInt()); deselectAnimatorResource(in.readInt()); rotation(in.readInt()); + visible(in.readByte() != 0); if (in.readByte() != 0) { // this means we have an icon String iconId = in.readString(); @@ -52,11 +53,12 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV out.writeString(getSnippet()); out.writeString(getTitle()); out.writeByte((byte) (isFlat() ? 1 : 0)); - out.writeParcelable(getCenterOffset(),flags); - out.writeParcelable(getInfoWindowOffset(),flags); + out.writeParcelable(getCenterOffset(), flags); + out.writeParcelable(getInfoWindowOffset(), flags); out.writeInt(getSelectAnimRes()); out.writeInt(getDeselectAnimRes()); out.writeInt(getRotation()); + out.writeByte((byte) (isVisible() ? 1 : 0)); Icon icon = getIcon(); out.writeByte((byte) (icon != null ? 1 : 0)); if (icon != null) { @@ -77,6 +79,7 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV marker.setSelectAnimRes(selectAnimRes); marker.setDeselectAnimRes(deselectAnimRes); marker.setRotation(rotation); + marker.setVisible(visible); return marker; } @@ -95,11 +98,8 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - MarkerViewOptions that = (MarkerViewOptions) o; - return marker != null ? marker.equals(that.marker) : that.marker == null; - } @Override |