需求描述
新公司是做新零售的,主要是做生鲜这一块,电子围栏对新零售来说是一把利器。所以刚到公司,就接到做电子围栏的需求。而其中有一个需求是,向用户展现订单的实时配送轨迹。
需求分析
接到这个需求的时候,再回想与领导与交流,大致可以将需求具体分为以下两点:
1、在地图上展示最优规划路径;
2、将配送员的实时上传的位置,显示到规划好的路径上。
实现思路
第一点其实是很好实现的,通过调用类似百度高德地图开放平台公开的api就可以拿到完整的路线数据。需要重点考虑的是在第二点需求的实现上,可能大家会有一些疑问,把配送员上传的位置点打到规划路线上去不就行了吗?
一开始我也以为这么顺利的就完成了,但是后来我又想到,配送员如果按照规划的路线来走,那直接将配送员实时位置打到规划路线上是没问题的。那如果,配送人员没有按照规划的路径走,自己重新规划更合理的路线,那么此时简单的将位置打到规划路线上,那结果必定是偏离的。
所以,直接打点方法不可取,必须将配送员的实时位置纠正回到规划路线上。如何纠正呢?
思路一:将配送员实时位置到规划路径上最近的一个点作为纠正后的点展示给用户。类似下图的效果。
想到这个思路的时候,我觉得应该可以解决了,但是在实现的时候又想到了另外一种情况。假如配送员,同时手上有2个单,先送收货地址2,再送收货地址1,那么就会出现下图的情况,在某个时间段配送员到规划路径的最近的点都是收货地址,那么这可能会造成不好的用户体验(为什么显示到了,但是却过了20分钟才收到)。配送人员不按规划路径配送的情况其实经常会发现。
第一个思路夭折的情况 头大了一个小时之后,我想到了另外一种纠正的思路。
思路二:1、获取配送员实时位置到收货地址的实际距离,这个通过调取api可以获取到。
2、判断该距离是否大于规划路径的长度,是的话,直接返回收货地址位置点作为展示点。如图所示。
3、如果该距离小于规划路径的长度,那么获取距离与规划路径长度的比例,按照(1-比例)截取规划路径,然后再获取截取后的路径的起点,作为展示点。如下图所示
思路2-配送员到收获地址距离小于规划路径的长度第二种思路,可以解决第一种思路出现的问题。第二种思路目前也还没想到比较特殊的情况,所以目前是采用第二种思路来实现,底层引擎是postgis。欢迎网友们提出别的想法,哈哈。
网友评论