【发布时间】:2014-03-30 18:34:39
【问题描述】:
我正在开发一个日程安排器 Android 应用程序。
数据是这样的:
Place
========
lat
lng
duration (e.g. 0.5 hour)
isPerferred
所以我必须得到一个基于 cirteria 的地点列表,例如。给定 5 小时,得到一组地点。
问题是,无论偏好是什么,我都必须比较 lat lng 并获得最近选择的地点的最近地点,但是性能是一个问题,除了比较之外,还有什么方法可以实现吗? lat lng 一个一个?谢谢
public double getDistance(double lat1, double lon1, double lat2, double lon2) {
if (lat1 == lat2 && lon1 == lon2)
return 0;
double latA = Math.toRadians(lat1);
double lonA = Math.toRadians(lon1);
double latB = Math.toRadians(lat2);
double lonB = Math.toRadians(lon2);
double cosAng = (Math.cos(latA) * Math.cos(latB) * Math.cos(lonB-lonA)) +
(Math.sin(latA) * Math.sin(latB));
double ang = Math.acos(cosAng);
double dist = ang *6371;
return dist;
}
【问题讨论】:
标签: android performance algorithm