Unlocking React Native Maps: A Deep Dive into the MapView Component

Maps are essential to modern mobile applications, enabling users to visualize geographic data and interact with their surroundings. In this blog post, we’ll explore integrating and using the MapView component in React Native to add maps to your application.

Introduction to React Native MapView

The MapView component in React Native provides a powerful way to display maps within your app. It’s built on top of native map libraries for both iOS and Android, offering smooth performance and a wide range of features.

Getting Started

Before using the MapView component, you need to install the required dependencies. The popular library for maps in React Native is react-native-maps, For showing maps in Android and iOS you have an API key.

Let’s See How to Generate the API Key

Step 1: Add your project into the Firebase -> Add Project -> Project Name (Optionally, you can enable Google Analytics for your project.)-> Register your application as an Android and iOS device.

For Android: 

1. Enter your app”s package name (found in android/app/src/main/AndroidManifest.xml), and optionally provide the app nickname and SHA-1 certificate (for additional Firebase services).

2. Click on the Register app.

3. Download google-service.json and add Move this file to your Android app module’s root directory: android/app/.

4. Add Firebase SDK to Android/build.gradle as.

buildscript {
       dependencies {
           // Add this line
           classpath 'com.google.gms:google-services:4.3.10'
       }
}

5. Open your project’s Android/app/build. gradle file and add the following line at the bottom of the file:

Apply plugin: ‘com.google.gms.google-services’.

For iOS: 

1. Click on the Ios icon and add a bundle id (found in Xcode under General > Identity > Bundle Identifier).

2. Download the file GoogleService-Info.plist file: save it to the local machine.

3. Add this file to the Xcode project navigator folder.

4. Add SDK:- Open your project’s ios/Podfile and add the Firebase pods.

platform :ios, ‘10.0’

target 'YourApp' do
    # Add the Firebase pod for Google Analytics
     pod 'Firebase/Core'
    # Add the pods for any other Firebase products you want to use in your app
    # For example, to use Firebase Authentication
    # pod 'Firebase/Auth'
end

Step 2: Install package for a Firebase
npm install @react-native-firebase/app

Step 3: Go to the Google cloud Platform console -> Go to menu button -> hover over API & Services -> Click on Credentials ->                    Create Credentials and select Api key -> Pop up is appear with API key.

We Can also restrict the API key by clicking the edit API key option, We can add two type of restriction.

  1. Application Restriction: Application restrictions limit an API key’s usage to specific websites, IP addresses, Android applications, or iOS applications. You can set one application restriction per key.
  2. API Restriction: API restrictions specify the enabled APIs that this key can call

Related read: Leveraging Apigee Management APIs For Your Web Based Applications

Installation

First, install the react-native-maps library

npm install react-native-maps

For iOS:

cd ios
pod install

Then you have to do separate setup Instructions for Android and IOS.

For Android:

Add your API key to your manifest file (android/app/src/main/AndroidManifest.xml):

<application>
        <!-- You will only need to add this meta-data tag, but make sure it's a child of application -->
        <meta-data
               android:name="com.google.android.geo.API_KEY"
               android:value="Your Google maps API Key Here"/> // API paste
</application>

For iOS:

First install:-

$ (cd ios && pod install)

Add your API Key to the AppDelegate.m(m) as follows:

+ #import <GoogleMaps/GoogleMaps.h>

@implementation AppDelegate
...

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
+ [GMSServices provideAPIKey:@"_YOUR_API_KEY_"]; // add this line using the api key obtained from Google Console

Also make sure that your Podfile deployment target is set to >= 13.4 at the top of your Podfile, eg: platform: ios, ‘13.4’.

Add the same line og=f code to your podFile :- below the target.

# React Native Maps dependencies

rn_maps_path = '../node_modules/react-native-maps'
pod 'react-native-google-maps', :path => rn_maps_path

You are done with the setup.

Start Building Maps with React Native Today. Hire Our Developers Now!

Create the React Native Project

import MapView from 'react-native-maps';

Add this code to your To your component :

import React from 'react';
import {SafeAreaView, StyleSheet, Text, View} from 'react-native';
import MapView, {PROVIDER_GOOGLE} from 'react-native-maps';
//We specify the {PROVIDER_GOOGLE} to use Google Maps as the provider.

function GoogleMaps(): React.JSX.Element {
    console.log('1');
    return (
        <View style={styles.container}>
             <MapView
                   provider={PROVIDER_GOOGLE}
                   style={styles.map}
                   region={{
                       latitude: 18.516726,
                       longitude: 73.856255,
                       latitudeDelta: 0.015,
                       longitudeDelta: 0.0121,
                   }}></MapView>
        </View>
     );
}

const styles = StyleSheet.create({
     container: {
           ...StyleSheet.absoluteFillObject,
           flex: 1,
           justifyContent: 'flex-end',
           alignItems: 'center',
    },
    map: {
          ...StyleSheet.absoluteFillObject,
    }, // To fill the full screen
});

export default GoogleMaps;

Region: The region prop defines the initial region to be displayed on the map. Here, it’s centered around a specific latitude and longitude (Pune, India) with specified delta values for zoom level.

After Completing the step we get a result like this.

Google Map View

For Single Marker:

We Can import the Marker from the react native map, then we have to provide the coordinates and give the title per our requirement.

import {Marker} from 'react-native-maps';
<Marker
   coordinate={{
     latitude: userLocation.latitude,
     longitude: userLocation.longitude,
   }}
   title="Your Location"
/>

For Multiple Marker:

We can also make a custom marker like Google car etc. We have to provide a Multiple coordinate.

{list?.length
         ? list?.map((marker: any, index: number) => {
             return (
              <Marker
                key={index}
                coordinate={{
                  latitude: parseFloat(marker.latitude),
                  longitude: parseFloat(marker.longitude),
                }}
              </Marker>
            );
          })
         : null}

We see the result like this.

unname

We can write a function that returns the jsx.

const MyCustomMarkerView = ({name}: {name: string}) => {
      return (
        <>
          <View style={styles.customMarkerContainer}>
             <ImageCustom />
          </View>
        </>
  );

Render the MyCustomMarkerView like below.

{list?.length
         ? list?.map((marker: any, index: number) => {
             return (
                <Marker
                   key={index}
                   coordinate={{
                     latitude: parseFloat(marker.latitude),
                     longitude: parseFloat(marker.longitude),
                   }}
                   tracksViewChanges={false}
                   anchor={{x: 0.5, y: 1}}
                   onPress={() => handleMarkerPress(marker)}>
                   <MyCustomMarkerView {...marker} />
                 </Marker>
               );
            })
           : null}

We Can see the result:

unnamed (3)

coma

Conclusion

In this blog post, we’ve explored how to integrate Google Maps into a React Native application using the react-native-maps library. By following the step-by-step guide, you learned how to set up your project, create a GoogleMaps component, configure the map view, and apply custom styles.

With the GoogleMaps component now fully functional, you have a solid foundation to build upon. You can enhance this map by adding features such as markers, custom icons, and event handling to create a more interactive and user-friendly map experience in your app.

Adding maps to your mobile application can significantly improve user engagement and provide valuable location-based features. With React Native and react-native-maps, you can achieve this with ease and efficiency.

Keep Reading

Keep Reading

  • Service
  • Career
  • Let's create something together!

  • We’re looking for the best. Are you in?