maps icon indicating copy to clipboard operation
maps copied to clipboard

[Bug]: Error in ViewAnnotationManager.swift when running React Native app on iOS 18

Open guneyural opened this issue 5 months ago • 13 comments

Mapbox Implementation

Mapbox

Mapbox Version

= 11.4.0

React Native Version

0.74.3

Platform

iOS

@rnmapbox/maps version

^10.0.0-beta.28

Standalone component to reproduce

Steps to Reproduce

1. Upgrade iOS version to 18 and Xcode to 16.0
2. Install the latest version of rnmapbox/maps and MapboxMaps.
3. Run the React Native app using `npm run ios`.
import React from 'react';
import {
  MapView,
  ShapeSource,
  LineLayer,
  Camera,
} from '@rnmapbox/maps';

const aLine = {
  type: 'LineString',
  coordinates: [
    [-74.00597, 40.71427],
    [-74.00697, 40.71527],
  ],
};

class BugReportExample extends React.Component {
  render() {
    return (
      <MapView style={{flex: 1}}>
        <Camera centerCoordinate={[-74.00597, 40.71427]} zoomLevel={14} />
        <ShapeSource id="idStreetLayer" shape={aLine}>
          <LineLayer id="idStreetLayer" />
        </ShapeSource>
      </MapView>
    );
  }
}

Observed behavior and steps to reproduce

I am experiencing an issue when running my React Native application using the rnmapbox/maps library on iOS 18 and xcode 16.0

Before the update there was no problem.

The build fails with a Swift type conversion error in ViewAnnotationManager.swift.

❌  (ios/Pods/MapboxMaps/Sources/MapboxMaps/Annotations/ViewAnnotationManager.swift:79:19)

  77 |     @available(*, deprecated, message: "Use ViewAnnotation")
  78 |     public var annotations: [UIView: ViewAnnotationOptions] {
> 79 |         idsByView.compactMapValues { [mapboxMap] id in
     |                   ^ cannot convert return expression of type '[UIView : ViewAnnotationOptions]' to return type 'Dictionary<String, Optional<JSONValue>>.RawValue' 
  80 |             try? mapboxMap.options(forViewAnnotationWithId: id)
  81 |         }
  82 |     }

The build fails due to an error related to ViewAnnotationManager.swift in the MapboxMaps library. The error points to a type conversion issue between [UIView : ViewAnnotationOptions] and Dictionary<String, Optional<JSONValue>>.RawValue.

Expected behavior

The application should build successfully and work as expected on iOS 18 and xcode 16.0

Notes / preliminary analysis

No response

Additional links and references

No response

guneyural avatar Sep 30 '24 18:09 guneyural