【发布时间】:2015-08-20 06:09:26
【问题描述】:
我尝试在两个Location 对象之间使用distanceTo(),但是AFAIK 在所有情况下都没有返回正确的值。相反,我编写了一个自定义方法,它返回我认为正确的值。
float distanceBetween(Location l1, Location l2)
{
float lat1= (float)l1.getLatitude();
float lon1=(float)l1.getLongitude();
float lat2=(float)l2.getLatitude();
float lon2=(float)l2.getLongitude();
float R = 6371; // km
float dLat = (float)((lat2-lat1)*Math.PI/180);
float dLon = (float)((lon2-lon1)*Math.PI/180);
lat1 = (float)(lat1*Math.PI/180);
lat2 = (float)(lat2*Math.PI/180);
float a = (float)(Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2));
float c = (float)(2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)));
float d = R * c * 1000;
return d;
}
谁能告诉我我的实现与 distanceTo() 返回的内容之间有什么区别?
【问题讨论】:
-
有问题吗?
-
你在哪里接触到这个?
标签: android gps android-location