summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2016-05-20 18:36:17 +0200
committerTobrun <tobrun@mapbox.com>2016-05-20 18:36:17 +0200
commitf60e8949b8b9dd459ed73c59ea59296145f2b8db (patch)
tree816f4b84a1026b34f475e7f8eb0fa96f7e367d7d
parentf751d2c46528ac4301ef3753c468950051937940 (diff)
downloadqtlocation-mapboxgl-f60e8949b8b9dd459ed73c59ea59296145f2b8db.tar.gz
[android] #5081 - added rotation to View Marker
-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.java18
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java39
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java28
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerAdapterActivity.java2
5 files changed, 54 insertions, 43 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 ab6504c636..cf09ee75d4 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
@@ -27,6 +27,7 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base
protected Point infoWindowOffset;
protected int selectAnimRes;
protected int deselectAnimRes;
+ protected int rotation;
public BaseMarkerViewOptions() {
centerOffset = new PointF();
@@ -78,6 +79,11 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base
return getThis();
}
+ public T rotation(int rotation){
+ this.rotation = rotation;
+ return getThis();
+ }
+
public LatLng getPosition() {
return position;
}
@@ -114,6 +120,10 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base
return deselectAnimRes;
}
+ public int getRotation() {
+ return rotation;
+ }
+
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 f8c36ee14b..63bb212cdf 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
@@ -3,6 +3,8 @@ package com.mapbox.mapboxsdk.annotations;
import android.graphics.Point;
import android.graphics.PointF;
+import com.mapbox.mapboxsdk.maps.MapboxMap;
+
public class MarkerView extends Marker {
private PointF centerOffset;
@@ -13,8 +15,9 @@ public class MarkerView extends Marker {
private int deselectAnimRes;
private float tiltValue;
+ private float rotation;
- MarkerView(){
+ MarkerView() {
centerOffset = new PointF();
infoWindowOffset = new Point();
}
@@ -75,4 +78,17 @@ public class MarkerView extends Marker {
public void setTiltValue(float tiltValue) {
this.tiltValue = tiltValue;
}
+
+ public void setRotation(float rotation) {
+ this.rotation = rotation;
+
+ MapboxMap mapboxMap = getMapboxMap();
+ if (mapboxMap != null) {
+ mapboxMap.setMarkerViewRotation(this, rotation);
+ }
+ }
+
+ public float getRotation() {
+ return rotation;
+ }
}
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 437bba80da..1896715f88 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
@@ -26,6 +26,7 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV
infoWindowOffset((Point) in.readParcelable(Point.class.getClassLoader()));
selectAnimatorResource(in.readInt());
deselectAnimatorResource(in.readInt());
+ rotation(in.readInt());
if (in.readByte() != 0) {
// this means we have an icon
String iconId = in.readString();
@@ -55,6 +56,7 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV
out.writeParcelable(getInfoWindowOffset(),flags);
out.writeInt(getSelectAnimRes());
out.writeInt(getDeselectAnimRes());
+ out.writeInt(getRotation());
Icon icon = getIcon();
out.writeByte((byte) (icon != null ? 1 : 0));
if (icon != null) {
@@ -74,45 +76,10 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV
marker.setInfoWindowOffset(infoWindowOffset);
marker.setSelectAnimRes(selectAnimRes);
marker.setDeselectAnimRes(deselectAnimRes);
+ marker.setRotation(rotation);
return marker;
}
- public LatLng getPosition() {
- return position;
- }
-
- public String getSnippet() {
- return snippet;
- }
-
- public String getTitle() {
- return title;
- }
-
- public Icon getIcon() {
- return icon;
- }
-
- public boolean isFlat() {
- return flat;
- }
-
- public PointF getCenterOffset() {
- return centerOffset;
- }
-
- public Point getInfoWindowOffset() {
- return infoWindowOffset;
- }
-
- public int getSelectAnimRes() {
- return selectAnimRes;
- }
-
- public int getDeselectAnimRes() {
- return deselectAnimRes;
- }
-
public static final Parcelable.Creator<MarkerViewOptions> CREATOR
= new Parcelable.Creator<MarkerViewOptions>() {
public MarkerViewOptions createFromParcel(Parcel in) {
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
index da5d5b63b7..74ecfcb9f8 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
@@ -1,5 +1,6 @@
package com.mapbox.mapboxsdk.maps;
+import android.animation.ObjectAnimator;
import android.content.Context;
import android.animation.Animator;
import android.animation.AnimatorInflater;
@@ -691,6 +692,9 @@ public class MapboxMap {
// tilt
adaptedView.setRotationX(marker.getTiltValue());
+ // rotation
+ adaptedView.setRotation(marker.getRotation());
+
if (mSelectedMarkers.contains(marker)) {
// if a marker to be shown was selected
// replay that animation with duration 0
@@ -804,8 +808,8 @@ public class MapboxMap {
*/
@UiThread
@NonNull
- public Marker addMarkerView(@NonNull BaseMarkerViewOptions markerOptions) {
- Marker marker = prepareViewMarker(markerOptions);
+ public MarkerView addMarkerView(@NonNull BaseMarkerViewOptions markerOptions) {
+ MarkerView marker = prepareViewMarker(markerOptions);
long id = mMapView.addMarker(marker);
marker.setMapboxMap(this);
marker.setId(id);
@@ -1407,8 +1411,8 @@ public class MapboxMap {
return marker;
}
- private Marker prepareViewMarker(BaseMarkerViewOptions markerViewOptions) {
- Marker marker = markerViewOptions.getMarker();
+ private MarkerView prepareViewMarker(BaseMarkerViewOptions markerViewOptions) {
+ MarkerView marker = markerViewOptions.getMarker();
Icon icon = IconFactory.recreate("markerViewSettings", mViewMarkerBitmap);
marker.setIcon(icon);
return marker;
@@ -1425,6 +1429,22 @@ public class MapboxMap {
return mMarkerViewAdapters;
}
+ public void setMarkerViewRotation(@NonNull MarkerView markerView, float rotation) {
+ final View convertView = mMarkerViewMap.get(markerView);
+ if (convertView != null) {
+ convertView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ ObjectAnimator rotateAnimator = ObjectAnimator.ofFloat(convertView, View.ROTATION, convertView.getRotation(), rotation);
+ rotateAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ super.onAnimationEnd(animation);
+ convertView.setLayerType(View.LAYER_TYPE_NONE, null);
+ }
+ });
+ rotateAnimator.start();
+ }
+ }
+
public void setOnMarkerViewClickListener(@Nullable OnMarkerViewClickListener listener) {
mOnMarkerViewClickListener = listener;
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerAdapterActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerAdapterActivity.java
index 64ff6c1897..533d5eb7bc 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerAdapterActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerAdapterActivity.java
@@ -145,7 +145,6 @@ public class ViewMarkerAdapterActivity extends AppCompatActivity {
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
- Log.v(MapboxConstants.TAG, "SSSSST");
viewHolder.title.setText(marker.getTitle());
return convertView;
}
@@ -177,7 +176,6 @@ public class ViewMarkerAdapterActivity extends AppCompatActivity {
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
- Log.v(MapboxConstants.TAG, "TESTSSSSS");
viewHolder.flag.setImageResource(marker.getFlagRes());
viewHolder.abbrev.setText(marker.getAbbrevName());
return convertView;