开车时计算android中两个位置之间的距离

Posted

技术标签:

【中文标题】开车时计算android中两个位置之间的距离【英文标题】:Calculating distance between two locations in android while driving 【发布时间】:2016-11-15 01:35:09 【问题描述】:

我开发了一个类似 uber 的应用程序,但由于从接送地点到旅行完成地点的距离不正确,我在计算正确票价时遇到了问题。 我做了什么和在做什么:

第一种方法

我正在获取驾驶员当前位置(旅行开始时保存位置)和结束位置(旅行完成时)之间的距离 像这样。

distanceInMeters = locationChanged.getmCurrentlocation().distanceTo(loc_pick_up);

但是这段代码的问题是。如果乘客上车地点(旅行开始的地方)和下车地点(旅行结束的地方)相同,距离为零。

第二种方法

现在我每分钟都在调用一个方法。第一次执行时。计算接送地点(从旅行开始的地方)和当前位置(1分钟后的位置)之间的距离,并将差异保存在变量中。并且比当前位置成为拾取位置以及再次执行方法时。它计算pickuplocation和当前位置之间的距离(1分钟之前和之后的位置之间)并将结果添加到已经保存的距离中。

private void locationDistanceHandler() 

    handlerLocation = new Handler();
    runnableCode = new Runnable() 
        @Override
        public void run() 

            Location loc_pick_up = new Location("");
            if (!pick_up_value_used) 
                loc_pick_up.setLatitude(pickUpLatLng.latitude);
                loc_pick_up.setLongitude(pickUpLatLng.longitude);
                locationChanged.setmPickUpLocation(locationChanged.getmCurrentlocation());
                pick_up_value_used = true;
             else 
                loc_pick_up.setLatitude(locationChanged.getmPickUpLocation().getLatitude());
                loc_pick_up.setLongitude(locationChanged.getmPickUpLocation().getLongitude());
            
            Log.d(Constants.LOG, "handle location called:" + distanceInMeters);
            distanceInMeters = distanceInMeters + locationChanged.getmCurrentlocation().distanceTo(loc_pick_up);
            handlerLocation.postDelayed(this, 60000);
        
    ;
    handlerLocation.postDelayed(runnableCode, 60000);

但这并不准确。今天我在 18 分钟内从办公室到家 20 公里。但是这种方法计算的距离是6.8km。

请向我建议一种更好的方法或任何有效的源代码示例。所以我可以解决这个问题。

【问题讨论】:

【参考方案1】:
float[] results=new float[5];
                loc_pick_up.distanceBetween(startLatitude,startLongitude, endLatitude, endLongitude,results);
                String calculatedDistance=results[0];
                System.out.println("Distance between point A and point B are: " + calulcatedDistance);

【讨论】:

你确定吗?我正在使用距离。这两者有什么区别? 据我所知,distanceTo 用于计算从您当前位置到目的地的距离。 DistanceBetween 用于位置 A 和位置 B 之间的距离。但是您也可以将当前位置作为起点,由于某种原因,我通常很难准确地使用 distanceTo。

以上是关于开车时计算android中两个位置之间的距离的主要内容,如果未能解决你的问题,请参考以下文章

仅在满足条件时计算 udf [重复]

在两个摄像机之间进行旋转和平移时计算单应性

codeforces 761B Dasha and friends

两个经纬度算距离公式 方法是啥

获取两个位置 android google maps 之间的距离并画线

提升进程间:在遍历从结构中引用对象的映射时计算字符串变量