To create a Google Map in an Android application and display specific locations using latitude and longitude, follow these steps:
1. Set Up the Project
- Open Android Studio and create a new project with the Google Maps Activity template.
- Add the necessary Google Maps dependency (this is typically pre-included in the template):
implementation 'com.google.android.gms:play-services-maps:18.1.0'
2. Get a Google Maps API Key
- Go to the Google Cloud Console.
- Enable the Maps SDK for Android API for your project.
- Generate an API key and add it to your
AndroidManifest.xml
:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY_HERE" />
3. Modify the Activity Code
Update the MapsActivity.kt
file to include custom markers for specific locations.
Imports
import android.os.Bundle
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
Activity Code
class MapsActivity : AppCompatActivity(), 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 markers for specific locations
val location1 = LatLng(37.7749, -122.4194) // San Francisco
val location2 = LatLng(34.0522, -118.2437) // Los Angeles
val location3 = LatLng(40.7128, -74.0060) // New York
mMap.addMarker(MarkerOptions().position(location1).title("San Francisco"))
mMap.addMarker(MarkerOptions().position(location2).title("Los Angeles"))
mMap.addMarker(MarkerOptions().position(location3).title("New York"))
// Move the camera to the first location
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location1, 5f))
}
}
4. Update the XML Layout
Ensure the activity_maps.xml
file contains a SupportMapFragment
:
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
5. Test the Application
- Build and run the application on a device or an emulator.
- The map should display markers for the specific locations provided (e.g., San Francisco, Los Angeles, and New York).
Optional Customizations
- Change Marker Icons:
val customIcon = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)
mMap.addMarker(MarkerOptions().position(location1).title("San Francisco").icon(customIcon))
- Add Click Listeners for Markers:
mMap.setOnMarkerClickListener { marker ->
Toast.makeText(this, "Clicked: ${marker.title}", Toast.LENGTH_SHORT).show()
true
}
- Set Different Zoom Levels:
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location1, 10f)) // Closer view