그래서 ArrayList
에 GPS 위도와 경도 저장소를 기반으로 계산 된 마일을 계산하기위한 코드를 작성하고 있지만 어떤 이유로 무작위로 내가 NaN
을 얻었고 그 이유를 알 수 없습니다. 누군가 내 코드에 무엇이 잘못된지 알려주거나 내가해야 할 더 좋은 방법이 있다면 알려 주실 수 있습니까?거리에서 안드로이드 NaN
protected float calculateMiles()
{
float totalDistance = 0;
for(int i = 1; i < points.size(); i++) {
double lat = points.get(i).latitude;
double lng = points.get(i).longitude;
double lat2 = points.get(i-1).latitude;
double lng2 = points.get(i-1).longitude;
totalDistance += distance(lat, lng, lat2, lng2);
}
return totalDistance;
}
private 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);
}
private double deg2rad(double deg) {
return (deg * Math.PI/180.0);
}
private double rad2deg(double rad) {
return (rad * 180.0/Math.PI);
}
나는 또한 폴리 라인을 그릴 같은 포인트를 사용하고 그것을 잘 작동합니다.
폴리 라인을 올바르게 그렸을지라도? – user2101081
포인트 중 하나가 arraylist의 NaN (숫자가 아님) 인 경우 폴리 라인의 일부분을 그리는 것으로 건너 뜁니다. – YinKiet
폴리 라인을 그리는 코드는 예외적 인 경우가 없습니다. – user2101081