2013-02-14 4 views
0

У меня проблема, чтобы получить правильный путь, чтобы получить расстояние от моих 2 точек геометрии. Как заставить его работать?метод расстояниеTo (двойной) не определено

из класса GPS:

double latitude; // latitude 
String mlat; 

    latitude = location.getLatitude(); 
    mlat = String.valueOf(latitude); 

из ListView:

     // Get distance 
         String mReportA; 
         double mLocB; 
         int distance; 
         mReportA = e.getString("lat"); 
         mReportA = e.getString("lon"); 
         mLocB = gps.latitude; 
         mLocB = gps.longitude; 
         distance = mReportA.distanceTo(mLocB); 

Ошибка в Eclipse: Метод distanceTo(double) не определено для типа String, я получаю e.getString("lat"); из JSON

+0

mReportA является строка. distanceTo определено для объектов местоположения. – Anukool

+0

yes, e.getString ("lat"); от json. так что это строка. Как его преобразовать, что он работает? – sarahsdev

+0

@sarahsdev см. Мой отредактированный ответ. – rajeshwaran

ответ

1

Чтобы вычислить расстояние между двумя GeoPoint вы можете следовать в приведенном ниже примере.

double currentLatitude = location.getLatitude(); 
double currentLongitude = location.getLongitude(); 

double endLatitude = lat; 
double endLongitude = lng; 

float[] results = new float[3]; 
Location.distanceBetween(currentLatitude, currentLongitude,endLatitude, endLongitude, results); 

BigDecimal bd = new BigDecimal(results[0]);// results in meters 
BigDecimal rounded = bd.setScale(2, RoundingMode.HALF_UP); 
double values = rounded.doubleValue(); 

EDIT

if (values > 1000) { 
values = (Double) (values * 0.001f);// convert meters to Kilometers 
bd = new BigDecimal(values); 
rounded = bd.setScale(2, RoundingMode.HALF_UP); 
values = rounded.doubleValue(); 
}  
+0

Как я могу получить результат в км? – sarahsdev

+1

@sarahsdev см. Мой отредактированный ответ. – KunalK

1
// Here is the code to find out the distance between two locations 

float distance; 
Location locationA = new Location("A"); 

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

Location locationB = new Location("B"); 

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

distance = locationA.distanceTo(locationB); 
+0

Я получаю это e.getString ("lat"); от json. так что это строка. Как его преобразовать, что он работает? – sarahsdev

+0

Вы можете получить латиграф и долготу для местоположения A и местоположения B. Теперь вам нужно создать два объекта Location. Один для A и один для B. Затем вы можете использовать функцию distanceTo. – Anukool

3

Вы можете оценить широту и долготу es are double затем вычислить расстояние. так что никакое изменение двойного значения на строку.

Location locationA = new Location("point A"); 

locationA.setLatitude(orginlat); 
locationA.setLongitude(orginlong); 

Location locationB = new Location("point B"); 

locationB.setLatitude(tolat); 
locationB.setLongitude(tolong); 

Float distance = locationA.distanceTo(locationB); 

Строка новообращенный двойной,

public static double parseDoubleSafely(String str) { 
    double result = 0; 
    try { 
     result = Double.parseDouble(str); 
    } catch (NullPointerException npe) { 
     //sysout found null 
     return 0; 
    } catch (NumberFormatException nfe) { 
     //sysout NFE 
     return 0; 
    } 
    return result; 
} 
+0

Ошибка eclipse: Невозможно вызвать distanceTo (double) для примитивного типа double – sarahsdev

+0

@sarahsdev distanceTo (location) только pass, а не double value. обратитесь к http://developer.android.com/reference/android/location/Location.html – rajeshwaran

+0

@sarahsdev опубликовать свой код? – rajeshwaran

Смежные вопросы