Kotlin 中的地理定位与地图:库与工具概览

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Kotlin 中的地理定位与地图:工具完全指南



Kotlin 作为用于 Android 和服务器开发的现代编程语言,为开发者提供了强大的地理定位和地图处理能力。在本文中,我们将介绍主要的库和工具,让您能够轻松地将地图服务和位置确定功能集成到您的 Kotlin 项目中。



1. 适用于 Android 的 Google Maps SDK (Kotlin)



Google Maps SDK 是用于 Android 应用程序中处理地图的最流行且功能最丰富的工具。它提供了一套完整的 API,用于显示地图、添加标记、多边形、控制相机以及获取位置信息。



首先,在 build.gradle.kts 中添加依赖项:



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


使用 SupportMapFragment 在 Activity 中添加地图的示例:



import android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport 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 googleMap: 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(map: GoogleMap) { googleMap = map val sydney = LatLng(-33.852, 151.211) googleMap.addMarker(MarkerOptions() .position(sydney) .title("悉尼标记")) googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 12f)) }}


2. 适用于 Android 的 Yandex Maps SDK (Kotlin)



Yandex Maps SDK 是针对面向俄语受众的项目的绝佳替代方案。它提供俄罗斯和独联体国家的详细地图,以及独特的功能,例如交通拥堵可视化和公共交通路线。



连接库:



dependencies {    implementation("com.yandex.android:maps.mobile:4.3.1-lite")}


显示带有标记的地图示例:



import com.yandex.mapkit.MapKitFactoryimport com.yandex.mapkit.mapview.MapViewimport com.yandex.mapkit.geometry.Pointimport com.yandex.mapkit.map.MapObjectCollectionimport com.yandex.runtime.image.ImageProvider

class MainActivity : AppCompatActivity() { private lateinit var mapview: MapView

override fun onCreate(savedInstanceState: Bundle?) { MapKitFactory.initialize(this) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mapview = findViewById(R.id.mapview) mapview.map.move( CameraPosition(Point(55.751244, 37.618423), 11f, 0f, 0f) ) val mapObjects: MapObjectCollection = mapview.map.mapObjects mapObjects.addPlacemark( Point(55.751244, 37.618423), ImageProvider.fromResource(this, R.drawable.marker) ) }

override fun onStop() { mapview.onStop() MapKitFactory.getInstance().onStop() super.onStop() }}


3. 适用于 Kotlin 的 OpenStreetMap (OSMDroid)



OSMDroid 是一个使用 OpenStreetMap 数据的开源库

推荐