From fba585feccb8849cb08d3e3ee25e94ebe60bd4e0 Mon Sep 17 00:00:00 2001 From: Marcel Pinto Biescas Date: Tue, 19 Sep 2017 10:21:11 +0200 Subject: [PATCH] Issue #9: Improve Factory method Only accept the position of the marker so the onCreateAnnotation is clearer and does not duplicate the work that should be done in onBindAnnotation. That simplifies the adapter and avoid possible duplication of work and resources. --- .../mapme/googlemaps/GoogleMapAnnotationFactory.kt | 5 ++--- .../mapme/googlemaps/GoogleMapMarkerAnnotation.kt | 4 +--- .../mapme/mapbox/MapboxAnnotationFactory.kt | 5 ++--- .../trademe/mapme/mapbox/MapboxMarkerAnnotation.kt | 5 +---- .../trademe/mapme/annotations/AnnotationFactory.kt | 3 +-- .../trademe/mapme/annotations/MarkerAnnotation.kt | 14 +++++--------- .../nz/co/trademe/mapme/util/TestAnnotation.kt | 5 ++++- .../co/trademe/mapme/util/TestAnnotationFactory.kt | 8 ++++++-- .../trademe/mapme/sample/SampleMapMeAdapter.java | 3 ++- 9 files changed, 24 insertions(+), 28 deletions(-) diff --git a/googlemaps/src/main/java/nz/co/trademe/mapme/googlemaps/GoogleMapAnnotationFactory.kt b/googlemaps/src/main/java/nz/co/trademe/mapme/googlemaps/GoogleMapAnnotationFactory.kt index c2718ce..7c6d2c5 100644 --- a/googlemaps/src/main/java/nz/co/trademe/mapme/googlemaps/GoogleMapAnnotationFactory.kt +++ b/googlemaps/src/main/java/nz/co/trademe/mapme/googlemaps/GoogleMapAnnotationFactory.kt @@ -1,6 +1,5 @@ package nz.co.trademe.mapme.googlemaps -import android.graphics.Bitmap import com.google.android.gms.maps.GoogleMap import nz.co.trademe.mapme.LatLng import nz.co.trademe.mapme.annotations.AnnotationFactory @@ -8,8 +7,8 @@ import nz.co.trademe.mapme.annotations.MarkerAnnotation class GoogleMapAnnotationFactory : AnnotationFactory { - override fun createMarker(latLng: LatLng, icon: Bitmap?, title: String?): MarkerAnnotation { - return GoogleMapMarkerAnnotation(latLng, title, icon) + override fun createMarker(latLng: LatLng): MarkerAnnotation { + return GoogleMapMarkerAnnotation(latLng) } override fun clear(map: GoogleMap) { diff --git a/googlemaps/src/main/java/nz/co/trademe/mapme/googlemaps/GoogleMapMarkerAnnotation.kt b/googlemaps/src/main/java/nz/co/trademe/mapme/googlemaps/GoogleMapMarkerAnnotation.kt index 779231e..d105d29 100644 --- a/googlemaps/src/main/java/nz/co/trademe/mapme/googlemaps/GoogleMapMarkerAnnotation.kt +++ b/googlemaps/src/main/java/nz/co/trademe/mapme/googlemaps/GoogleMapMarkerAnnotation.kt @@ -8,9 +8,7 @@ import com.google.android.gms.maps.model.MarkerOptions import nz.co.trademe.mapme.LatLng import nz.co.trademe.mapme.annotations.MarkerAnnotation -class GoogleMapMarkerAnnotation(latLng: LatLng, - title: String?, - icon: Bitmap? = null) : MarkerAnnotation(latLng, title, icon) { +class GoogleMapMarkerAnnotation(latLng: LatLng) : MarkerAnnotation(latLng) { override fun onUpdateIcon(icon: Bitmap?) { nativeMarker?.setIcon(icon?.toBitmapDescriptor()) diff --git a/mapbox/src/main/java/nz/co/trademe/mapme/mapbox/MapboxAnnotationFactory.kt b/mapbox/src/main/java/nz/co/trademe/mapme/mapbox/MapboxAnnotationFactory.kt index e1346bc..bc79a41 100644 --- a/mapbox/src/main/java/nz/co/trademe/mapme/mapbox/MapboxAnnotationFactory.kt +++ b/mapbox/src/main/java/nz/co/trademe/mapme/mapbox/MapboxAnnotationFactory.kt @@ -1,6 +1,5 @@ package nz.co.trademe.mapme.mapbox -import android.graphics.Bitmap import com.mapbox.mapboxsdk.maps.MapboxMap import nz.co.trademe.mapme.LatLng import nz.co.trademe.mapme.annotations.AnnotationFactory @@ -8,8 +7,8 @@ import nz.co.trademe.mapme.annotations.MarkerAnnotation class MapboxAnnotationFactory : AnnotationFactory { - override fun createMarker(latLng: LatLng, icon: Bitmap?, title: String?): MarkerAnnotation { - return MapboxMarkerAnnotation(latLng, title, icon) + override fun createMarker(latLng: LatLng): MarkerAnnotation { + return MapboxMarkerAnnotation(latLng) } override fun clear(map: MapboxMap) { diff --git a/mapbox/src/main/java/nz/co/trademe/mapme/mapbox/MapboxMarkerAnnotation.kt b/mapbox/src/main/java/nz/co/trademe/mapme/mapbox/MapboxMarkerAnnotation.kt index b7d59f0..d826e13 100644 --- a/mapbox/src/main/java/nz/co/trademe/mapme/mapbox/MapboxMarkerAnnotation.kt +++ b/mapbox/src/main/java/nz/co/trademe/mapme/mapbox/MapboxMarkerAnnotation.kt @@ -10,10 +10,7 @@ import com.mapbox.mapboxsdk.maps.MapboxMap import nz.co.trademe.mapme.LatLng import nz.co.trademe.mapme.annotations.MarkerAnnotation -class MapboxMarkerAnnotation(latLng: LatLng, - title: String?, - icon: Bitmap? = null) : MarkerAnnotation(latLng, title, icon) { - +class MapboxMarkerAnnotation(latLng: LatLng) : MarkerAnnotation(latLng) { override fun onUpdateIcon(icon: Bitmap?) { nativeMarker?.let { diff --git a/mapme/src/main/java/nz/co/trademe/mapme/annotations/AnnotationFactory.kt b/mapme/src/main/java/nz/co/trademe/mapme/annotations/AnnotationFactory.kt index e56669f..607ecc2 100644 --- a/mapme/src/main/java/nz/co/trademe/mapme/annotations/AnnotationFactory.kt +++ b/mapme/src/main/java/nz/co/trademe/mapme/annotations/AnnotationFactory.kt @@ -1,11 +1,10 @@ package nz.co.trademe.mapme.annotations -import android.graphics.Bitmap import nz.co.trademe.mapme.LatLng interface AnnotationFactory { - fun createMarker(latLng: LatLng, icon: Bitmap?, title: String?): MarkerAnnotation + fun createMarker(latLng: LatLng): MarkerAnnotation fun clear(map: Map) diff --git a/mapme/src/main/java/nz/co/trademe/mapme/annotations/MarkerAnnotation.kt b/mapme/src/main/java/nz/co/trademe/mapme/annotations/MarkerAnnotation.kt index 021832a..28b9d61 100644 --- a/mapme/src/main/java/nz/co/trademe/mapme/annotations/MarkerAnnotation.kt +++ b/mapme/src/main/java/nz/co/trademe/mapme/annotations/MarkerAnnotation.kt @@ -3,11 +3,7 @@ package nz.co.trademe.mapme.annotations import android.graphics.Bitmap import nz.co.trademe.mapme.LatLng -abstract class MarkerAnnotation(latLng: LatLng, - title: String? = null, - icon: Bitmap? = null, - zIndex: Float = 0f, - alpha: Float = 1f) : MapAnnotation() { +abstract class MarkerAnnotation(latLng: LatLng) : MapAnnotation() { var latLng: LatLng = latLng set(value) { @@ -15,25 +11,25 @@ abstract class MarkerAnnotation(latLng: LatLng, onUpdatePosition(value) } - var title: String? = title + var title: String? = null set(value) { field = value onUpdateTitle(value) } - var icon: Bitmap? = icon + var icon: Bitmap? = null set(value) { field = value onUpdateIcon(value) } - var zIndex: Float = zIndex + var zIndex: Float = 0f set(value) { field = value onUpdateZIndex(value) } - var alpha: Float = alpha + var alpha: Float = 1f set(value) { field = value onUpdateAlpha(value) diff --git a/mapme/src/test/java/nz/co/trademe/mapme/util/TestAnnotation.kt b/mapme/src/test/java/nz/co/trademe/mapme/util/TestAnnotation.kt index 4c5d2fb..70a5b5e 100644 --- a/mapme/src/test/java/nz/co/trademe/mapme/util/TestAnnotation.kt +++ b/mapme/src/test/java/nz/co/trademe/mapme/util/TestAnnotation.kt @@ -1,6 +1,9 @@ package nz.co.trademe.mapme.util -class TestAnnotation : nz.co.trademe.mapme.annotations.MarkerAnnotation(nz.co.trademe.mapme.LatLng(0.0, 0.0), "", null, 0f, 1f) { +import nz.co.trademe.mapme.LatLng +import nz.co.trademe.mapme.annotations.MarkerAnnotation + +class TestAnnotation : MarkerAnnotation(LatLng(0.0, 0.0)) { override fun annotatesObject(nativeObject: Any): Boolean { return false diff --git a/mapme/src/test/java/nz/co/trademe/mapme/util/TestAnnotationFactory.kt b/mapme/src/test/java/nz/co/trademe/mapme/util/TestAnnotationFactory.kt index 6ee02ea..ec5c9a1 100644 --- a/mapme/src/test/java/nz/co/trademe/mapme/util/TestAnnotationFactory.kt +++ b/mapme/src/test/java/nz/co/trademe/mapme/util/TestAnnotationFactory.kt @@ -1,8 +1,12 @@ package nz.co.trademe.mapme.util -class TestAnnotationFactory : nz.co.trademe.mapme.annotations.AnnotationFactory { +import nz.co.trademe.mapme.LatLng +import nz.co.trademe.mapme.annotations.AnnotationFactory +import nz.co.trademe.mapme.annotations.MarkerAnnotation - override fun createMarker(latLng: nz.co.trademe.mapme.LatLng, icon: android.graphics.Bitmap?, title: String?): nz.co.trademe.mapme.annotations.MarkerAnnotation { +class TestAnnotationFactory : AnnotationFactory { + + override fun createMarker(latLng: LatLng): MarkerAnnotation { return TestAnnotation() } diff --git a/sample/src/main/java/nz/co/trademe/mapme/sample/SampleMapMeAdapter.java b/sample/src/main/java/nz/co/trademe/mapme/sample/SampleMapMeAdapter.java index 23fd9e7..175a10b 100644 --- a/sample/src/main/java/nz/co/trademe/mapme/sample/SampleMapMeAdapter.java +++ b/sample/src/main/java/nz/co/trademe/mapme/sample/SampleMapMeAdapter.java @@ -29,7 +29,7 @@ public SampleMapMeAdapter(@NonNull Context context, @NonNull List ma @Override public MapAnnotation onCreateAnnotation(@NotNull AnnotationFactory mapFactory, int position, int viewType) { MarkerData item = this.markers.get(position); - return mapFactory.createMarker(item.getLatLng(), getIconBitmap(item), item.getTitle()); + return mapFactory.createMarker(item.getLatLng()); } @Override @@ -37,6 +37,7 @@ public void onBindAnnotation(@NotNull MapAnnotation annotation, int position, Ob if (annotation instanceof MarkerAnnotation) { MarkerData item = this.markers.get(position); ((MarkerAnnotation) annotation).setIcon(getIconBitmap(item)); + ((MarkerAnnotation) annotation).setTitle(item.getTitle()); } }