Skip to content

Kujaku migration to V10.19#383

Open
Aleem92 wants to merge 6 commits intomasterfrom
migration_to_v10
Open

Kujaku migration to V10.19#383
Aleem92 wants to merge 6 commits intomasterfrom
migration_to_v10

Conversation

@Aleem92
Copy link
Copy Markdown

@Aleem92 Aleem92 commented Jan 31, 2025

Fixes #382

Aleem92 and others added 3 commits January 31, 2025 19:28
@Rkareko Rkareko self-assigned this Apr 3, 2025
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:android and related v10+ plugins; remove authenticated Mapbox Maven credentials; update publishing to use Gradle Nexus Publish plugin.
  • Replace LatLng usage with Mapbox GeoJSON Point / CoordinateBounds across utils, library, and sample; rename domain Point to PointModel.
  • 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 PointPointModel in sample persistence.
sample/src/main/java/io/ona/kujaku/sample/activities/PassiveRecordObjectActivity.java Rename PointPointModel 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 PointPointModel.
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

  • DrawingManager still uses FillOptions/LineOptions APIs (fillManager.create(new FillOptions()...)) but fillManager/lineManager are 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. MapBoxOfflineResourcesDownloader passes v9 OfflineRegionStatus into OnDownloadMapListener. 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

  • AnnotationRepositoryManager currently returns null managers because the initialization is commented out. Callers (e.g., DrawingManager constructor) 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

  • OfflineRegionObserver now uses com.mapbox.maps.OfflineRegion*, but the current offline implementation in this repo still uses com.mapbox.mapboxsdk.offline.* (see MapBoxOfflineResourcesDownloader / 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.

Comment on lines +100 to +105
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])
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 109 to 119
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()));
}
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
Comment on lines 3 to 23
@@ -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);
}
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 138 to 142
// 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}"

}
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
Comment on lines +95 to +110
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);
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 541 to 548
@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()))
);
}
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
Comment on lines +554 to +560
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);
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 42 to +52
<!-- 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"-->
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 635 to +643
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());
}
}*/
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
Comment on lines +4 to +5
import com.mapbox.geojson.Geometry;
import com.mapbox.geojson.Point;
Copy link

Copilot AI Mar 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update Kujaku to Use Mapbox SDK Version 10.xxx

4 participants