📜  android 获取两个位置之间的距离 kotlin - Java (1)

📅  最后修改于: 2023-12-03 15:29:22.295000             🧑  作者: Mango

Android 获取两个位置之间的距离

在 Android 开发中,经常需要获取两个位置之间的距离。本文将介绍如何使用 Kotlin 或 Java 在 Android 应用中获得两个位置之间的距离。

1. 引入依赖

build.gradle 文件中添加以下依赖:

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

这个依赖包含了一些用于获取地图信息的类和方法。

2. 获取经纬度

首先,需要获取两个位置的经纬度。可以使用 Android 提供的 LocationManager 类来获取当前位置的经纬度,或者使用第三方地图服务(如 Google Maps)来获取某个位置的经纬度。

以下是获取当前位置经纬度的 Kotlin 代码:

val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
val location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
val latitude = location?.latitude ?: 0.0
val longitude = location?.longitude ?: 0.0

可以将 NETWORK_PROVIDER 替换为 GPS_PROVIDERPASSIVE_PROVIDER,具体选择哪个定位方式可以参考 Google 的官方文档。

以下是获取某个位置经纬度的 Java 代码:

Geocoder geocoder = new Geocoder(this);
List<Address> addresses = geocoder.getFromLocationName("New York City", 1);
double latitude = addresses.get(0).getLatitude();
double longitude = addresses.get(0).getLongitude();

这段代码会获取纽约市的经纬度。(需要注意的是,在 Android 应用中使用第三方地图服务需要获取相关的 API Key)

3. 计算距离

有了两个位置的经纬度之后,就可以计算它们之间的距离了。Android 提供了 Location 类来计算两个位置之间的距离。以下是 Kotlin 的示例代码:

val locationA = Location("point A")
locationA.latitude = 37.4219999
locationA.longitude = -122.0840575

val locationB = Location("point B")
locationB.latitude = 37.4219983
locationB.longitude = -122.0840099

val distance = locationA.distanceTo(locationB)

这段代码会计算两个位置之间的距离,单位为米。

以下是 Java 的示例代码:

Location locationA = new Location("point A");
locationA.setLatitude(37.4219999);
locationA.setLongitude(-122.0840575);

Location locationB = new Location("point B");
locationB.setLatitude(37.4219983);
locationB.setLongitude(-122.0840099);

float distance = locationA.distanceTo(locationB);

这段代码会计算两个位置之间的距离,单位为米。

4. 总结

本文介绍了在 Android 应用中获取两个位置之间距离的方法。需要注意的是,获取位置的方式有多种,开发者需要根据实际情况选择合适的方式。