Using Google Maps API in Android Development


Google Maps is one of the most commonly used mapping services in Android development. It allows developers to add interactive maps with various features such as markers, zooming, and geolocation. In this article, we will guide you through the process of integrating Google Maps into your Android application using the Google Maps API.

Prerequisites

Before you can use Google Maps in your Android app, there are a few prerequisites:

  • Google API Key: You'll need to obtain an API key from the Google Cloud Console.
  • Google Play Services: Ensure that the device has Google Play Services installed and updated.
  • Dependencies: Add the necessary dependencies in your project.

Setting Up Google Maps API

To use Google Maps in your Android project, you need to enable the Maps SDK for Android and generate an API key:

  1. Go to the Google Cloud Console.
  2. Create a new project or select an existing one.
  3. Navigate to API & Services > Library and search for "Maps SDK for Android".
  4. Enable the Maps SDK for Android.
  5. Go to Credentials and generate a new API key.
  6. Restrict your API key by specifying the package name and SHA-1 fingerprint for security.

Adding Dependencies in build.gradle

Once you have your API key, you need to add the Google Maps dependency in your build.gradle file.

    dependencies {
        implementation 'com.google.android.gms:play-services-maps:17.0.0'
    }
        

Configuring the Manifest

Next, you need to declare the necessary permissions and the API key in your AndroidManifest.xml file.

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.MyApplication">
        
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="YOUR_API_KEY_HERE"/>

        <activity android:name=".MapsActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

    </application>
        

Make sure to replace YOUR_API_KEY_HERE with the actual API key that you obtained earlier.

Creating a Map Activity

Now that everything is set up, create an activity to display the map. In this case, we'll use the SupportMapFragment to display the map.

MapsActivity.kt

    import android.os.Bundle
    import androidx.fragment.app.FragmentActivity
    import com.google.android.gms.maps.CameraUpdateFactory
    import com.google.android.gms.maps.GoogleMap
    import com.google.android.gms.maps.OnMapReadyCallback
    import com.google.android.gms.maps.SupportMapFragment
    import com.google.android.gms.maps.model.LatLng
    import com.google.android.gms.maps.model.MarkerOptions

    class MapsActivity : FragmentActivity(), OnMapReadyCallback {

        private lateinit var mMap: GoogleMap

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_maps)

            // Obtain the SupportMapFragment and get notified when the map is ready to be used.
            val mapFragment = supportFragmentManager
                .findFragmentById(R.id.map) as SupportMapFragment
            mapFragment.getMapAsync(this)
        }

        override fun onMapReady(googleMap: GoogleMap) {
            mMap = googleMap

            // Add a marker in Sydney, Australia, and move the camera
            val sydney = LatLng(-34.0, 151.0)
            mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney"))
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 10f))
        }
    }
        

In this example, we use the SupportMapFragment to initialize the map. The OnMapReadyCallback interface allows us to handle the map once it's ready. The onMapReady() method is called when the map is ready, and we can interact with it.

activity_maps.xml

Next, define the layout for your map activity. You'll need a SupportMapFragment to display the map:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@+id/map"
            android:name="com.google.android.gms.maps.SupportMapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

    </RelativeLayout>
        

This layout simply contains a fragment tag that loads the Google Maps fragment.

Handling User Location

If you want to show the user's current location on the map, you can enable the "My Location" feature. To do this, you need to request location permissions and use the GoogleMap.setMyLocationEnabled(true) method.

    import android.location.Location
    import androidx.core.app.ActivityCompat
    import androidx.core.content.ContextCompat
    import android.Manifest
    import android.content.pm.PackageManager

    class MapsActivity : FragmentActivity(), OnMapReadyCallback {

        private lateinit var mMap: GoogleMap

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_maps)

            val mapFragment = supportFragmentManager
                .findFragmentById(R.id.map) as SupportMapFragment
            mapFragment.getMapAsync(this)
        }

        override fun onMapReady(googleMap: GoogleMap) {
            mMap = googleMap

            // Enable the "My Location" button on the map
            if (ContextCompat.checkSelfPermission(
                    this, Manifest.permission.ACCESS_FINE_LOCATION) 
                == PackageManager.PERMISSION_GRANTED) {
                mMap.isMyLocationEnabled = true
            } else {
                ActivityCompat.requestPermissions(
                    this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), 1)
            }
        }
    }
        

In this code, we check for the required location permissions at runtime and enable the "My Location" feature on the map. If permissions are granted, the user's location will be shown on the map.

Adding Markers and Customizing the Map

In addition to displaying the user’s location, you can add markers to the map to mark points of interest. Here’s an example of how to add a custom marker:

    val location = LatLng(-33.865143, 151.209900) // Sydney, Australia
    mMap.addMarker(MarkerOptions().position(location).title("Marker in Sydney"))
    mMap.moveCamera(CameraUpdateFactory.newLatLng(location))
        

This code snippet adds a marker at the specified latitude and longitude and moves the camera to that location.

Conclusion

Using Google Maps in your Android application is a powerful feature for adding interactive and location-based functionality. By following the steps outlined in this article, you can integrate Google Maps into your app, request location permissions, and add various features such as markers, zooming, and displaying the user's current location.





Advertisement