summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/BaseMarkerViewOptions.java14
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewOptions.java4
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java76
3 files changed, 74 insertions, 20 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 6212aade93..ab6504c636 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
@@ -3,15 +3,17 @@ package com.mapbox.mapboxsdk.annotations;
import android.graphics.Point;
import android.graphics.PointF;
import android.os.Parcelable;
+import android.support.annotation.AnimatorRes;
+import android.support.annotation.NonNull;
import com.mapbox.mapboxsdk.geometry.LatLng;
/**
- * Abstract builder class for composing custom Marker objects.
- *
+ * Abstract builder class for composing custom MarkerView objects.
+ * <p>
* Extending this class requires implementing Parceable interface.
*
- * @param <U> Type of the marker to be composed
+ * @param <U> Type of the marker view 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 {
@@ -31,7 +33,7 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base
infoWindowOffset = new Point();
}
- public T position(LatLng position) {
+ public T position(@NonNull LatLng position) {
this.position = position;
return getThis();
}
@@ -66,12 +68,12 @@ public abstract class BaseMarkerViewOptions<U extends MarkerView, T extends Base
return getThis();
}
- public T selectAnimRes(int selectAnimRes) {
+ public T selectAnimatorResource(@AnimatorRes int selectAnimRes) {
this.selectAnimRes = selectAnimRes;
return getThis();
}
- public T deselectAnimRes(int deselectAnimRes) {
+ public T deselectAnimatorResource(@AnimatorRes int deselectAnimRes) {
this.deselectAnimRes = deselectAnimRes;
return getThis();
}
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 f8aaf95bb2..437bba80da 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
@@ -24,8 +24,8 @@ public class MarkerViewOptions extends BaseMarkerViewOptions<MarkerView, MarkerV
flat(in.readByte() != 0);
centerOffset((PointF) in.readParcelable(PointF.class.getClassLoader()));
infoWindowOffset((Point) in.readParcelable(Point.class.getClassLoader()));
- selectAnimRes(in.readInt());
- deselectAnimRes(in.readInt());
+ selectAnimatorResource(in.readInt());
+ deselectAnimatorResource(in.readInt());
if (in.readByte() != 0) {
// this means we have an icon
String iconId = in.readString();
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 c04dbc0e32..da5d5b63b7 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
@@ -804,10 +804,8 @@ public class MapboxMap {
*/
@UiThread
@NonNull
- public Marker addMarker(@NonNull BaseMarkerViewOptions markerOptions) {
- Marker marker = markerOptions.getMarker();
- Icon icon = IconFactory.recreate("markerViewSettings", mViewMarkerBitmap);
- marker.setIcon(icon);
+ public Marker addMarkerView(@NonNull BaseMarkerViewOptions markerOptions) {
+ Marker marker = prepareViewMarker(markerOptions);
long id = mMapView.addMarker(marker);
marker.setMapboxMap(this);
marker.setId(id);
@@ -866,6 +864,58 @@ public class MapboxMap {
/**
* <p>
+ * Adds multiple markers 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 markerOptionsList A list of marker options objects that defines how to render the markers.
+ * @return A list of the {@code Marker}s that were added to the map.
+ */
+ @UiThread
+ @NonNull
+ public List<Marker> addMarkerViews(@NonNull List<? extends BaseMarkerViewOptions> markerOptionsList) {
+ int count = markerOptionsList.size();
+ List<Marker> markers = new ArrayList<>(count);
+ if (count > 0) {
+ BaseMarkerViewOptions markerOptions;
+ Marker marker;
+ for (int i = 0; i < count; i++) {
+ markerOptions = markerOptionsList.get(i);
+ marker = markerOptions.getMarker();
+ Icon icon = IconFactory.recreate("markerViewSettings", mViewMarkerBitmap);
+ marker.setIcon(icon);
+ markers.add(marker);
+ }
+
+ if (markers.size() > 0) {
+ long[] ids = mMapView.addMarkers(markers);
+
+ // if unittests or markers are correctly added to map
+ if (ids == null || ids.length == markers.size()) {
+ long id = 0;
+ Marker m;
+ for (int i = 0; i < markers.size(); i++) {
+ m = markers.get(i);
+ m.setMapboxMap(this);
+ if (ids != null) {
+ id = ids[i];
+ } else {
+ //unit test
+ id++;
+ }
+ m.setId(id);
+ mAnnotations.put(id, m);
+ }
+ }
+ }
+ }
+ invalidateViewMarkersInBounds();
+ return markers;
+ }
+
+ /**
+ * <p>
* Updates a marker on this map. Does nothing if the marker is already added.
* </p>
*
@@ -1352,20 +1402,22 @@ public class MapboxMap {
private Marker prepareMarker(BaseMarkerOptions markerOptions) {
Marker marker = markerOptions.getMarker();
- if (marker instanceof MarkerView) {
- Icon icon = IconFactory.recreate("markerViewSettings", mViewMarkerBitmap);
- marker.setIcon(icon);
- } else {
- Icon icon = mMapView.loadIconForMarker(marker);
- marker.setTopOffsetPixels(mMapView.getTopOffsetPixelsForIcon(icon));
- }
+ Icon icon = mMapView.loadIconForMarker(marker);
+ marker.setTopOffsetPixels(mMapView.getTopOffsetPixelsForIcon(icon));
+ return marker;
+ }
+
+ private Marker prepareViewMarker(BaseMarkerViewOptions markerViewOptions) {
+ Marker marker = markerViewOptions.getMarker();
+ Icon icon = IconFactory.recreate("markerViewSettings", mViewMarkerBitmap);
+ marker.setIcon(icon);
return marker;
}
public void addMarkerViewAdapter(@Nullable MarkerViewAdapter markerViewAdapter) {
if (!mMarkerViewAdapters.contains(markerViewAdapter)) {
mMarkerViewAdapters.add(markerViewAdapter);
- mMapView.invalidateViewMarkers();
+ invalidateViewMarkersInBounds();
}
}