2012-07-04 4 views
1

사용자가 위치를 기록한 다음 자동차 위치를 지정해야하는 앱을 개발 중입니다. 자동차 옵션을 선택하면 주차 된 차량을 표시해야합니다. 거리를 계산하지만 거리는 항상 0 미터를 표시합니다 .i dono why ? 사람이지도에 주차 된 차량과 사람 사이의 거리를 표시하는 방법을 말할 수 있습니까 ... 주차 한 차량을지도에 표시하고 싶습니다.지도에 두 geopoints 사이의 거리를 표시하는 방법은 무엇입니까?

+5

포스트 당신의 조각. –

+0

당신은 분명히 코드 조각을 게시해야합니다. 그렇지 않으면 지금까지 무엇을 달성했는지, 그리고 어떤 특정한 문제가 무엇인지 추측 할 수있는 엉덩이에 고통이 있습니다. – herom

답변

0

주차 한 차량의 위치를 ​​저장 했습니까? 너는 그 사람의 실제 위치를 알고 있니? 그래서, 당신은 ... 당신이 사용자의 위치를 ​​가지고 차를 주차하는 경우

0

... 차이를 계산하고 (눈의 라인 이상) 이상 거리를 얻을 수 있어야

다음이 실제 거리 계산이 기능

Location locationA = new Location("USER"); 

locationA.setLatitude(latA); 
locationA.setLongitude(lngA); 

Location locationB = new Location("Parked Car"); 

locationB.setLatitude(latB); 
LocationB.setLongitude(lngB); 

distance = locationA.distanceTo(locationB); 
+0

나중에 시도했지만 O 미터로 거리가 있습니다. –

+0

그러면 유일한 문제는 귀하의 요점입니다. locationA.setLatitude (latA)에 있는지 확인하십시오. locationA.setLongitude (lngA); 위 경도에서 위도와 경도의 위도를 설정하고 있습니다. :) 그것은 또한 성가신 문제입니다. 나와 함께 –

+0

나는 수동으로 위도와 경도를 부여했습니다. 어떻게 프로그래밍 방식으로 줄 수 있습니까? –

0

사용하여 작동합니다 :

public static double distFrom (double lat1, double lng1, double lat2, double lng2) 
{ 
    double earthRadius = 3958.75; 
    double dLat = Math.toRadians(lat2-lat1); 
    double dLng = Math.toRadians(lng2-lng1); 
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
    Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * 
    Math.sin(dLng/2) * Math.sin(dLng/2); 
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
    double dist = earthRadius * c; 

    int meterConversion = 1609; 

    return new Double(dist * meterConversion).doubleValue(); 
} 

과 같이 사용 :

double distance = 0; 
distance=distFrom(latA,lngA,latB,lngB); 

당신이 사용하는 정수로 이중 변환하려면 : 코드의

int distance=0; 
distance=(int) distFrom(latA,lngA,latB,lngB); 
관련 문제