[ Package conformance ]
Device & Platform · >=1.0.0
react-native-maps
native-seam over a real host-thread maplibre-gl driver (render-worker/map-host.ts), NOT an OSM iframe. the package JS (MapView/Marker/Callout/AnimatedRegion/createFabricMap) runs unchanged; only the RNMapsMapView/RNMapsMarker host components + the RNMapsAirModule TurboModule are ours. maplibre renders keyless OpenFreeMap vector tiles at device scale on the host and ships each frame to the shell painter via the live-frame channel. Childless Markers render as real maplibre circle layers; custom Marker child views render in the tenant overlay and reproject from host camera feedback. Pinch (focal-point zoom) + pan are forwarded from the tenant responder, and maplibre camera changes return through the host→tenant channel for region callbacks and current imperative reads. The imperative ref API works: getCamera/getMapBoundaries/getPointForCoordinate/getCoordinateForPoint answer from web-mercator math over the seam's tracked camera; animateCamera/animateToRegion/setCamera/fitToCoordinates/fitToElements route through codegenNativeCommands → __dispatchCommandImpl → the maplibre easeTo/jumpTo/fitBounds host commands. takeSnapshot captures and encodes the visible map viewport through the compositor pixel owner, including png/jpg, quality, base64/blob-uri results, and requested output dimensions.90%
API coverage
No visual conformance cases have been published for this package yet. The registry summary below describes what the compat layer implements.
Working (18)
MapView with real maplibre vector-tile rendering at device scaleinitialRegion/region/camera honoredMarker (real map pins via maplibre circle layerspinColor; custom child views with anchor positioning and pan reprojection)pinch+pan gestures with focal-point zoomonRegionChangeStart/onRegionChange/onRegionChangeComplete with region + isGesturegetCamera/getMapBoundaries (web-mercator unproject of the view corners)getPointForCoordinate/getCoordinateForPoint (projection round-trip)getMarkersFramesanimateCamera/animateToRegion/setCamera (easeTo/jumpTo)fitToCoordinates/fitToElements/fitToSuppliedMarkers (fitBounds)takeSnapshot of the visible viewport (real compositor pixelspng/jpg + qualityfile/base64 resultrequested output scaling)onMapReadyMapView ref APICallout/CalloutSubview/AnimatedRegion/MAP_TYPES/PROVIDER_GOOGLE/DEFAULT/enableLatestRenderer exports
Missing (7)
custom Marker child projection does not yet account for bearing/pitchshape overlays (Polyline/Polygon/Circle/Overlay/Heatmap/Geojson/UrlTile/WMSTile/LocalTile render null — the GL style reconcile path exists in map-host but react-native-maps does not emit it yetonly @rnmapbox/maps does)takeSnapshot region override and isolated native-subtree capture (the visible screen rectangle can include an overlapping sibling; file result is a browser blob URI rather than file://)getAddressFromCoordinates (no reverse geocoder)showsUserLocation trackinggesture-based onPress/onLongPress