PDA

View Full Version : محاسبه فاصله از اطلاعات gps



masoud_urmia
پنج شنبه 02 بهمن 1393, 21:34 عصر
سلام دوستان اخیرا روی یک پروژه که برای ثبت میزان پیاده روی بود کار کردم و برای بدست اوردن فاصله بین دو نقطه جغرافیایی (Lat , Lng) از فرمول معرف زیر استفاده کردم


public double CalculationByDistance(GeoPoint StartP, GeoPoint EndP) { int Radius=6371;//radius of earth in Km
double lat1 = StartP.getLatitudeE6()/1E6;
double lat2 = EndP.getLatitudeE6()/1E6;
double lon1 = StartP.getLongitudeE6()/1E6;
double lon2 = EndP.getLongitudeE6()/1E6;
double dLat = Math.toRadians(lat2-lat1);
double dLon = Math.toRadians(lon2-lon1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
double c = 2 * Math.asin(Math.sqrt(a));
double valueResult= Radius*c;
double km=valueResult/1;
DecimalFormat newFormat = new DecimalFormat("####");
kmInDec = Integer.valueOf(newFormat.format(km));
meter=valueResult%1000;
meterInDec= Integer.valueOf(newFormat.format(meter));
Log.i("Radius Value",""+valueResult+" KM "+kmInDec+" Meter "+meterInDec);

return Radius * c; }

اما مشکلی که هست اینه که مثلا یک مسیر مستقیم رو میرم و بعد از محاسبه میگه 270 متر ، بعد همون مسیر رو دقیقا بر می گردم میگه 340 متر به نظرتون اشکال از چی میتونه باشه ؟ آیا خود گوگل ابزاری برای محاسبه فاصله برای برنامه نویسان اندروید تعبیه کرده؟

gjmkdyttyhujk
جمعه 03 بهمن 1393, 00:02 صبح
به نظر من شما سعی کن یه نقشه کاستوم از محلی که پیاده روی میشه داشته باشی. مثلا نقشه ماهواره ای ارومیه. بعد بیا نقشه ات رو کالیبره کن. چند تا مختصات بهش بده و روی اون محاسباتت رو انجام بده.دقت در چنین حالتی رو می تونی بسته به خلاقیتت به کمتر از 10-20 متر برسونی.