summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorTobrun Van Nuland <nurbot@Tobruns-Mac-mini.local>2016-05-24 14:45:51 +0200
committerTobrun Van Nuland <tobrun.van.nuland@gmail.com>2016-05-25 13:09:48 +0200
commit621bb018454d2edd9e5367fb150045d59def4166 (patch)
tree94a43323ddb999cb46468bf2f75330ee29adc80d /platform
parent1d7d8a9f2f39de2ae2425a9d440ce5c4151d1885 (diff)
downloadqtlocation-mapboxgl-621bb018454d2edd9e5367fb150045d59def4166.tar.gz
[android] #5115 - add visible integration to MarkerView
Diffstat (limited to 'platform')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerViewOptions.java10
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java12
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java12
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java10
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