【问题标题】:Android Mobile App feature that compare two location比较两个位置的 Android 移动应用程序功能
【发布时间】:2021-03-13 12:41:09
【问题描述】:
我最近和目前正在学习 kotlin 和 android 编程
我想制作一个应用程序来比较和检测离我更近的两件事之间的哪一个,而比较的事情是,
例如,基于谷歌地图位置的两个不同的麦当劳特许经营权,
我不知道我应该如何构建这个,你们能帮我确定哪种技术适合我的学校项目吗?
谢谢你:)
【问题讨论】:
-
欢迎来到 Stack Overflow!我建议您查看How to Ask,了解如何提出好问题的一些技巧!不幸的是,这不是一个教程网站,您需要有一个可以由这里的志愿者明确回答的具体问题,这个问题非常广泛。
标签:
android
kotlin
mobile
location
maps
【解决方案1】:
您可以获取两个点的位置,并使用此方法比较每个点与您当前位置之间的距离
然后选择较小的一个
private fun calculationByDistance(location: Location, EndP: Location): Double {
val Radius = 6371 // radius of earth in Km
val lat1 = location.latitude
val lat2: Double = EndP.latitude
val lon1 = location.longitude
val lon2: Double = EndP.longitude
val dLat = Math.toRadians(lat2 - lat1)
val dLon = Math.toRadians(lon2 - lon1)
val a = (Math.sin(dLat / 2) * Math.sin(dLat / 2)
+ (Math.cos(Math.toRadians(lat1))
* Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2)
* Math.sin(dLon / 2)))
val c = 2 * Math.asin(Math.sqrt(a))
val valueResult = Radius * c
val km = valueResult / 1
val newFormat = DecimalFormat("####")
val kmInDec = Integer.valueOf(newFormat.format(km))
val meter = valueResult % 1000
val meterInDec = Integer.valueOf(newFormat.format(meter))
Log.i("Radius Value", "" + valueResult + " KM " + kmInDec
+ " Meter " + meterInDec)
return Radius * c
}
您可以按照此文档获取当前位置
her