summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2016-05-20 08:05:05 +0200
committerTobrun <tobrun@mapbox.com>2016-05-20 12:03:27 +0200
commit952875a30c104b779f3563a27b4caf1a7b674662 (patch)
treef22732b0c66f32057ec44e942b301c23a7513a9e
parente69aef83430c42e3f5be0f01aea1433627b8cc7c (diff)
downloadqtlocation-mapboxgl-952875a30c104b779f3563a27b4caf1a7b674662.tar.gz
[android] #3276 - View Marker model integration
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerOptions.java9
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerViewOptions.java119
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java18
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java35
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java78
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java142
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewSettings.java105
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java30
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java99
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java26
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/ViewMarkerAdapterActivity.java71
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/annotations/CountryMarkerView.java24
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/annotations/CountryMarkerViewOptions.java127
13 files changed, 644 insertions, 239 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerOptions.java
index 27bf8345e7..fc2022f9e1 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerOptions.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerOptions.java
@@ -18,7 +18,6 @@ public abstract class BaseMarkerOptions<U extends Marker, T extends BaseMarkerOp
protected String snippet;
protected String title;
protected Icon icon;
- protected boolean markerView;
public T position(LatLng position) {
this.position = position;
@@ -40,16 +39,8 @@ public abstract class BaseMarkerOptions<U extends Marker, T extends BaseMarkerOp
return getThis();
}
- public T markerView(boolean isMarkerView) {
- this.markerView = isMarkerView;
- return getThis();
- }
-
public abstract T getThis();
public abstract U getMarker();
- public boolean isViewMarker() {
- return markerView;
- }
}
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
new file mode 100644
index 0000000000..6212aade93
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerViewOptions.java
@@ -0,0 +1,119 @@
+package com.mapbox.mapboxsdk.annotations;
+
+import android.graphics.Point;
+import android.graphics.PointF;
+import android.os.Parcelable;
+
+import com.mapbox.mapboxsdk.geometry.LatLng;
+
+/**
+ * Abstract builder class for composing custom Marker objects.
+ *
+ * Extending this class requires implementing Parceable interface.
+ *
+ * @param <U> Type of the marker to be composed
+ * @param <T> Type of the builder to be used for composing a custom Marker
+ */
+public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends BaseMarkerViewOptions<U, T>> implements Parcelable {
+
+ protected LatLng position;
+ protected String snippet;
+ protected String title;
+ protected Icon icon;
+ protected boolean flat;
+ protected PointF centerOffset;
+ protected Point infoWindowOffset;
+ protected int selectAnimRes;
+ protected int deselectAnimRes;
+
+ public BaseMarkerViewOptions() {
+ centerOffset = new PointF();
+ infoWindowOffset = new Point();
+ }
+
+ public T position(LatLng position) {
+ this.position = position;
+ return getThis();
+ }
+
+ public T snippet(String snippet) {
+ this.snippet = snippet;
+ return getThis();
+ }
+
+ public T title(String title) {
+ this.title = title;
+ return getThis();
+ }
+
+ public T icon(Icon icon) {
+ this.icon = icon;
+ return getThis();
+ }
+
+ public T flat(boolean flat) {
+ this.flat = flat;
+ return getThis();
+ }
+
+ public T centerOffset(PointF centerOffset) {
+ this.centerOffset = centerOffset;
+ return getThis();
+ }
+
+ public T infoWindowOffset(Point infoWindowOffset) {
+ this.infoWindowOffset = infoWindowOffset;
+ return getThis();
+ }
+
+ public T selectAnimRes(int selectAnimRes) {
+ this.selectAnimRes = selectAnimRes;
+ return getThis();
+ }
+
+ public T deselectAnimRes(int deselectAnimRes) {
+ this.deselectAnimRes = deselectAnimRes;
+ return getThis();
+ }
+
+ 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 abstract T getThis();
+
+ public abstract U getMarker();
+
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java
index cd2cbe6645..dc83b6fc87 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Marker.java
@@ -28,8 +28,6 @@ public class Marker extends Annotation {
private int topOffsetPixels;
private int rightOffsetPixels;
- private boolean markerView;
-
/**
* Constructor
*/
@@ -42,7 +40,13 @@ public class Marker extends Annotation {
snippet = baseMarkerOptions.snippet;
icon = baseMarkerOptions.icon;
title = baseMarkerOptions.title;
- markerView = baseMarkerOptions.markerView;
+ }
+
+ Marker(BaseMarkerViewOptions baseMarkerViewOptions){
+ position = baseMarkerViewOptions.position;
+ snippet = baseMarkerViewOptions.snippet;
+ icon = baseMarkerViewOptions.icon;
+ title = baseMarkerViewOptions.title;
}
public LatLng getPosition() {
@@ -57,10 +61,6 @@ public class Marker extends Annotation {
return title;
}
- public boolean isViewMarker() {
- return markerView;
- }
-
/**
* Do not use this method. Used internally by the SDK.
*/
@@ -116,10 +116,6 @@ public class Marker extends Annotation {
this.title = title;
}
- void setMarkerView(boolean isMarkerView){
- markerView = isMarkerView;
- }
-
/**
* Do not use this method. Used internally by the SDK.
*/
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java
index a39bf4a4a4..7ca3687b0d 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerOptions.java
@@ -21,23 +21,17 @@ import com.mapbox.mapboxsdk.geometry.LatLng;
*/
public final class MarkerOptions extends BaseMarkerOptions<Marker, MarkerOptions> implements Parcelable {
- public static final Parcelable.Creator<MarkerOptions> CREATOR
- = new Parcelable.Creator<MarkerOptions>() {
- public MarkerOptions createFromParcel(Parcel in) {
- return new MarkerOptions(in);
- }
+ private Marker marker;
- public MarkerOptions[] newArray(int size) {
- return new MarkerOptions[size];
- }
- };
+ public MarkerOptions() {
+ marker = new Marker();
+ }
- private MarkerOptions(Parcel in) {
+ protected MarkerOptions(Parcel in) {
marker = new Marker();
position((LatLng) in.readParcelable(LatLng.class.getClassLoader()));
snippet(in.readString());
title(in.readString());
- markerView(in.readByte() != 0);
if (in.readByte() != 0) {
// this means we have an icon
String iconId = in.readString();
@@ -63,7 +57,6 @@ public final class MarkerOptions extends BaseMarkerOptions<Marker, MarkerOptions
out.writeString(getSnippet());
out.writeString(getTitle());
Icon icon = getIcon();
- out.writeByte((byte) (markerView ? 1 : 0));
out.writeByte((byte) (icon != null ? 1 : 0));
if (icon != null) {
out.writeString(getIcon().getId());
@@ -71,12 +64,6 @@ public final class MarkerOptions extends BaseMarkerOptions<Marker, MarkerOptions
}
}
- private Marker marker;
-
- public MarkerOptions() {
- marker = new Marker();
- }
-
/**
* Do not use this method. Used internally by the SDK.
*
@@ -87,7 +74,6 @@ public final class MarkerOptions extends BaseMarkerOptions<Marker, MarkerOptions
marker.setSnippet(snippet);
marker.setTitle(title);
marker.setIcon(icon);
- marker.setMarkerView(markerView);
return marker;
}
@@ -107,6 +93,17 @@ public final class MarkerOptions extends BaseMarkerOptions<Marker, MarkerOptions
return icon;
}
+ public static final Parcelable.Creator<MarkerOptions> CREATOR
+ = new Parcelable.Creator<MarkerOptions>() {
+ public MarkerOptions createFromParcel(Parcel in) {
+ return new MarkerOptions(in);
+ }
+
+ public MarkerOptions[] newArray(int size) {
+ return new MarkerOptions[size];
+ }
+ };
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
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
new file mode 100644
index 0000000000..f8c36ee14b
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java
@@ -0,0 +1,78 @@
+package com.mapbox.mapboxsdk.annotations;
+
+import android.graphics.Point;
+import android.graphics.PointF;
+
+public class MarkerView extends Marker {
+
+ private PointF centerOffset;
+ private Point infoWindowOffset;
+ private boolean flat;
+
+ private int selectAnimRes;
+ private int deselectAnimRes;
+
+ private float tiltValue;
+
+ MarkerView(){
+ centerOffset = new PointF();
+ infoWindowOffset = new Point();
+ }
+
+ public MarkerView(BaseMarkerViewOptions baseMarkerViewOptions) {
+ super(baseMarkerViewOptions);
+ this.centerOffset = baseMarkerViewOptions.getCenterOffset();
+ this.infoWindowOffset = baseMarkerViewOptions.getInfoWindowOffset();
+ this.flat = baseMarkerViewOptions.isFlat();
+ this.selectAnimRes = baseMarkerViewOptions.getSelectAnimRes();
+ this.deselectAnimRes = baseMarkerViewOptions.getDeselectAnimRes();
+ }
+
+ public PointF getCenterOffset() {
+ return centerOffset;
+ }
+
+ public void setCenterOffset(PointF centerOffset) {
+ this.centerOffset = centerOffset;
+ }
+
+ public Point getInfoWindowOffset() {
+ return infoWindowOffset;
+ }
+
+ public void setInfoWindowOffset(Point infoWindowOffset) {
+ this.infoWindowOffset = infoWindowOffset;
+ }
+
+ public boolean isFlat() {
+ return flat;
+ }
+
+ public void setFlat(boolean flat) {
+ this.flat = flat;
+ }
+
+ public int getSelectAnimRes() {
+ return selectAnimRes;
+ }
+
+ public void setSelectAnimRes(int selectAnimRes) {
+ this.selectAnimRes = selectAnimRes;
+ }
+
+ public int getDeselectAnimRes() {
+ return deselectAnimRes;
+ }
+
+ public void setDeselectAnimRes(int deselectAnimRes) {
+ this.deselectAnimRes = deselectAnimRes;
+ }
+
+ public float getTiltValue() {
+ return tiltValue;
+ }
+
+ public void setTiltValue(float tiltValue) {
+ this.tiltValue = tiltValue;
+ }
+}
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
new file mode 100644
index 0000000000..f8aaf95bb2
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java
@@ -0,0 +1,142 @@
+package com.mapbox.mapboxsdk.annotations;
+
+import android.graphics.Bitmap;
+import android.graphics.Point;
+import android.graphics.PointF;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.mapbox.mapboxsdk.geometry.LatLng;
+
+public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerViewOptions> {
+
+ private MarkerView marker;
+
+ public MarkerViewOptions() {
+ marker = new MarkerView();
+ }
+
+ protected MarkerViewOptions(Parcel in) {
+ marker = new MarkerView();
+ position((LatLng) in.readParcelable(LatLng.class.getClassLoader()));
+ snippet(in.readString());
+ title(in.readString());
+ flat(in.readByte() != 0);
+ centerOffset((PointF) in.readParcelable(PointF.class.getClassLoader()));
+ infoWindowOffset((Point) in.readParcelable(Point.class.getClassLoader()));
+ selectAnimRes(in.readInt());
+ deselectAnimRes(in.readInt());
+ if (in.readByte() != 0) {
+ // this means we have an icon
+ String iconId = in.readString();
+ Bitmap iconBitmap = in.readParcelable(Bitmap.class.getClassLoader());
+ Icon icon = new Icon(iconId, iconBitmap);
+ icon(icon);
+ }
+ }
+
+ @Override
+ public MarkerViewOptions getThis() {
+ return this;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeParcelable(getPosition(), flags);
+ out.writeString(getSnippet());
+ out.writeString(getTitle());
+ out.writeByte((byte) (isFlat() ? 1 : 0));
+ out.writeParcelable(getCenterOffset(),flags);
+ out.writeParcelable(getInfoWindowOffset(),flags);
+ out.writeInt(getSelectAnimRes());
+ out.writeInt(getDeselectAnimRes());
+ Icon icon = getIcon();
+ out.writeByte((byte) (icon != null ? 1 : 0));
+ if (icon != null) {
+ out.writeString(getIcon().getId());
+ out.writeParcelable(getIcon().getBitmap(), flags);
+ }
+ }
+
+ @Override
+ public MarkerView getMarker() {
+ marker.setPosition(position);
+ marker.setSnippet(snippet);
+ marker.setTitle(title);
+ marker.setIcon(icon);
+ marker.setFlat(flat);
+ marker.setCenterOffset(centerOffset);
+ marker.setInfoWindowOffset(infoWindowOffset);
+ marker.setSelectAnimRes(selectAnimRes);
+ marker.setDeselectAnimRes(deselectAnimRes);
+ 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) {
+ return new MarkerViewOptions(in);
+ }
+
+ public MarkerViewOptions[] newArray(int size) {
+ return new MarkerViewOptions[size];
+ }
+ };
+
+ @Override
+ 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
+ public int hashCode() {
+ return marker != null ? marker.hashCode() : 0;
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewSettings.java
deleted file mode 100644
index cc2b0d0ccb..0000000000
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewSettings.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package com.mapbox.mapboxsdk.annotations;
-
-import android.graphics.Point;
-import android.graphics.PointF;
-import android.support.annotation.AnimatorRes;
-import android.support.annotation.NonNull;
-
-public class MarkerViewSettings {
-
- private PointF centerOffset;
- private Point infoWindowOffset;
- private boolean flat;
-
- private int selectAnimRes;
- private int deselectAnimRes;
-
- private float tiltValue;
-
- MarkerViewSettings(PointF centerOffset, Point infoWindowOffset, boolean flat, int selectAnimRes, int deselectAnimRes) {
- this.centerOffset = centerOffset;
- this.infoWindowOffset = infoWindowOffset;
- this.flat = flat;
- this.selectAnimRes = selectAnimRes;
- this.deselectAnimRes = deselectAnimRes;
- }
-
- @NonNull
- public PointF getCenterOffset() {
- return centerOffset;
- }
-
- @NonNull
- public Point getInfoWindowOffset() {
- return infoWindowOffset;
- }
-
- @AnimatorRes
- public int getSelectAnimRes() {
- return selectAnimRes;
- }
-
- @AnimatorRes
- public int getDeselectAnimRes() {
- return deselectAnimRes;
- }
-
- public boolean isFlat() {
- return flat;
- }
-
- public void setTiltValue(float tilt) {
- tiltValue = tilt;
- }
-
- public float getTiltValue() {
- return tiltValue;
- }
-
- /**
- * Builder for composing LatLngBounds objects.
- */
- public static final class Builder {
-
- private PointF centerOffset;
- private Point infoWindowOffset;
- private boolean flat;
-
- private int animSelectRes;
- private int animDeselectRes;
-
- public Builder() {
- centerOffset = new PointF();
- infoWindowOffset = new Point();
- }
-
- public Builder centerOffset(float dx, float dy) {
- centerOffset.offset(dx, dy);
- return this;
- }
-
- public Builder infoWindowOffset(int dx, int dy) {
- infoWindowOffset.offset(dx, -dy);
- return this;
- }
-
- public Builder flat(boolean isFlat) {
- flat = isFlat;
- return this;
- }
-
- public Builder animSelectRes(@AnimatorRes int animatorRes) {
- animSelectRes = animatorRes;
- return this;
- }
-
- public Builder animDeselectRes(@AnimatorRes int animatorRes) {
- animDeselectRes = animatorRes;
- return this;
- }
-
- public MarkerViewSettings build() {
- return new MarkerViewSettings(centerOffset, infoWindowOffset, flat, animSelectRes, animDeselectRes);
- }
- }
-}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
index 593f68814a..f2ad66b18c 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
@@ -69,6 +69,7 @@ import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.IconFactory;
import com.mapbox.mapboxsdk.annotations.InfoWindow;
import com.mapbox.mapboxsdk.annotations.Marker;
+import com.mapbox.mapboxsdk.annotations.MarkerView;
import com.mapbox.mapboxsdk.annotations.Polygon;
import com.mapbox.mapboxsdk.annotations.Polyline;
import com.mapbox.mapboxsdk.camera.CameraPosition;
@@ -1109,6 +1110,33 @@ public class MapView extends FrameLayout {
return new ArrayList<>(annotations);
}
+ List<MarkerView> getMarkerViewsInBounds(@NonNull LatLngBounds bbox) {
+ if (mDestroyed || bbox == null) {
+ return new ArrayList<>();
+ }
+
+ // TODO: filter in JNI using C++ parameter to getAnnotationsInBounds
+ long[] ids = mNativeMapView.getAnnotationsInBounds(bbox);
+
+ List<Long> idsList = new ArrayList<>(ids.length);
+ for (int i = 0; i < ids.length; i++) {
+ idsList.add(ids[i]);
+ }
+
+ List<MarkerView> annotations = new ArrayList<>(ids.length);
+ List<Annotation> annotationList = mMapboxMap.getAnnotations();
+ int count = annotationList.size();
+ for (int i = 0; i < count; i++) {
+ Annotation annotation = annotationList.get(i);
+ if (annotation instanceof MarkerView && idsList.contains(annotation.getId())) {
+ annotations.add((MarkerView) annotation);
+ }
+ }
+
+ return new ArrayList<>(annotations);
+ }
+
+
int getTopOffsetPixelsForIcon(Icon icon) {
if (mDestroyed) {
return 0;
@@ -1350,7 +1378,7 @@ public class MapView extends FrameLayout {
mCompassView.update(getDirection());
mMyLocationView.update();
- Map<Marker, View> viewMarkers = mMapboxMap.getMarkerViewMap();
+ Map<MarkerView, View> viewMarkers = mMapboxMap.getMarkerViewMap();
for (Marker marker : viewMarkers.keySet()) {
mViewHolder = viewMarkers.get(marker);
if (mViewHolder != null) {
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 ca3fdc21a0..75b0a88084 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
@@ -4,7 +4,6 @@ import android.content.Context;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorListenerAdapter;
-import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.location.Location;
@@ -26,12 +25,13 @@ import android.view.ViewGroup;
import com.mapbox.mapboxsdk.annotations.Annotation;
import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions;
+import com.mapbox.mapboxsdk.annotations.BaseMarkerViewOptions;
import com.mapbox.mapboxsdk.annotations.Icon;
import com.mapbox.mapboxsdk.annotations.IconFactory;
import com.mapbox.mapboxsdk.annotations.InfoWindow;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
-import com.mapbox.mapboxsdk.annotations.MarkerViewSettings;
+import com.mapbox.mapboxsdk.annotations.MarkerView;
import com.mapbox.mapboxsdk.annotations.Polygon;
import com.mapbox.mapboxsdk.annotations.PolygonOptions;
import com.mapbox.mapboxsdk.annotations.Polyline;
@@ -77,8 +77,7 @@ public class MapboxMap {
private LongSparseArray<Annotation> mAnnotations;
private List<Marker> mSelectedMarkers;
- private Map<Marker, View> mMarkerViewMap;
- private LongSparseArray<MarkerViewSettings> mMarkerViewSettingsMap;
+ private Map<MarkerView, View> mMarkerViewMap;
private List<InfoWindow> mInfoWindows;
private MapboxMap.InfoWindowAdapter mInfoWindowAdapter;
@@ -118,7 +117,6 @@ public class MapboxMap {
mSelectedMarkers = new ArrayList<>();
mInfoWindows = new ArrayList<>();
mMarkerViewMap = new HashMap<>();
- mMarkerViewSettingsMap = new LongSparseArray<>();
}
//
@@ -619,6 +617,7 @@ public class MapboxMap {
* <p>
* Sets the current Mapbox access token used to load map styles and tiles.
* </p>
+ *
* @param accessToken Your public Mapbox access token.
* @see MapView#setAccessToken(String)
* @deprecated As of release 4.1.0, replaced by {@link com.mapbox.mapboxsdk.MapboxAccountManager#start(Context, String)}
@@ -652,18 +651,17 @@ public class MapboxMap {
//
void invalidateViewMarkersInBounds() {
- List<Marker> markers = mMapView.getMarkersInBounds(mProjection.getVisibleRegion().latLngBounds);
+ List<MarkerView> markers = mMapView.getMarkerViewsInBounds(mProjection.getVisibleRegion().latLngBounds);
View convertView;
// remove old markers
- Iterator<Marker> iterator = mMarkerViewMap.keySet().iterator();
+ Iterator<MarkerView> iterator = mMarkerViewMap.keySet().iterator();
while (iterator.hasNext()) {
- Marker m = iterator.next();
+ MarkerView m = iterator.next();
if (!markers.contains(m)) {
// remove marker
convertView = mMarkerViewMap.get(m);
- MarkerViewSettings settings = mMarkerViewSettingsMap.get(m.getId());
- int deselectAnimRes = settings.getDeselectAnimRes();
+ int deselectAnimRes = m.getDeselectAnimRes();
if (deselectAnimRes != 0) {
Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), deselectAnimRes);
animator.setDuration(0);
@@ -676,34 +674,27 @@ public class MapboxMap {
}
// introduce new markers
- for (final Marker marker : markers) {
- if (marker.isViewMarker() && !mMarkerViewMap.containsKey(marker)) {
+ for (final MarkerView marker : markers) {
+ if (!mMarkerViewMap.containsKey(marker)) {
for (final MarkerViewAdapter adapter : mMarkerViewAdapters) {
if (adapter.getMarkerClass() == marker.getClass()) {
-
- MarkerViewSettings settings = mMarkerViewSettingsMap.get(marker.getId());
- if (settings == null) {
- settings = adapter.getMarkerViewSettings(marker);
- mMarkerViewSettingsMap.put(marker.getId(), settings);
- }
-
convertView = (View) adapter.getViewReusePool().acquire();
View adaptedView = adapter.getView(marker, convertView, mMapView);
- // infowindow offset
- Point infoWindowOffset = settings.getInfoWindowOffset();
- marker.setTopOffsetPixels(infoWindowOffset.y);
+ // InfoWindow offset
+ Point infoWindowOffset = marker.getInfoWindowOffset();
+ marker.setTopOffsetPixels(-infoWindowOffset.y);
marker.setRightOffsetPixels(infoWindowOffset.x);
if (adaptedView != null) {
// tilt
- adaptedView.setRotationX(settings.getTiltValue());
+ adaptedView.setRotationX(marker.getTiltValue());
if (mSelectedMarkers.contains(marker)) {
// if a marker to be shown was selected
// replay that animation with duration 0
- int selectAnimRes = settings.getSelectAnimRes();
+ int selectAnimRes = marker.getSelectAnimRes();
if (selectAnimRes != 0) {
Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), selectAnimRes);
animator.setDuration(0);
@@ -712,7 +703,7 @@ public class MapboxMap {
}
}
- final int animSelectRes = settings.getSelectAnimRes();
+ final int animSelectRes = marker.getSelectAnimRes();
adaptedView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -752,11 +743,10 @@ public class MapboxMap {
}
void setTilt(double tilt) {
- for (Map.Entry<Marker, View> entry : mMarkerViewMap.entrySet()) {
- MarkerViewSettings settings = mMarkerViewSettingsMap.get(entry.getKey().getId());
- if (settings.isFlat()) {
- settings.setTiltValue((float) tilt);
- entry.getValue().setRotationX((float) tilt);
+ for (MarkerView markerView : mMarkerViewMap.keySet()) {
+ if (markerView.isFlat()) {
+ markerView.setTiltValue((float) tilt);
+ mMarkerViewMap.get(markerView).setRotationX((float) tilt);
}
}
mMapView.setTilt(tilt);
@@ -802,6 +792,29 @@ public class MapboxMap {
/**
* <p>
+ * Adds a marker to this map.
+ * </p>
+ * The marker's icon is rendered on the map at the location {@code Marker.position}.
+ * If {@code Marker.title} is defined, the map shows an info box with the marker's title and snippet.
+ *
+ * @param markerOptions A marker options object that defines how to render the marker.
+ * @return The {@code Marker} that was added to the map.
+ */
+ @UiThread
+ @NonNull
+ public Marker addMarker(@NonNull BaseMarkerViewOptions markerOptions) {
+ Marker marker = markerOptions.getMarker();
+ Icon icon = IconFactory.recreate("markerViewSettings", mViewMarkerBitmap);
+ marker.setIcon(icon);
+ long id = mMapView.addMarker(marker);
+ marker.setMapboxMap(this);
+ marker.setId(id);
+ mAnnotations.put(id, marker);
+ return marker;
+ }
+
+ /**
+ * <p>
* Adds multiple markers to this map.
* </p>
* The marker's icon is rendered on the map at the location {@code Marker.position}.
@@ -1284,13 +1297,15 @@ public class MapboxMap {
marker.hideInfoWindow();
}
- View viewMarker = mMarkerViewMap.get(marker);
- if (viewMarker != null) {
- int deselectAnimatorRes = mMarkerViewSettingsMap.get(marker.getId()).getDeselectAnimRes();
- if (deselectAnimatorRes != 0) {
- Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), deselectAnimatorRes);
- animator.setTarget(viewMarker);
- animator.start();
+ if (marker instanceof MarkerView) {
+ View viewMarker = mMarkerViewMap.get(marker);
+ if (viewMarker != null) {
+ int deselectAnimatorRes = ((MarkerView) marker).getDeselectAnimRes();
+ if (deselectAnimatorRes != 0) {
+ Animator animator = AnimatorInflater.loadAnimator(mMapView.getContext(), deselectAnimatorRes);
+ animator.setTarget(viewMarker);
+ animator.start();
+ }
}
}
}
@@ -1327,7 +1342,7 @@ public class MapboxMap {
private Marker prepareMarker(BaseMarkerOptions markerOptions) {
Marker marker = markerOptions.getMarker();
- if (markerOptions.isViewMarker()) {
+ if (marker instanceof MarkerView) {
Icon icon = IconFactory.recreate("markerViewSettings", mViewMarkerBitmap);
marker.setIcon(icon);
} else {
@@ -1407,7 +1422,7 @@ public class MapboxMap {
return mInfoWindows;
}
- Map<Marker, View> getMarkerViewMap() {
+ Map<MarkerView, View> getMarkerViewMap() {
return mMarkerViewMap;
}
@@ -1939,7 +1954,7 @@ public class MapboxMap {
View getInfoWindow(@NonNull Marker marker);
}
- public static abstract class MarkerViewAdapter<U extends Marker> {
+ public static abstract class MarkerViewAdapter<U extends MarkerView> {
private Context context;
private final Class<U> persistentClass;
@@ -1966,10 +1981,6 @@ public class MapboxMap {
public Context getContext() {
return context;
}
-
- public MarkerViewSettings getMarkerViewSettings(Marker marker) {
- return new MarkerViewSettings.Builder().build();
- }
}
public interface OnMarkerViewClickListener {
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java
index c6b50a2e09..0818f3184f 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java
@@ -23,7 +23,8 @@ import android.widget.Toast;
import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
-import com.mapbox.mapboxsdk.annotations.MarkerViewSettings;
+import com.mapbox.mapboxsdk.annotations.MarkerView;
+import com.mapbox.mapboxsdk.annotations.MarkerViewOptions;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
@@ -82,7 +83,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView
}
}
- public static class TextAdapter extends MapboxMap.MarkerViewAdapter<Marker> {
+ public static class TextAdapter extends MapboxMap.MarkerViewAdapter<MarkerView> {
private LayoutInflater inflater;
@@ -93,7 +94,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView
@Nullable
@Override
- public View getView(@NonNull Marker marker, @Nullable View convertView, @NonNull ViewGroup parent) {
+ public View getView(@NonNull MarkerView marker, @Nullable View convertView, @NonNull ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
@@ -168,7 +169,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView
}
}
- private class FabClickListener implements View.OnClickListener{
+ private class FabClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
if (mMapboxMap != null) {
@@ -238,11 +239,18 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView
LatLng location;
for (int i = 0; i < mAmount; i++) {
location = locations.get(i);
- markerOptions.add(new MarkerOptions()
- .position(location)
- .markerView(mMarkerView)
- .title(String.valueOf(i))
- .snippet(formatter.format(location.getLatitude()) + ", " + formatter.format(location.getLongitude())));
+
+ if (mMarkerView) {
+// markerOptions.add(new MarkerViewOptions()
+// .position(location)
+// .title(String.valueOf(i))
+// .snippet(formatter.format(location.getLatitude()) + ", " + formatter.format(location.getLongitude())));
+ } else {
+ markerOptions.add(new MarkerOptions()
+ .position(location)
+ .title(String.valueOf(i))
+ .snippet(formatter.format(location.getLatitude()) + ", " + formatter.format(location.getLongitude())));
+ }
}
} catch (IOException | JSONException e) {
Log.e(TAG, "Could not add markers,", e);
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 ef04b7abf3..0dcc638191 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
@@ -1,12 +1,14 @@
package com.mapbox.mapboxsdk.testapp.activity.annotation;
import android.content.Context;
+import android.graphics.Point;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@@ -17,7 +19,9 @@ import android.widget.Toast;
import com.mapbox.mapboxsdk.annotations.Marker;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
-import com.mapbox.mapboxsdk.annotations.MarkerViewSettings;
+import com.mapbox.mapboxsdk.annotations.MarkerView;
+import com.mapbox.mapboxsdk.annotations.MarkerViewOptions;
+import com.mapbox.mapboxsdk.constants.MapboxConstants;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
@@ -25,6 +29,8 @@ import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.testapp.R;
import com.mapbox.mapboxsdk.testapp.model.annotations.CountryMarker;
import com.mapbox.mapboxsdk.testapp.model.annotations.CountryMarkerOptions;
+import com.mapbox.mapboxsdk.testapp.model.annotations.CountryMarkerView;
+import com.mapbox.mapboxsdk.testapp.model.annotations.CountryMarkerViewOptions;
public class ViewMarkerAdapterActivity extends AppCompatActivity {
@@ -66,20 +72,27 @@ public class ViewMarkerAdapterActivity extends AppCompatActivity {
// add text markers
for (int i = 0; i < LAT_LNGS.length; i++) {
- mMapboxMap.addMarker(new MarkerOptions()
+ mMapboxMap.addMarker(new MarkerViewOptions()
.position(LAT_LNGS[i])
- .markerView(true)
- .title(String.valueOf(i)));
+ .title(String.valueOf(i))
+ .infoWindowOffset(new Point(0,32))
+ .selectAnimRes(R.animator.scale_up)
+ .deselectAnimRes(R.animator.scale_down)
+ );
}
// add flag marker
- mMapboxMap.addMarker(new CountryMarkerOptions()
- .markerView(true)
- .title("United States")
- .abbrevName("us")
- .flagRes(R.drawable.ic_us)
- .position(new LatLng(38.899774, -77.023237))
- );
+ CountryMarkerViewOptions options = new CountryMarkerViewOptions();
+ options.title("United States");
+ options.abbrevName("us");
+ options.flagRes(R.drawable.ic_us);
+ options.position(new LatLng(38.899774, -77.023237));
+ options.selectAnimRes(R.animator.rotate_360);
+ options.deselectAnimRes(R.animator.rotate_360);
+ options.infoWindowOffset(new Point(0, 64));
+ options.flat(true);
+
+ mapboxMap.addMarker(options);
// default GL marker
mMapboxMap.addMarker(new CountryMarkerOptions()
@@ -113,7 +126,7 @@ public class ViewMarkerAdapterActivity extends AppCompatActivity {
});
}
- private static class TextAdapter extends MapboxMap.MarkerViewAdapter<Marker> {
+ private static class TextAdapter extends MapboxMap.MarkerViewAdapter<MarkerView> {
private LayoutInflater inflater;
@@ -124,7 +137,7 @@ public class ViewMarkerAdapterActivity extends AppCompatActivity {
@Nullable
@Override
- public View getView(@NonNull Marker marker, @Nullable View convertView, @NonNull ViewGroup parent) {
+ public View getView(@NonNull MarkerView marker, @Nullable View convertView, @NonNull ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
@@ -134,31 +147,17 @@ public class ViewMarkerAdapterActivity extends AppCompatActivity {
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
+ Log.v(MapboxConstants.TAG,"SSSSST");
viewHolder.title.setText(marker.getTitle());
return convertView;
}
- @Override
- public MarkerViewSettings getMarkerViewSettings(Marker marker) {
- MarkerViewSettings.Builder builder = new MarkerViewSettings.Builder()
- .animSelectRes(R.animator.scale_up)
- .animDeselectRes(R.animator.scale_down)
- .infoWindowOffset(0, (int) getContext().getResources()
- .getDimension(R.dimen.coordinatebounds_margin));
-
- if (marker.getId() == 0) {
- builder.flat(true);
- }
-
- return builder.build();
- }
-
private static class ViewHolder {
TextView title;
}
}
- private static class CountryAdapter extends MapboxMap.MarkerViewAdapter<CountryMarker> {
+ private static class CountryAdapter extends MapboxMap.MarkerViewAdapter<CountryMarkerView> {
private LayoutInflater inflater;
@@ -169,7 +168,7 @@ public class ViewMarkerAdapterActivity extends AppCompatActivity {
@Nullable
@Override
- public View getView(@NonNull CountryMarker marker, @Nullable View convertView, @NonNull ViewGroup parent) {
+ public View getView(@NonNull CountryMarkerView marker, @Nullable View convertView, @NonNull ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
@@ -180,22 +179,12 @@ 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;
}
- @Override
- public MarkerViewSettings getMarkerViewSettings(Marker marker) {
- return new MarkerViewSettings.Builder()
- .animSelectRes(R.animator.rotate_360)
- .animDeselectRes(R.animator.rotate_360)
- .infoWindowOffset(0, (int) getContext().getResources()
- .getDimension(R.dimen.fab_margin))
- .flat(true)
- .build();
- }
-
private static class ViewHolder {
ImageView flag;
TextView abbrev;
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/annotations/CountryMarkerView.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/annotations/CountryMarkerView.java
new file mode 100644
index 0000000000..64f0565026
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/annotations/CountryMarkerView.java
@@ -0,0 +1,24 @@
+package com.mapbox.mapboxsdk.testapp.model.annotations;
+
+import com.mapbox.mapboxsdk.annotations.BaseMarkerViewOptions;
+import com.mapbox.mapboxsdk.annotations.MarkerView;
+
+public class CountryMarkerView extends MarkerView {
+
+ private String abbrevName;
+ private int flagRes;
+
+ public CountryMarkerView(BaseMarkerViewOptions baseMarkerViewOptions, String abbrevName, int flagRes) {
+ super(baseMarkerViewOptions);
+ this.abbrevName = abbrevName;
+ this.flagRes = flagRes;
+ }
+
+ public String getAbbrevName() {
+ return abbrevName;
+ }
+
+ public int getFlagRes() {
+ return flagRes;
+ }
+}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/annotations/CountryMarkerViewOptions.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/annotations/CountryMarkerViewOptions.java
new file mode 100644
index 0000000000..c61c874720
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/model/annotations/CountryMarkerViewOptions.java
@@ -0,0 +1,127 @@
+package com.mapbox.mapboxsdk.testapp.model.annotations;
+
+import android.graphics.Bitmap;
+import android.graphics.Point;
+import android.graphics.PointF;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.mapbox.mapboxsdk.annotations.BaseMarkerViewOptions;
+import com.mapbox.mapboxsdk.annotations.Icon;
+import com.mapbox.mapboxsdk.annotations.IconFactory;
+import com.mapbox.mapboxsdk.geometry.LatLng;
+
+public class CountryMarkerViewOptions extends BaseMarkerViewOptions<CountryMarkerView, CountryMarkerViewOptions> {
+
+ private String abbrevName;
+ private int flagRes;
+
+ public CountryMarkerViewOptions() {
+ }
+
+ protected CountryMarkerViewOptions(Parcel in) {
+ position((LatLng) in.readParcelable(LatLng.class.getClassLoader()));
+ snippet(in.readString());
+ title(in.readString());
+ flat(in.readByte() != 0);
+ centerOffset((PointF) in.readParcelable(PointF.class.getClassLoader()));
+ infoWindowOffset((Point) in.readParcelable(Point.class.getClassLoader()));
+ selectAnimRes(in.readInt());
+ deselectAnimRes(in.readInt());
+ if (in.readByte() != 0) {
+ // this means we have an icon
+ String iconId = in.readString();
+ Bitmap iconBitmap = in.readParcelable(Bitmap.class.getClassLoader());
+ Icon icon = IconFactory.recreate(iconId, iconBitmap);
+ icon(icon);
+ }
+ }
+
+ @Override
+ public CountryMarkerViewOptions getThis() {
+ return this;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeParcelable(getPosition(), flags);
+ out.writeString(getSnippet());
+ out.writeString(getTitle());
+ out.writeByte((byte) (isFlat() ? 1 : 0));
+ out.writeParcelable(getCenterOffset(), flags);
+ out.writeParcelable(getInfoWindowOffset(), flags);
+ out.writeInt(getSelectAnimRes());
+ out.writeInt(getDeselectAnimRes());
+ Icon icon = getIcon();
+ out.writeByte((byte) (icon != null ? 1 : 0));
+ if (icon != null) {
+ out.writeString(getIcon().getId());
+ out.writeParcelable(getIcon().getBitmap(), flags);
+ }
+ }
+
+ @Override
+ public CountryMarkerView getMarker() {
+ return new CountryMarkerView(this, abbrevName, flagRes);
+ }
+
+ public CountryMarkerViewOptions abbrevName(String abbrevName) {
+ this.abbrevName = abbrevName;
+ return getThis();
+ }
+
+ public CountryMarkerViewOptions flagRes(int flagRes) {
+ this.flagRes = flagRes;
+ return getThis();
+ }
+
+ public LatLng getPosition() {
+ return position;
+ }
+
+ public String getSnippet() {
+ return snippet;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ 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<CountryMarkerViewOptions> CREATOR
+ = new Parcelable.Creator<CountryMarkerViewOptions>() {
+ public CountryMarkerViewOptions createFromParcel(Parcel in) {
+ return new CountryMarkerViewOptions(in);
+ }
+
+ public CountryMarkerViewOptions[] newArray(int size) {
+ return new CountryMarkerViewOptions[size];
+ }
+ };
+
+
+} \ No newline at end of file