在当前位置查找最近的城市 - Android
Find nearest city on current location - Android
嘿,我想知道你是否可以帮助我。
我基本上已经获得了用户的当前位置和 运行 来自地理编码器对象的 .getLocality() 函数来显示他们所在的城市。但是,如果用户的当前位置在米德尔塞克斯怎么办我明白它说伦敦?
感谢您的帮助。
您可以计算您当前所在位置的纬度、经度和经过的所有城市的纬度和经度之间的距离,然后计算哪个城市的距离最小并显示出来。
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);
}
嘿,我想知道你是否可以帮助我。
我基本上已经获得了用户的当前位置和 运行 来自地理编码器对象的 .getLocality() 函数来显示他们所在的城市。但是,如果用户的当前位置在米德尔塞克斯怎么办我明白它说伦敦?
感谢您的帮助。
您可以计算您当前所在位置的纬度、经度和经过的所有城市的纬度和经度之间的距离,然后计算哪个城市的距离最小并显示出来。
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);
}