summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit2c60af6bafc4c401bcba73b5248bca3d700a097d (patch)
tree49925742fe802859bada93264d5bbcd6a17b4a5a
parent2e7145c1bdb98761208dda05254e081f7ae6ce26 (diff)
downloadqtlocation-mapboxgl-2c60af6bafc4c401bcba73b5248bca3d700a097d.tar.gz
[android] [WIP] showing symbol layer as info window
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java1
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/InfoWindowManager.java23
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java1
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);
}