【问题标题】:Find nearest city on current location - Android在当前位置查找最近的城市 - Android
【发布时间】:2015-01-12 11:13:18
【问题描述】:

嘿,我想知道你是否可以帮助我。

我基本上已经获得了用户的当前位置,并从地理编码器对象中运行了一个 .getLocality() 函数来显示他们所在的城市。但是,如果用户当前的位置在米德尔塞克斯,我怎么会得到它说伦敦??

感谢您的帮助。

【问题讨论】:

  • 呃,我猜你想要一个城市列表,然后通过使用该城市的一些坐标计算各自的距离并显示前 5 个最近的?
  • 是的,我有一个包含 50 个城市的列表,每个城市都有自己的坐标。我只需要创建一些东西来找到最近的城市。
  • 嗯,你可以计算距离,然后按最短距离对列表进行排序并显示前5个?如果您已经拥有这么多数据,我真的不觉得有什么困难。在最坏的情况下,一个城市的任意点会比另一个城市稍微靠近用户,这意味着他们将在前 5 名中切换位置。

标签: java android location


【解决方案1】:

您可以计算您当前位置的纬度、经度和您拥有的所有城市的经纬度之间的距离,然后计算哪个城市的距离最短并显示出来。

public static double distance(double lat1, double lon1, double lat2, double lon2) {
        double theta = lon1 - lon2;
        double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta));
        dist = Math.acos(dist);
        dist = rad2deg(dist);
        dist = dist * 60 * 1.1515;
        return (dist);
    }

    public static  double deg2rad(double deg) {
        return (deg * Math.PI / 180.0);
    }
    public static double rad2deg(double rad) {
        return (rad * 180.0 / Math.PI);
    }

【讨论】:

  • 我有一个每个城市的边界框给我一个半径。我该如何实现呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2023-03-20
相关资源
最近更新 更多