Geolocalización y mapas en Kotlin: Guía completa de integración

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Geolocalización y mapas en Kotlin: Guía completa para principiantes

Las aplicaciones móviles modernas utilizan cada vez más los datos de ubicación del usuario. Kotlin, siendo el lenguaje principal para el desarrollo en Android, proporciona herramientas potentes para trabajar con geolocalización y visualización de mapas. En este artículo, analizaremos en detalle cómo integrar mapas y obtener coordenadas en tu aplicación Kotlin.



1. Obtención de geolocalización en Kotlin

Para trabajar con geolocalización en Android se utiliza la clase LocationManager o el más moderno FusedLocationProviderClient de Google Play Services. Veamos ambos enfoques.



1.1. Uso de LocationManager (método básico)

Este método es adecuado para tareas simples y no requiere la conexión de Google Play Services.

import android.location.Locationimport android.location.LocationListenerimport android.location.LocationManagerimport android.os.Bundle

class LocationHelper(private val locationManager: LocationManager) {

fun getCurrentLocation() { val locationListener = object : LocationListener { override fun onLocationChanged(location: Location) { val lat = location.latitude val lon = location.longitude println("Latitud: $lat, Longitud: $lon") }

override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {} override fun onProviderEnabled(provider: String) {} override fun onProviderDisabled(provider: String) {} }

// Solicitud de actualizaciones de ubicación locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 5000L, // Intervalo en milisegundos 10f, // Cambio mínimo de distancia en metros locationListener ) }}


1.2. Uso de FusedLocationProviderClient (método recomendado)

Esta API es más precisa y eficiente energéticamente, ya que utiliza una combinación de GPS, Wi-Fi y torres de telefonía móvil.

import com.google.android.gms.location.FusedLocationProviderClientimport com.google.android.gms.location.LocationServicesimport com.google.android.gms.tasks.Task

class FusedLocationHelper(private val fusedLocationClient: FusedLocationProviderClient) {

fun getLastLocation() { val task: Task<Location> = fusedLocationClient.lastLocation task.addOnSuccessListener { location -> if (location != null) { val lat = location.latitude val lon = location.longitude println("Última ubicación: $lat, $lon") } else { println("Ubicación no encontrada") } } }}


2. Integración de mapas en Kotlin

Para mostrar mapas, se utilizan con mayor frecuencia Google Maps SDK u OpenStreetMap. Empecemos con la opción más popular.



2.1. Google Maps SDK

Para trabajar con Google Maps, es necesario obtener una clave API y agregar la dependencia en build.gradle:

// build.gradle (Module)dependencies {    implementation 'com.google.android.gms:play-services-maps:18.2.0'}


Ejemplo de agregar un mapa en Activity:

import android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport com.google.android.gms.maps.CameraUpdateFactoryimport com.google.android.gms.maps.GoogleMapimport com.google.android.gms.maps.OnMapReadyCallbackimport com.google.android.gms.maps.SupportMapFragmentimport com.google.android.gms.maps.model.LatLngimport com.google.android.gms.maps.model.MarkerOptions

class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

private lateinit var mMap: GoogleMap

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentVie

Recommendations