react-native-maps 15,999 (https://github.com/react-native-maps/react-native-maps 15,999 ) (MIT) wraps the platforms' own map SDKs as a native component: <MapView> is Google Maps 1 on Android and Apple Maps on iOS (or Google Maps there too with provider={PROVIDER_GOOGLE} and extra setup). Children such as <Marker>, <Polyline>, <Circle> and <Callout> become native map objects, so panning and zooming run at native speed, not through JavaScript.
Google's Maps SDK for Android needs an API key from a Google Cloud 1 project with the Maps SDK for Android enabled, restricted to your package name and signing certificate. The plugin puts it in the manifest:
["react-native-maps", { "androidGoogleMapsApiKey": "YOUR_ANDROID_MAPS_KEY" }],BookNest builds with that placeholder, because this book has no Google Cloud account. The map view is created, its onMapReady fires, and then Google refuses to draw:
E Google Maps Android API: Authorization failure. Please see https://developers.google.com/maps/documentation/ android-api/start for how to correctly set up the map. E Google Maps Android API: Ensure that the following Android Key exists: E Google Maps Android API: API Key: YOUR_ANDROID_MAPS_KEY E Google Maps Android API: Android Application (<cert_fingerprint>;<package_name>): 5E:8F:16:06:2E:A3:CD: 2C:4A:0D:54:78:76:BA:A6:F3:8C:AB:F6:25;com.anonymous.booknest
A beige, empty map with a Google logo is the classic symptom: search logcat for Authorization failure. The message even prints the SHA-1 fingerprint and package name to register. A debug build and a release build are signed with different keys (Publishing), so register both fingerprints, and never ship a key without the package restriction.