滴滴行程计算算法

滴滴的安卓和ios客户端好像都是socket长连接不断发送地理位置的吧。

不知道开始行程后,计费是如何算的?一次次的地理位置上传算费?

如果中途手机没电了,没有上传数据,那这笔订单怎么算轨迹?怎么算费?

阅读 6.3k
5 个回答

哈哈这个很简单,你的手机没电了不是还有司机端吗。
另外,行车过程中,确实会不断上传坐标,但是坐标有精度问题,GPS信号不好的地方精度很差。
我不是滴滴的开发,以下仅为猜测:

影响最终价格的几个主要变量:里程行程时间时段价,可以看到,只有里程是计算难点

计算里程方法猜测有两种:

  1. 使用起点坐标 + 终点坐标 通过地图计算出合理的路径,然后通过路径计得到行程长度
    计算行程的时候应该只会用很小的一部分
  2. 所有精度符合要求的坐标采样,做为路径计算的途经点,然后通过跟方法一一样的方法获取到长度

两种方法个有优缺:方法1计算速度快,但是结果不够精确。方法2计算结果更接近实际的里程,但是运算速度更慢。

如果滴滴想讨好用户,会选择方案1,这样司机就算绕路也只是延长了行程时间,而不会增加里程
如果滴滴想讨好司机,会选择方案2,这样计算的结果会跟接近传统的士的打表计费

因为你在叫车的时候 说了 从哪出发到达哪里!
如果你用过各种地图的api你就知道,接口是返回最短、最优路线的,以及这条路线的长度!

当然 人家也有可能有自己的其它技术!!以上仅仅是如果是我 我会怎么做!

一般你在下单的时候就有一个初步报价,在你开始行程之后有实时的计费,而且你手机没电了 还有司机的手机呢,订单是在终端一直有你在你手机开机之后再支付就行了

里程计算使用的是司机端的gps坐标信息。订单开始后会定时上传司机坐标的。
一般会有一些滤点算法,防止“漂点”。
里程就是根据这些坐标点计算出来的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题