【问题标题】:Algorithm to compare the Lat lng with a set of database data将 Lat lng 与一组数据库数据进行比较的算法
【发布时间】: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


    【解决方案1】:

    编辑 Location.distanceBetween 完全满足您的需求:

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

    【讨论】:

    • 谢谢,那还是一一计算?
    • 我认为我们可以假设它已经过优化,但您可以针对自己的实现进行快速测试
    猜你喜欢
    • 2013-04-13
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多