diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2017-12-21 16:52:10 +0100 |
---|---|---|
committer | Łukasz Paczos <lukas.paczos@gmail.com> | 2017-12-21 16:52:10 +0100 |
commit | 2c60af6bafc4c401bcba73b5248bca3d700a097d (patch) | |
tree | 49925742fe802859bada93264d5bbcd6a17b4a5a /platform/android/MapboxGLAndroidSDK/src/main/java/com | |
parent | 2e7145c1bdb98761208dda05254e081f7ae6ce26 (diff) | |
download | qtlocation-mapboxgl-2c60af6bafc4c401bcba73b5248bca3d700a097d.tar.gz |
[android] [WIP] showing symbol layer as info window
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com')
3 files changed, 18 insertions, 7 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java index 77f27a4fb1..65ac3f094a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java @@ -83,7 +83,6 @@ class AnnotationManager { AnnotationManager bind(MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; this.markerViewManager.bind(mapboxMap); - this.infoWindowManager.bind(mapboxMap); return this; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java index c2b2c3e54f..1fae772875 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java @@ -11,7 +11,7 @@ import com.mapbox.mapboxsdk.R; import com.mapbox.mapboxsdk.annotations.InfoWindow; import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.style.layers.Filter; -import com.mapbox.mapboxsdk.style.layers.PropertyFactory; +import com.mapbox.mapboxsdk.style.layers.Property; import com.mapbox.mapboxsdk.style.layers.SymbolLayer; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; import com.mapbox.mapboxsdk.utils.BitmapUtils; @@ -23,6 +23,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconAnchor; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconImage; +import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconOffset; + /** * Responsible for managing InfoWindows shown on the Map. * <p> @@ -55,17 +59,21 @@ class InfoWindowManager { private MapboxMap.OnInfoWindowLongClickListener onInfoWindowLongClickListener; private MapboxMap.OnInfoWindowCloseListener onInfoWindowCloseListener; - void bind(MapboxMap mapboxMap) { + void initialise(MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; - initialise(); - } - private void initialise() { infoWindowsSource = new GeoJsonSource(SOURCE_ID); mapboxMap.addSource(infoWindowsSource); infoWindowsLayer = new SymbolLayer(LAYER_ID, SOURCE_ID) - .withProperties(PropertyFactory.iconImage("{" + PROPERTY_ID + "}")) + .withProperties( + iconImage("{" + PROPERTY_ID + "}"), + /* set anchor of icon to bottom-left */ + iconAnchor(Property.ICON_ANCHOR_BOTTOM_LEFT), + + /* offset icon slightly to match bubble layout */ + iconOffset(new Float[] {-20.0f, -10.0f}) + ) .withFilter(Filter.eq(PROPERTY_SELECTED, true)); mapboxMap.addLayer(infoWindowsLayer); } @@ -178,6 +186,9 @@ class InfoWindowManager { } private void refreshSource() { + if (mapboxMap.getSource(SOURCE_ID) == null) { + mapboxMap.addSource(infoWindowsSource); + } infoWindowsSource.setGeoJson(featureCollection); } } 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 bf98e6bbc1..a48bc6750a 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 @@ -169,6 +169,7 @@ public final class MapboxMap { * Called before the OnMapReadyCallback is invoked. */ void onPreMapReady() { + annotationManager.getInfoWindowManager().initialise(this); annotationManager.reloadMarkers(); annotationManager.adjustTopOffsetPixels(this); } |