如何将经纬度转换为位置变量?

16

我在安卓上制作地图应用,想要获取地图上的两个位置,并查看它们之间的距离。我已经将我的当前位置获取为“Location”变量。然而,另一个地点是保存在两个变量中的:double lat,lng;

我查阅了互联网并找到了这个有用的方法:

float distance = myLocation.distanceTo(temp);

问题在于我手头的"temp"不是一个"位置(Location)",而是2个不同的双精度浮点数。

有没有一种方法可以将它们转换为"位置(Location)"?

PS. 我尝试过的代码:

Location temp = null;
temp.setLatitude(23.5678);
temp.setLongitude(34.456);
float distance = location.distanceTo(temp);

问题:

空指针访问:变量temp在此处只能为空

2个回答

47

在访问成员之前,您必须实例化Location。例如:

Java

Location temp = new Location(LocationManager.GPS_PROVIDER);
temp.setLatitude(23.5678);
temp.setLongitude(34.456);
float distance = location.distanceTo(temp);

Kotlin

val distance = location.distanceTo(Location(LocationManager.GPS_PROVIDER).apply {
    latitude = 23.5678
    longitude = 34.456
})

哈哈,这是一个展示 Kotlin > Java 的例子。 - Taslim Oseni

7

或者,您可以使用静态方法Location.distanceBetween()来获取距离,而无需实例化Location对象。

float[] results = new float[1];
Location.distanceBetween(1, 2, 2 , 2, results);

public static void distanceBetween (double startLatitude, double startLongitude, double endLatitude, double endLongitude, float[] results)

计算得到的距离存储在results[0]中。如果results的长度大于等于2,则初始方位角存储在results1中。 如果results的长度大于等于3,则终止方位角存储在results[2]中。

参数

startLatitude 开始纬度

startLongitude 开始经度

endLatitude 结束纬度

endLongitude 结束经度

results 用于存储结果的浮点数数组


这个方法很有趣,也会非常有帮助! - MuhammadNe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接