GVKun编程网logo

android – 哪一个最好计算两点之间的距离?(1084: 计算两点间的距离(多实例测试))

8

本文将分享android–哪一个最好计算两点之间的距离?的详细内容,并且还将对1084:计算两点间的距离(多实例测试)进行详尽解释,此外,我们还将为大家带来关于android–地理点之间的距离、and

本文将分享android – 哪一个最好计算两点之间的距离?的详细内容,并且还将对1084: 计算两点间的距离(多实例测试)进行详尽解释,此外,我们还将为大家带来关于android – 地理点之间的距离、android – 如何找到两个地理点之间的距离?、android – 如何通过latlng获得两点之间的距离?、Android 百度地图获取两点之间的距离和推荐的驾车路线的相关知识,希望对你有所帮助。

本文目录一览:

android – 哪一个最好计算两点之间的距离?(1084: 计算两点间的距离(多实例测试))

android – 哪一个最好计算两点之间的距离?(1084: 计算两点间的距离(多实例测试))

我试图计算谷歌地图中两点之间的距离.
我发现他们正在使用的一些链接
distanceto()和某处使用distanceBetween()计算.
哪个最好计算距离?

解决方法

这 link可能对您有所帮助.

它允许计算两个纬度经度点之间的距离:

该脚本使用“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 – 地理点之间的距离

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 – 如何找到两个地理点之间的距离?

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

解决方法

尝试 Location.distanceBetween(..)

更新:

如果您从GeoPoint得到纬度/纬度,那么它们是微观的.你必须乘以1e6.

android – 如何通过latlng获得两点之间的距离?

android – 如何通过latlng获得两点之间的距离?

我想通过latlng从A到B的距离.当我运行我的应用程序与以下代码,它返回一个错误的结果.
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 百度地图获取两点之间的距离和推荐的驾车路线

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 百度地图获取两点之间的距离和推荐的驾车路线的相关知识,请在本站寻找。

本文标签: