Android 如何找到地质点之间的距离?
下午好。我有以下代码Android 如何找到地质点之间的距离?,android,geopoints,overlayitem,Android,Geopoints,Overlayitem,下午好。我有以下代码 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
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 {
}
}
});
从
GeoPoints
创建Location
对象,您就有了distanceTO()
方法
您将拥有以米为单位的可变距离
距离[0]
两个地理点之间的距离:-
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();
}
来源?解释?(我知道,但你应该至少添加一个到维基的链接,以便进一步研究)。你能在我的代码中替换这个方法吗。我刚刚开始学习安卓系统
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);
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();
}