2013-02-16 3 views
2

Добрый день. У меня есть следующий код:Как найти расстояние между геоданными?

  ParseQuery query = new ParseQuery("MyOb"); 
    query.findInBackground(new FindCallback() { 
     public void done(List<ParseObject> myOb, ParseException e) { 
     if (e == null) { 
      for (i = 0; i < myOb.size(); i++) { 

      geo1Dub = myOb.get(i).getParseGeoPoint("location").getLatitude(); 
       geo2Dub = myOb.get(i).getParseGeoPoint("location").getLongitude(); 
       geo1Int = (int) (geo1Dub*1E6); 
      geo2Int = (int) (geo2Dub*1E6); 
      pointGet = new GeoPoint(geo1Int, geo2Int);   

        OverlayItem overlayitem = new OverlayItem(pointGet, title, title);    
      itemizedoverlay.addOverlay(overlayitem);         

        } 

      mapOverlays.add(itemizedoverlay); 
      mapView.postInvalidate(); 
      } else { 


     } 
     } 
    }); 

С сайта, я беру точки и отображаю их на карте. Скажите, пожалуйста, как я могу использовать

distanceBetween (двойной startLatitude, двойной startLongitude, двойной endLatitude, двойной endLongitude, поплавок [] результаты)

показать точку, что со мной. Моя позиция будет в точке

point = new GeoPoint(geoLat.intValue(), geoLng.intValue()); 

ответ

1

Расстояние между двумя географическими точками: -

public static double distFrom(double lat1, double lng1, double lat2, double lng2) { 
      Double EARTH_RADIUS = 6371.00; 
      double earthRadius = EARTH_RADIUS; 
      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; 
      return new Float(dist).floatValue(); 
     } 
+0

источник? объяснение? (Я знаю это, но вы должны добавить хотя бы ссылку на wiki для дальнейших исследований). – Femaref

1

Это не очень сложная проблема ... Вы можете найти способ сделать это в этой ссылке:

http://www.movable-type.co.uk/scripts/latlong.html

+0

Также некоторый код, который будет способствовать более –

1

Создать Location объекты GeoPoints и у вас есть метод distanceTO().

http://developer.android.com/reference/android/location/Location.html

float distance[] = 0.0f; 
double lat = Double.valueOf(point.getLatitudeE6()/1E6); 
double lat = Double.valueOf(point.getLongitudeE6()/1E6); 
Location.distanceBetween(geo1Dub, geo2Dub, lat, lng, distance); 

Вы будете иметь расстояние в метрах в переменной distance[0]

+0

Можете ли вы замените этот метод в моем коде. Я только начинаю изучать Android –

+0

Отредактированный пост с кодом .... – vtuhtan

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