Geolokalisierung und Karten in Kotlin: Bibliotheken, Werkzeuge und Beispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Geolokalisierung und Karten in Kotlin

Kotlin ist eine moderne Programmiersprache, die häufig für die Entwicklung von Android-Anwendungen verwendet wird. Die Arbeit mit Geolokalisierung und Karten ist eine der wichtigsten Funktionen mobiler Anwendungen. In diesem Artikel betrachten wir die wichtigsten Bibliotheken und Werkzeuge für die Integration von Karten, das Abrufen von Benutzerkoordinaten und die Routenplanung in Kotlin.



1. Google Maps SDK für Android

Google Maps ist der beliebteste Dienst zur Darstellung von Karten. Für die Verwendung in Kotlin muss die Abhängigkeit in build.gradle hinzugefügt werden:

dependencies {    implementation 'com.google.android.gms:play-services-maps:18.2.0'    implementation 'com.google.android.gms:play-services-location:21.0.1'}


Nach dem Hinzufügen des API-Schlüssels im Manifest kann die Karte in einem Fragment angezeigt werden:

import com.google.android.gms.maps.*import com.google.android.gms.maps.model.*

class MapsFragment : SupportMapFragment(), OnMapReadyCallback { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) getMapAsync(this) }

override fun onMapReady(googleMap: GoogleMap) { val sydney = LatLng(-33.852, 151.211) googleMap.addMarker(MarkerOptions().position(sydney).title("Sydney")) googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 15f)) }}


2. Abrufen des aktuellen Standorts

Für die Arbeit mit Geolokalisierung wird der Fused Location Provider verwendet. Beispiel zum Abrufen des letzten bekannten Standorts:

import com.google.android.gms.location.*

class LocationHelper(private val context: Context) { private val fusedLocationClient = LocationServices.getFusedLocationProviderClient(context)

fun getLastLocation() { fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? -> location?.let { val lat = it.latitude val lng = it.longitude Log.d("Location", "Breitengrad: $lat, Längengrad: $lng") } } }}


Für die kontinuierliche Verfolgung verwenden Sie LocationRequest und LocationCallback:

val locationRequest = LocationRequest.Builder(    Priority.PRIORITY_HIGH_ACCURACY, 10000L).build()

val locationCallback = object : LocationCallback() { override fun onLocationResult(locationResult: LocationResult) { for (location in locationResult.locations) { // Verarbeitung neuer Koordinaten } }}

fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper())


3. OpenStreetMap und die Bibliothek osmdroid

Wenn Sie eine kostenlose Alternative zu Google Maps benötigen, verwenden Sie osmdroid. Einbindung:

dependencies {    implementation 'org.osmdroid:osmdroid-android:6.1.18'}


Beispiel für die Darstellung einer Karte und einer Markierung:

import org.osmdroid.config.Configurationimport org.osmdroid.tileprovider.tilesource.TileSourceFactoryimport org.osmdroid.views.MapViewimport org.osmdroid.util.GeoPointimport org.osmdroid.views.overlay.Marker

class OsmMapActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Configuration.getInstance().userAgentValue = packageName setContentView(R.layout.activity_osm)

val mapView = findViewById(R.id.map) mapView.setTileSource(TileSourceFactory.MAPNIK) mapView.controller.setZoom(15.0) val startPoint = GeoPoint(55.7558, 37.6173) // Moskau mapView.controller.setCenter(startPoint)

val marker = Marker(mapView) marker.position = startPoint marker.title = "Moskau" marker.snippet = "Rot"

Empfehlungen