OLA 和 UBER 如何计算其计费距离

Posted

技术标签:

【中文标题】OLA 和 UBER 如何计算其计费距离【英文标题】:How the OLA and UBER calculating the distance for their billing 【发布时间】:2015-12-28 03:39:15 【问题描述】:

我想开发一个小应用程序来计算旅行时的距离。 我已经尝试了下面的解决方案,基于android的GPS,但结果是错误的。

请帮帮我

我的代码:

locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 10, this);
  public void onLocationChanged(Location location) 

    if ((location != null)) 
        if (location.getAccuracy()<50 && location.getSpeed()>0) 
            onlocationChangeMethod(location);
            lastlatitude = location.getLatitude();
            lastlongitude = location.getLongitude();

        

    

public void onlocationChangeMethod(Location location)
    if (lastlatitude > 0 ) 
            float[] results = new float[5];
            location.distanceBetween(location.getLatitude(), location.getLongitude(),
                    lastlatitude, lastlongitude, results);
    

【问题讨论】:

你是如何计算距离的?你能给我们看看代码吗? 感谢您的回复。我已经添加了我的代码。 我认为distanceBetween 方法给出了直线距离。对吗? 是的,它会给出直线距离。 所以,您计算的是“航线距离”,而不是实际跟随路径(总是更大)。 【参考方案1】:

只有当您以非常频繁的间隔获取 gps 位置时,距离才能准确。因此,一种方法是根据 gps 坐标偏移计算距离。这不可能是 100% 准确的

还听说 Ola/Uber 仪表板内部装有内部跟踪设备,可以准确跟踪车队并与他们的服务器通信(跟踪设备带有 sim,以便他们可以与拥有网关的服务器通信安装)。这意味着,如果 Ola 和 Uber 的距离如此准确,他们可能会依赖安装在汽车仪表板内的跟踪设备并通过服务器获取信息。

【讨论】:

感谢您的信息。但是 GPS 有时无法连接,并且每次都给出错误的距离。例如,如果我行驶 2 公里,那么 400 米的差异即将到来。 请检查我的编辑。他们也使用内部车队跟踪设备。 谢谢阿姨。它很有帮助。【参考方案2】:

全球定位系统: 以 A 为起点。

每 X 秒(比如 10 秒)不断添加 2 个点(A 和当前位置)之间的 GPS 距离。检查 Android 位置。distanceTodistanceBetweenCheck My Tracks app, 它是开源的。 GPS 在室内不可用,如果用户非常频繁地改变方向会出错(每 1-2 秒读取一次)

要获得准确的距离,请使用您所在位置的纬度和经度调用 Google WebService,它将返回非常接近准确的距离

private String getDistanceOnRoad(double latitude, double longitude,
            double prelatitute, double prelongitude) 
        String result_in_kms = "";
        String url = "http://maps.google.com/maps/api/directions/xml?origin="
                + latitude + "," + longitude + "&destination=" + prelatitute
                + "," + prelongitude + "&sensor=false&units=metric";
        String tag[] =  "text" ;
        HttpResponse response = null;
        try 
            HttpClient httpClient = new DefaultHttpClient();
            HttpContext localContext = new BasicHttpContext();
            HttpPost httpPost = new HttpPost(url);
            response = httpClient.execute(httpPost, localContext);
            InputStream is = response.getEntity().getContent();
            DocumentBuilder builder = DocumentBuilderFactory.newInstance()
                    .newDocumentBuilder();
            Document doc = builder.parse(is);
            if (doc != null) 
                NodeList nl;
                ArrayList args = new ArrayList();
                for (String s : tag) 
                    nl = doc.getElementsByTagName(s);
                    if (nl.getLength() > 0) 
                        Node node = nl.item(nl.getLength() - 1);
                        args.add(node.getTextContent());
                     else 
                        args.add(" - ");
                    
                
                result_in_kms = String.format("%s", args.get(0));
            
         catch (Exception e) 
            e.printStackTrace();
        
        return result_in_kms;
    

参考:Get the distance between two locations in android?

【讨论】:

感谢您的信息。我正在使用相同的方法,但距离错误。我要求每 10m 更新一次位置,我正在添加该距离。但这个距离是错误的。 谢谢。我也需要应用程序在没有互联网的情况下工作。有时 GPS 坐标离我现在的位置很远。在这种情况下距离是错误的 @MallikarjunP 您的出租车应用程序运行良好吗?现在? 我从来没有为出租车应用程序编写过代码,但知道它是如何工作的......试一试

以上是关于OLA 和 UBER 如何计算其计费距离的主要内容,如果未能解决你的问题,请参考以下文章

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

如何计算两对坐标(纬度/经度)之间的距离

从当前位置IOS查找自动完成结果位置的距离

如何给 sns.clustermap 一个预先计算的距离矩阵?

如何计算图片内部的特定距离?

如何计算二维矩阵之间的距离