Conversation
Rename package groups and artifacts Refactor from using LatLng to Point
Refactor circle, line and fill annotations
There was a problem hiding this comment.
Pull request overview
This PR migrates Kujaku (library + utils + sample) from Mapbox Android SDK v9-era APIs to the Mapbox Maps SDK v10+ API surface (per metadata: “Kujaku migration to V10.19”, with configs currently set to Mapbox 11.0.0), updating coordinate types (LatLng → GeoJSON Point), style/layer handling, annotations, and publishing setup.
Changes:
- Switch Mapbox dependencies to
com.mapbox.maps:androidand related v10+ plugins; remove authenticated Mapbox Maven credentials; update publishing to use Gradle Nexus Publish plugin. - Replace LatLng usage with Mapbox GeoJSON
Point/CoordinateBoundsacross utils, library, and sample; rename domainPointtoPointModel. - Begin refactors of KujakuMapView annotation/camera APIs and layer/source utilities to Mapbox v10+ equivalents.
Reviewed changes
Copilot reviewed 62 out of 63 changed files in this pull request and generated 22 comments.
Show a summary per file
| File | Description |
|---|---|
| utils/src/test/java/io/ona/kujaku/helpers/converters/GeoJSONHelperTest.java | Update tests to Mapbox GeoJSON Point and new random point generation. |
| utils/src/test/java/io/ona/kujaku/helpers/converters/GeoJSONFeatureTest.java | Update converter tests from LatLng to Point. |
| utils/src/test/java/io/ona/kujaku/helpers/MapBoxStyleHelperTest.java | Update style helper tests to use Point accessors. |
| utils/src/main/java/io/ona/kujaku/utils/helpers/converters/GeoJSONHelper.java | Convert GeoJSONFeature points from Mapbox Point into cocoahero GeoJSON objects. |
| utils/src/main/java/io/ona/kujaku/utils/helpers/converters/GeoJSONFeature.java | Replace internal point storage type from LatLng to Point. |
| utils/src/main/java/io/ona/kujaku/utils/helpers/MapBoxStyleHelper.java | Replace map center/bounds APIs from LatLng to Point. |
| utils/src/main/java/io/ona/kujaku/utils/CoordinateUtils.java | Replace bounds/point utilities with Mapbox v10+ Point + CoordinateBounds. |
| utils/build.gradle | Add Mapbox v10+ style/location/gestures dependencies for utils. |
| sample/src/main/res/values/strings.xml | Adjust sample UI string(s) during rename to PointModel. |
| sample/src/main/res/layout/mapbox_mapview_internal.xml | Comment out some legacy Mapbox view attributes; tweak marker view comments. |
| sample/src/main/res/layout/content_configurable_location_circle.xml | Comment out legacy Mapbox UI attribute usage. |
| sample/src/main/res/layout/content_card.xml | Comment out legacy Mapbox UI attribute usage. |
| sample/src/main/res/layout/content_bounds_aware.xml | Comment out legacy Mapbox UI attribute usage. |
| sample/src/main/res/layout/content_add_update_properties.xml | Comment out legacy Mapbox UI attribute usage. |
| sample/src/main/java/io/ona/kujaku/sample/repository/PointsRepository.java | Rename domain Point → PointModel in sample persistence. |
| sample/src/main/java/io/ona/kujaku/sample/activities/PassiveRecordObjectActivity.java | Rename Point → PointModel for dropped points updates. |
| sample/src/main/java/io/ona/kujaku/sample/activities/MainActivity.java | Rename points list to PointModel and update bounds points to GeoJSON Point. |
| sample/src/main/java/io/ona/kujaku/sample/activities/BoundsAwareActivity.java | Update camera setter API usage (setCameraState). |
| sample/src/main/java/io/ona/kujaku/sample/activities/AddUpdatePropertiesActivity.java | Update camera setter API usage (setCameraState). |
| sample/src/main/AndroidManifest.xml | Add POST_NOTIFICATIONS permission. |
| sample/src/androidTest/java/io/ona/kujaku/sample/PointsRepositoryTest.java | Update tests for PointModel. |
| sample/build.gradle | Comment out v9 annotation plugin dependency in sample. |
| publish.gradle | Remove inline Sonatype publishing config; document Nexus publish usage. |
| library/src/main/res/layout/mapbox_mapview_internal.xml | Update compass view class and adjust marker comment wording. |
| library/src/main/java/io/ona/kujaku/views/KujakuMapView.java | Major migration to Mapbox Maps SDK v10+ map/camera/plugins + point annotations + PointModel. |
| library/src/main/java/io/ona/kujaku/utils/LayerUtil.java | Migrate style layer construction to Mapbox v10+ style extension types. |
| library/src/main/java/io/ona/kujaku/plugin/switcher/layer/StreetsBaseLayer.java | Update vector source creation + layer id accessors for v10+. |
| library/src/main/java/io/ona/kujaku/plugin/switcher/layer/SatelliteBaseLayer.java | Update raster source creation + layer accessors for v10+. |
| library/src/main/java/io/ona/kujaku/plugin/switcher/layer/MBTilesLayer.java | Update source/layer id accessors for v10+. |
| library/src/main/java/io/ona/kujaku/plugin/switcher/layer/BaseLayer.java | Start migrating source/layer add/remove/visibility to v10+ style APIs (currently stubbed). |
| library/src/main/java/io/ona/kujaku/plugin/switcher/ExpressionArrayLiteral.java | Adjust expression literal helper for v10+ expressions (currently stubbed). |
| library/src/main/java/io/ona/kujaku/plugin/switcher/BaseLayerSwitcherPlugin.java | Update style loaded check to v10+. |
| library/src/main/java/io/ona/kujaku/mbtiles/MBTilesHelper.java | Begin migration of MBTiles sources/layers and tileset builder usage for v10+. |
| library/src/main/java/io/ona/kujaku/manager/KujakuCircle.java | Migrate circle wrapper from v9 Circle to v10+ CircleAnnotation. |
| library/src/main/java/io/ona/kujaku/manager/DrawingManager.java | Begin migration of drawing/annotations to v10+ annotation managers (currently mixed). |
| library/src/main/java/io/ona/kujaku/manager/AnnotationRepositoryManager.java | Begin migration of annotation manager provisioning (currently stubbed). |
| library/src/main/java/io/ona/kujaku/listeners/OnSplittingLongClickListener.java | Change click coordinate type to Mapbox GeoJSON Point. |
| library/src/main/java/io/ona/kujaku/listeners/OnSplittingClickListener.java | Change click coordinate type to Mapbox GeoJSON Point. |
| library/src/main/java/io/ona/kujaku/listeners/OnDrawingCircleLongClickListener.java | Update circle type + attempted point type migration. |
| library/src/main/java/io/ona/kujaku/listeners/OnDrawingCircleClickListener.java | Update circle type + coordinate type to v10+ equivalents. |
| library/src/main/java/io/ona/kujaku/listeners/OnDownloadMapListener.java | Switch offline listener types to Mapbox v10+ package. |
| library/src/main/java/io/ona/kujaku/listeners/OfflineRegionStatusCallback.java | Switch offline callback types to Mapbox v10+ package. |
| library/src/main/java/io/ona/kujaku/listeners/OfflineRegionObserver.java | Switch offline observer types to Mapbox v10+ package. |
| library/src/main/java/io/ona/kujaku/listeners/IncompleteMapDownloadCallback.java | Switch incomplete-download callback types to Mapbox v10+ package. |
| library/src/main/java/io/ona/kujaku/listeners/BoundsChangeListener.java | Switch bounds callback coordinate type to Mapbox GeoJSON Point. |
| library/src/main/java/io/ona/kujaku/layers/KujakuLayer.java | Update MapboxMap/expression imports to v10+. |
| library/src/main/java/io/ona/kujaku/interfaces/IKujakuMapViewLowLevel.java | Replace MarkerOptions/LatLng drop-point APIs with PointAnnotationOptions/PointModel. |
| library/src/main/java/io/ona/kujaku/interfaces/IKujakuMapView.java | Replace MarkerOptions/Point list APIs with PointAnnotationOptions/PointModel list. |
| library/src/main/java/io/ona/kujaku/helpers/wmts/WmtsHelper.java | Rework WMTS layer/source insertion using low-level Style.addStyleSource/addStyleLayer. |
| library/src/main/java/io/ona/kujaku/helpers/OfflineServiceHelper.java | Replace LatLng bounds with GeoJSON Point bounds. |
| library/src/main/java/io/ona/kujaku/helpers/MapboxLocationComponentWrapper.java | Replace v9 LocationComponent with v10+ location plugin usage. |
| library/src/main/java/io/ona/kujaku/helpers/ActivityLauncherHelper.java | Update map activity launching points list to PointModel. |
| library/src/main/java/io/ona/kujaku/domain/PointModel.java | Rename domain object Point → PointModel. |
| library/src/main/java/io/ona/kujaku/data/realm/RealmDatabase.java | Remove unused v9 OfflineRegion import. |
| library/src/main/java/io/ona/kujaku/data/MapBoxDownloadTask.java | Replace bounds LatLng fields with GeoJSON Point + JSON conversion updates. |
| library/src/main/java/io/ona/kujaku/activities/MapActivity.java | Remove Mapbox v9 initialization and migrate points list to PointModel. |
| library/src/main/java/io/ona/kujaku/KujakuLibrary.java | Update public API to accept List<PointModel> instead of List<Point>. |
| library/src/main/java/com/mapbox/mapboxsdk/style/layers/ExposedLayoutPropertyValue.java | Switch wrapper to extend v10+ PropertyValue. |
| library/build.gradle | Add Mapbox v10+ plugin deps and comment out v9 annotation plugin. |
| configs.gradle | Update Mapbox dependency coordinates/versions. |
| build.gradle | Add Gradle Nexus publish plugin and remove authenticated Mapbox Maven config. |
| SPECIFICATION.md | Documentation wording updates during PointModel rename. |
| README.md | Documentation wording updates during PointModel rename. |
Comments suppressed due to low confidence (4)
library/src/main/java/io/ona/kujaku/manager/DrawingManager.java:453
DrawingManagerstill usesFillOptions/LineOptionsAPIs (fillManager.create(new FillOptions()...)) butfillManager/lineManagerare now Mapbox v10+PointAnnotationManager/PolylineAnnotationManager. This won’t compile (and/or will crash if managers are null). Migrate polygon rendering to the new annotation APIs (e.g.,PolygonAnnotationManager/PolylineAnnotationOptions) and update the managers accordingly.
private void refreshPolygon() {
fillManager.deleteAll();
lineManager.deleteAll();
if (this.getKujakuCircles().size() > 1) {
List<Point> list = new ArrayList<>();
for (int i = 0 ; i < this.getKujakuCircles().size() ; i++) {
if (! this.getKujakuCircles().get(i).isMiddleCircle()) {
list.add(this.getKujakuCircles().get(i).getCircle().getPoint());
}
}
List<List<Point>> lists = new ArrayList<>();
lists.add(list);
fillManager.create(new FillOptions()
.withLatLngs(lists)
.withFillOpacity(Float.valueOf("0.5")));
// We add the first point to the end of the list too
if (this.getKujakuCircles().size() > 2) {
list.add(this.getKujakuCircles().get(0).getCircle().getLatLng());
}
lineManager.create(new LineOptions()
.withLatLngs(list)
.withLineOpacity(Float.valueOf("0.5")));
library/src/main/java/io/ona/kujaku/listeners/OnDownloadMapListener.java:22
- These listener interfaces now import
com.mapbox.maps.OfflineRegion/OfflineRegionStatus, but the offline download implementation still uses the legacy v9 types (com.mapbox.mapboxsdk.offline.OfflineRegion*), e.g.MapBoxOfflineResourcesDownloaderpasses v9OfflineRegionStatusintoOnDownloadMapListener. This mismatch will prevent compilation. Either migrate the downloader/service to the Maps v10+ offline APIs, or revert these listener types to the v9 offline classes until the migration is complete.
package io.ona.kujaku.listeners;
import com.mapbox.maps.OfflineRegion;
import com.mapbox.maps.OfflineRegionStatus;
/**
* Used to post progress when a Map Download is requested
*
*
* Created by Ephraim Kigamba - [email protected] on 13/11/2017.
*/
public interface OnDownloadMapListener {
/**
* Called to provide periodic downloading progress updates or DOWNLOAD COMPLETE message
*
* @param offlineRegionStatus The Offline Region's status
* @param offlineRegion The Offline Region whose status was queried
*/
void onStatusChanged(OfflineRegionStatus offlineRegionStatus, OfflineRegion offlineRegion);
library/src/main/java/io/ona/kujaku/manager/AnnotationRepositoryManager.java:44
AnnotationRepositoryManagercurrently returns null managers because the initialization is commented out. Callers (e.g.,DrawingManagerconstructor) immediately call methods on these managers, which will crash at runtime. Restore proper Mapbox v10+ annotation manager initialization (using the annotations plugin) or throw a clear exception if unsupported for now.
private static PointAnnotationManager fillManager;
private static PolylineAnnotationManager lineManager;
private static CircleAnnotationManager circleManager;
public static PointAnnotationManager getFillManagerInstance(@NonNull KujakuMapView mapView, @NonNull MapboxMap mapboxMap, @NonNull Style style) {
if (fillManager == null) {
/* TODO Refactor this
fillManager = new PointAnnotationManager(mapView, mapboxMap, style);*/
}
return fillManager;
}
public static PolylineAnnotationManager getLineManagerInstance(@NonNull KujakuMapView mapView, @NonNull MapboxMap mapboxMap, @NonNull Style style) {
if (lineManager == null) {
/*TODO Refactor this
lineManager = new PolylineAnnotationManager(mapView, mapboxMap, style);*/
}
return lineManager;
}
public static CircleAnnotationManager getCircleManagerInstance(@NonNull KujakuMapView mapView, @NonNull MapboxMap mapboxMap, @NonNull Style style) {
if (circleManager == null) {
/*TODO Refactor this
circleManager = new CircleAnnotationManager(mapView, mapboxMap, style);*/
}
return circleManager;
}
library/src/main/java/io/ona/kujaku/listeners/OfflineRegionObserver.java:27
OfflineRegionObservernow usescom.mapbox.maps.OfflineRegion*, but the current offline implementation in this repo still usescom.mapbox.mapboxsdk.offline.*(seeMapBoxOfflineResourcesDownloader/MapboxOfflineDownloaderService). This will cause type mismatches and compilation failures until the offline stack is migrated end-to-end.
import com.mapbox.maps.OfflineRegion;
import com.mapbox.maps.OfflineRegionStatus;
/**
* Callback used to provide periodic updates on an Offline Regions Status during downloads
*
* Created by Ephraim Kigamba - [email protected] on 13/11/2017.
*/
public interface OfflineRegionObserver {
/** TODO Refactor this
* Implement this method to be notified of a change in the status of an
* offline region. Status changes include any change in state of the members
* of OfflineRegionStatus.
* <p>
* This method will be executed on the main thread.
* </p>
*
* @param status the changed status
* @param offlineRegion the {@link OfflineRegion} for which the {@link OfflineRegionStatus}
* was queried
*/
void onStatusChanged(OfflineRegionStatus status, OfflineRegion offlineRegion);
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| return new Point[]{ | ||
| Point.fromLngLat(bbox[0],bbox[0]), | ||
| Point.fromLngLat(bbox[0],bbox[3]), | ||
| Point.fromLngLat(bbox[2],bbox[3]), | ||
| Point.fromLngLat(bbox[2],bbox[1]), | ||
| Point.fromLngLat(bbox[0],bbox[1]) |
There was a problem hiding this comment.
generate5pointsFromBbox is currently constructing points with incorrect bbox indices (e.g., first point uses bbox[0] for both lng and lat). Given the documented bbox order [minX, minY, maxX, maxY], the generated polygon coordinates will be wrong and may break downstream drawing/containment logic. Update the points to map minX/minY/maxX/maxY consistently (lng=x, lat=y) and ensure the last point closes the polygon correctly.
| if (featureType == GeoJSONFeature.Type.POINT) { | ||
| LatLng latLng = geoJSONFeature.getFeaturePoints().get(0); | ||
| Point point = new Point(latLng.getLatitude(), latLng.getLongitude(), latLng.getAltitude()); | ||
| Point latLng = geoJSONFeature.getFeaturePoints().get(0); | ||
| com.cocoahero.android.geojson.Point point = new com.cocoahero.android.geojson.Point(latLng.latitude(), latLng.longitude(), latLng.altitude()); | ||
| finalFeature = new Feature(point); | ||
|
|
||
| } else if (featureType == GeoJSONFeature.Type.MULTI_POINT) { | ||
| MultiPoint multiPoint = new MultiPoint(); | ||
|
|
||
| for (LatLng latLng: geoJSONFeature.getFeaturePoints()) { | ||
| multiPoint.addPosition(new Position(latLng.getLatitude(), latLng.getLongitude(), latLng.getAltitude())); | ||
| for (Point latLng: geoJSONFeature.getFeaturePoints()) { | ||
| multiPoint.addPosition(new Position(latLng.latitude(), latLng.longitude(), latLng.altitude())); | ||
| } |
There was a problem hiding this comment.
Point.altitude() returns a nullable Double in Mapbox GeoJSON. Passing it directly into the cocoahero Point/Position constructors risks NPE via auto-unboxing (or incorrect altitude handling) when altitude is not present. Consider using a 2D point/position constructor or defaulting altitude when null (or omitting it entirely).
| @@ -12,11 +13,11 @@ public interface OnDrawingCircleLongClickListener { | |||
| * | |||
| * @param circle the circle clicked. | |||
| */ | |||
| void onCircleLongClick(@NonNull Circle circle); | |||
| void onCircleLongClick(@NonNull CircleAnnotation circle); | |||
|
|
|||
| /** | |||
| * Called when no circle was clicked | |||
| * | |||
| */ | |||
| void onCircleNotLongClick(@NonNull LatLng latLng); | |||
| void onCircleNotLongClick(@NonNull Point latLng); | |||
| } | |||
There was a problem hiding this comment.
OnDrawingCircleLongClickListener imports android.graphics.Point, so onCircleNotLongClick(@NonNull Point latLng) now refers to a screen pixel point, not a geographic coordinate. This is inconsistent with the other listener interfaces in this PR (which use com.mapbox.geojson.Point) and will break callers expecting lat/lng. Import and use com.mapbox.geojson.Point instead.
| // is a dependency of the mapbox-android-sdk. The mapbox-sdk-turf is declared as | ||
| // a runtime dependency | ||
| configuration.implementation "com.mapbox.mapboxsdk:mapbox-sdk-turf:$instance.mapboxSdkTurfVersion" | ||
| configuration.implementation "com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v7:${instance.mapboxAnnotationPluginVersion}" | ||
|
|
||
| } |
There was a problem hiding this comment.
ext.mapboxDependencies still references removed variables (instance.mapboxSdkTurfVersion, and also mapboxSdkVersion earlier in the closure). With the new mapboxVersion/mapboxServicesVersion definitions, this block will fail during Gradle evaluation. Update it to use the new variables (or remove the closure if it’s no longer used).
| HashMap<String, Value> tilesetProperties = new HashMap<>(); | ||
| tilesetProperties.put("type", Value.valueOf("raster")); | ||
| tilesetProperties.put("tiles", Value.valueOf(Arrays.toString(new String[]{layer.getTemplateUrl("tile")}))); | ||
| tilesetProperties.put("maxzoom", Value.valueOf(layer.getMaximumZoom())); | ||
| tilesetProperties.put("minzoom", Value.valueOf(layer.getMinimumZoom())); | ||
| tilesetProperties.put("tileSize", Value.valueOf(layer.getTilesSize())); | ||
|
|
||
| style.addStyleSource(layer.getIdentifier(), Value.valueOf(tilesetProperties)); | ||
|
|
||
| // Create raster layer properties | ||
| HashMap<String, Value> layerProperties = new HashMap<>(); | ||
| layerProperties.put("id", Value.valueOf(layer.getIdentifier())); | ||
| layerProperties.put("type", Value.valueOf("raster")); | ||
| layerProperties.put("source", Value.valueOf(layer.getIdentifier())); | ||
| // Add layer | ||
| style.addStyleLayer(Value.valueOf(layerProperties),null); |
There was a problem hiding this comment.
tiles is being set to Value.valueOf(Arrays.toString(...)), which produces a single string like "[url]" instead of a JSON array of tile URL strings as required by the Style Spec. This will generate an invalid raster source. Use a Value array/list for tiles, and also guard against re-adding an existing source/layer to avoid duplicate-id errors when called multiple times.
| @Override | ||
| public @Nullable | ||
| JSONObject dropPoint(@Nullable LatLng latLng) { | ||
| JSONObject dropPoint(@Nullable PointModel pointModel) { | ||
| return dropPoint( | ||
| new MarkerOptions() | ||
| .setPosition(latLng) | ||
| new PointAnnotationOptions() | ||
| .withPoint(Point.fromLngLat(pointModel.getLng(), pointModel.getLat())) | ||
| ); | ||
| } |
There was a problem hiding this comment.
dropPoint(PointModel) is annotated nullable but immediately dereferences pointModel (pointModel.getLng()/getLat()), which will throw if callers pass null (the old LatLng overload permitted null). Add a null guard and fall back to camera center (as the other branch already does).
| if (pointAnnotationOptions != null && pointAnnotationOptions.getPoint() != null) { | ||
| PointModel pointModel = new PointModel(pointAnnotationOptions.getPoint().hashCode(), pointAnnotationOptions.getPoint().longitude(),pointAnnotationOptions.getPoint().longitude()); | ||
| Feature feature = Feature.fromGeometry(pointAnnotationOptions.getPoint()); | ||
| try { | ||
| JSONObject jsonObject = feature.toJSON(); | ||
|
|
||
| // Add a layer with the current point | ||
| centerMap(latLng, ANIMATE_TO_LOCATION_DURATION, getZoomToUse(mapboxMap, getZoomToUse(mapboxMap, LOCATION_FOCUS_ZOOM))); | ||
| dropPointOnMap(latLng, markerOptions); | ||
| JSONObject jsonObject = new JSONObject(feature.toJson()); | ||
| centerMap(pointModel, ANIMATE_TO_LOCATION_DURATION, getZoomToUse(getMapboxMap(), getZoomToUse(getMapboxMap(), LOCATION_FOCUS_ZOOM))); | ||
| dropPointOnMap(pointModel, pointAnnotationOptions); |
There was a problem hiding this comment.
PointModel construction here uses longitude() for both lat and lng (new PointModel(..., lon, lon)), which will swap/lose the latitude and cause dropped points and camera centering to be wrong. Construct the PointModel with (latitude, longitude) (or consistently lat, lng) from the Mapbox Point.
| <!-- START OF CUSTOM VIEWS ADDED TO KujakuMapView --> | ||
| <!-- This is the drop point layout used to simulate the position on which the user wants to drop a point --> | ||
| <!-- This is the drop pointModel layout used to simulate the position on which the user wants to drop a pointModel --> | ||
| <ImageView | ||
| android:id="@+id/iv_mapview_locationSelectionMarker" | ||
| android:layout_width="wrap_content" | ||
| android:layout_height="wrap_content" | ||
| android:layout_gravity="center" | ||
| android:visibility="gone" | ||
| android:src="@drawable/mapbox_markerview_icon_default"/> | ||
| android:visibility="gone"/> | ||
|
|
||
| <!--TODO figure out what happens to these values when migrating to v10 | ||
| android:src="@drawable/mapbox_markerview_icon_default"--> |
There was a problem hiding this comment.
The drop-location marker ImageView no longer sets android:src (it’s commented out). This will make the marker invisible when iv_mapview_locationSelectionMarker is shown, breaking the “drop point” UI in the sample. Either provide a replacement drawable for v10+ or set an appropriate src at runtime.
| private void addPrimaryGeoJsonSourceAndLayerToStyle(@NonNull Style style) { | ||
| if (getPrimaryGeoJsonSource() != null && style.getSource(getPrimaryGeoJsonSource().getId()) == null) { | ||
| style.addSource(getPrimaryGeoJsonSource()); | ||
| /* TODO Refactor this | ||
| if (getPrimaryGeoJsonSource() != null && style.getSource(getPrimaryGeoJsonSource().getId()) == null) { | ||
| style.addStyleSource(getPrimaryGeoJsonSource()); | ||
| } | ||
|
|
||
| if (getPrimaryLayer() != null && style.getLayer(getPrimaryLayer().getId()) == null) { | ||
| style.addLayer(getPrimaryLayer()); | ||
| } | ||
| }*/ |
There was a problem hiding this comment.
addPrimaryGeoJsonSourceAndLayerToStyle has the source/layer insertion fully commented out, so primaryGeoJsonSource/primaryLayer will never be added to the style. That will prevent feature points (and any style-driven updates) from rendering. Please migrate this to the Mapbox v10+ addStyleSource / addStyleLayer APIs and re-enable it (or remove the unused fields/methods if this feature is being dropped).
| import com.mapbox.geojson.Geometry; | ||
| import com.mapbox.geojson.Point; |
There was a problem hiding this comment.
com.mapbox.geojson.Geometry is imported but not used in this test. Unused imports are compilation errors in Java—remove the import to keep tests compiling.
Fixes #382