本文将分享android–哪一个最好计算两点之间的距离?的详细内容,并且还将对1084:计算两点间的距离(多实例测试)进行详尽解释,此外,我们还将为大家带来关于android–地理点之间的距离、and
本文将分享android – 哪一个最好计算两点之间的距离?的详细内容,并且还将对1084: 计算两点间的距离(多实例测试)进行详尽解释,此外,我们还将为大家带来关于android – 地理点之间的距离、android – 如何找到两个地理点之间的距离?、android – 如何通过latlng获得两点之间的距离?、Android 百度地图获取两点之间的距离和推荐的驾车路线的相关知识,希望对你有所帮助。
本文目录一览:- android – 哪一个最好计算两点之间的距离?(1084: 计算两点间的距离(多实例测试))
- android – 地理点之间的距离
- android – 如何找到两个地理点之间的距离?
- android – 如何通过latlng获得两点之间的距离?
- Android 百度地图获取两点之间的距离和推荐的驾车路线
android – 哪一个最好计算两点之间的距离?(1084: 计算两点间的距离(多实例测试))
我发现他们正在使用的一些链接
distanceto()和某处使用distanceBetween()计算.
哪个最好计算距离?
解决方法
它允许计算两个纬度经度点之间的距离:
该脚本使用“haversine”公式计算两点之间的大圆距离(即)地球表面上的最短距离.
var R = 6371; // Radius of the earth in km var dLat = (lat2-lat1).toRad(); // Javascript functions in radians var dLon = (lon2-lon1).toRad(); var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * Math.sin(dLon/2) * Math.sin(dLon/2); var c = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); var d = R * c; // distance in km.
android – 地理点之间的距离
地理位置是:
position1 = mapView.getProjection().fromPixels( (int) e.getX(),(int) e.getY());
而另一个
double lat = 35.1064; double lng = 22.556412; GeoPoint position2 = new GeoPoint((int)(lat * 1E6),(int)(lng * 1E6));
然后我创建了两个位置:
Location loc = new Location(""); loc.setLatitude(position1.getLatitudeE6()); loc.setLongitude(position1.getLongitudeE6()); Location loc2 = new Location(""); loc.setLatitude(position2.getLatitudeE6()); loc.setLongitude(position2.getLongitudeE6());
然后我计算距离:
float distance = loc.distanceto(loc2);
我围绕它:
Math.round(distance);
但我得到的结果如下:
1.4331783E7
我究竟做错了什么?
解决方法
/** * * @param lat1 Latitude of the First Location * @param lng1 Logitude of the First Location * @param lat2 Latitude of the Second Location * @param lng2 Longitude of the Second Location * @return distance between two lat-lon in float format */ public static float distFrom (float lat1,float lng1,float lat2,float 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 Float(dist * meterConversion).floatValue(); }
android – 如何找到两个地理点之间的距离?
double distance; Location locationA = new Location("point A"); locationA.setLatitude(latA); locationA.setLongitude(lngA); Location locationB = new Location("point B"); locationB.setLatitude(latB); LocationB.setLongitude(lngB); distance = locationA.distanceto(locationB);
上面的代码不工作,我作为距离得到0.0 Km?
同样在位置类的构造函数中,字符串提供程序是什么意思.
在上面的代码中,我使用的是PointA和PointB作为提供者.
为什么上面的代码不行?
先谢谢你.
logcat的
05-09 17:48:56.144:INFO / current loc(1573):lat 0.0 lng 0.0
05-09 17:48:56.155:INFO / checklocation loc(1573):lat 54.4288665 lng 10.169366
解决方法
更新:
如果您从GeoPoint得到纬度/纬度,那么它们是微观的.你必须乘以1e6.
android – 如何通过latlng获得两点之间的距离?
Fx我试过A(31.172740,115.0081630),然后B(30.6055980,114.3603140),结果是约3111km,但距离约134km.
我的代码是:
class btnListener implements OnClickListener{ public void onClick(View v) { lat_a=lat_A.getText().toString(); lng_a=lng_A.getText().toString(); lat_b=lat_B.getText().toString(); lng_b=lng_B.getText().toString(); double a1,n1,a2,n2; a1=30.6055980; a2=Double.parseDouble(lat_b); n2=Double.parseDouble(lng_b); double R=6371; double D=Math.acos(Math.sin(a1)*Math.sin(a2)+Math.cos(a1)*Math.cos(a2)*Math.cos(n2-n1)); Toast.makeText(getApplication(),"the distance is"+String.valueOf(D*R)+"km from A to B",Toast.LENGTH_SHORT).show(); } }
解决方法
public float distance (float lat_a,float lng_a,float lat_b,float lng_b ) { double earthRadius = 3958.75; double latDiff = Math.toradians(lat_b-lat_a); double lngDiff = Math.toradians(lng_b-lng_a); double a = Math.sin(latDiff /2) * Math.sin(latDiff /2) + Math.cos(Math.toradians(lat_a)) * Math.cos(Math.toradians(lat_b)) * Math.sin(lngDiff /2) * Math.sin(lngDiff /2); double c = 2 * Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); double distance = earthRadius * c; int meterConversion = 1609; return new Float(distance * meterConversion).floatValue(); }
如果你没有理解,please check this link,这里提供相同的代码.
Android 百度地图获取两点之间的距离和推荐的驾车路线
// 规划路线 Activity 实现 OnGetRoutePlanResultListener 接口
private RoutePlanSearch routePlanSearch;
// 这里传入 起点 LatLng 和终点的 LatLng
private void guiHua(LatLng start,LatLng end){
if (routePlanSearch==null) {
routePlanSearch=RoutePlanSearch.newInstance();
routePlanSearch.setOnGetRoutePlanResultListener(this);
}
DrivingRoutePlanOption option=new DrivingRoutePlanOption();
option.from(PlanNode.withLocation(start))
.to(PlanNode.withLocation(end));
routePlanSearch.drivingSearch(option);
}
/**
实现 OnGetRoutePlanResultListener 接口 重写这几个方法
*/
// 汽车
@Override
public void onGetBikingRouteResult(BikingRouteResult arg0) {
// TODO Auto-generated method stub
}
// 驾驶
@Override
public void onGetDrivingRouteResult(DrivingRouteResult result) {
// TODO Auto-generated method stub
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText (mContext, "抱歉,未找到结果", Toast.LENGTH_SHORT).show ();
}
if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息
// result.getSuggestAddrInfo()
return;
}
if (result != null&&result.error == ERRORNO.NO_ERROR) {
DrivingRouteOverlay overlay=null;
List<DrivingRouteLine>list=result.getRouteLines();
if (list.size()>0) {
// 获取驾车距离
double juli=(double)list.get(0).getDistance()/1000;
tv_juli.setText(juli+"km");
// 这里将第一条路线显示在地图上
overlay=new DrivingRouteOverlay(baiduMap);
overlay.setData(list.get(0));
overlay.addToMap();
overlay.zoomToSpan();
}
// 这里将所有路线显示在地图上
// for (DrivingRouteLine line:list) {
// overlay=new DrivingRouteOverlay(baiduMap);
// overlay.setData(line);
// overlay.addToMap();
// overlay.zoomToSpan();
// }
}
}
// 公交
@Override
public void onGetTransitRouteResult(TransitRouteResult arg0) {
// TODO Auto-generated method stub
}
// 步行
@Override
public void onGetWalkingRouteResult(WalkingRouteResult result) {
// TODO Auto-generated method stub
// 获取步行线路规划结果
if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText (mContext, "抱歉,未找到结果",
Toast.LENGTH_SHORT).show();
}
if (result.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {
// 起终点或途经点地址有岐义,通过以下接口获取建议查询信息
// result.getSuggestAddrInfo()
return;
}
if (result.error == SearchResult.ERRORNO.NO_ERROR) {
WalkingRouteOverlay overlay = new MyWalkingRouteOverlay(
baiduMap);
// 这里同上 (驾车)
baiduMap.setOnMarkerClickListener(overlay);
overlay.setData(result.getRouteLines().get(0));
overlay.addToMap();
overlay.zoomToSpan();
}
}
关于android – 哪一个最好计算两点之间的距离?和1084: 计算两点间的距离(多实例测试)的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android – 地理点之间的距离、android – 如何找到两个地理点之间的距离?、android – 如何通过latlng获得两点之间的距离?、Android 百度地图获取两点之间的距离和推荐的驾车路线的相关知识,请在本站寻找。
本文标签: