随着即时配送市场的快速发展,跑腿配送已经成为本地生活服务平台的重要组成部分。无论是代买、代送、代取,还是文件配送、生鲜配送、同城急送,都离不开高效的配送体系支撑。
对于一个成熟的跑腿配送平台来说,仅仅拥有订单管理功能还远远不够。平台还需要实现地图定位、路线规划、骑手导航以及第三方配送服务对接等能力,从而提升配送效率和用户体验。
那么,跑腿配送系统搭建过程中,如何实现地图导航与第三方配送能力的接入呢?
跑腿配送系统为什么需要地图能力
在跑腿业务中,地图服务几乎贯穿整个订单流程。
例如:
- 用户定位当前位置
- 用户选择收货地址
- 骑手实时定位
- 计算配送距离
- 规划配送路线
- 实时查看配送轨迹
一个订单从创建到完成,都需要地图服务提供支持。
典型业务流程如下:
用户下单
│
▼
获取起点位置
│
▼
获取终点位置
│
▼
计算配送距离
│
▼
智能派单
│
▼
骑手导航配送
│
▼
订单完成
因此地图服务是跑腿配送系统的核心基础能力之一。
地图服务常见接入方案
目前国内主流地图服务商主要包括:
- 高德地图
- 腾讯地图
- 百度地图
这些地图平台通常提供:
- 地理编码
- 逆地理编码
- 地点搜索
- 路径规划
- 距离计算
- 实时定位
在实际项目中,开发者可以根据业务需求选择适合的平台。
用户地址选择实现
用户下单时,需要快速选择收货地址。
小程序获取位置示例:
wx.chooseLocation({
success(res) {
console.log(res.name)
console.log(res.address)
console.log(res.latitude)
console.log(res.longitude)
}
})
返回结果:
{
"name":"万岳科技",
"address":"科技园A座",
"latitude":39.9087,
"longitude":116.3975
}
系统保存经纬度后,后续可用于距离计算和配送规划。
配送距离计算
当用户提交订单后,系统需要计算配送距离。
常见计算方式:
直线距离计算
function getDistance(
lat1,
lng1,
lat2,
lng2
){
const R = 6371;
const dLat =
(lat2-lat1) * Math.PI/180;
const dLng =
(lng2-lng1) * Math.PI/180;
const a =
Math.sin(dLat/2) *
Math.sin(dLat/2) +
Math.cos(lat1*Math.PI/180) *
Math.cos(lat2*Math.PI/180) *
Math.sin(dLng/2) *
Math.sin(dLng/2);
return R * 2 *
Math.atan2(
Math.sqrt(a),
Math.sqrt(1-a)
);
}
计算结果可作为:
- 配送费计算依据
- 派单依据
- 服务范围判断依据
配送费自动计算
根据距离动态计算配送费用。
示例逻辑:
public BigDecimal calcFee(
Double distance){
BigDecimal baseFee =
new BigDecimal("5");
if(distance <= 3){
return baseFee;
}
BigDecimal extra =
new BigDecimal(distance - 3)
.multiply(
new BigDecimal("1.5")
);
return baseFee.add(extra);
}
规则示例:
3公里以内:5元
超过3公里:
每公里增加1.5元
实现配送费用自动计算。
骑手实时定位
骑手配送过程中,需要持续上传当前位置。
APP定位示例:
setInterval(() => {
uni.getLocation({
type:'gcj02',
success(res){
uploadLocation(
res.latitude,
res.longitude
)
}
})
},30000)
每30秒上传一次位置。
服务端保存骑手轨迹。
@PostMapping("/rider/location")
public Result upload(
Long riderId,
Double lat,
Double lng){
riderLocationService
.save(
riderId,
lat,
lng
);
return Result.success();
}
实现实时位置更新。
订单轨迹实时展示
用户可以查看配送进度。
前端地图展示:
const markers = [
{
id:1,
latitude:39.9087,
longitude:116.3975
}
]
地图页面动态刷新骑手位置。
展示效果:
商家位置
│
▼
骑手当前位置
│
▼
用户位置
让用户实时了解配送状态。
智能派单逻辑
订单创建后,系统需要寻找附近骑手。
查询附近骑手:
SELECT *
FROM rider
WHERE online_status = 1
ORDER BY distance ASC
LIMIT 10;
派单流程:
订单创建
│
▼
查询附近骑手
│
▼
距离排序
│
▼
发送抢单通知
│
▼
骑手接单
提升订单响应效率。
对接第三方配送平台
很多跑腿平台初期并不会自建骑手团队。
而是接入第三方配送服务。
常见模式:
- 同城急送
- 众包配送
- 专送配送
- 聚合配送
平台下单后自动推送配送订单。
流程如下:
用户下单
│
▼
平台生成订单
│
▼
调用第三方配送接口
│
▼
配送公司接单
│
▼
骑手取货
│
▼
配送完成
实现快速履约。
第三方配送接口调用示例
创建配送订单:
@PostMapping("/delivery/create")
public Result createDelivery(
Long orderId){
DeliveryOrder order =
deliveryService
.build(orderId);
String result =
thirdDeliveryApi
.create(order);
return Result.success(result);
}
请求参数示例:
{
"orderNo":"PT20260623001",
"senderName":"商家A",
"receiverName":"用户B",
"receiverPhone":"138****8888",
"receiverAddress":"北京市朝阳区",
"goodsWeight":2
}
配送平台收到后自动安排骑手。
配送状态同步
第三方配送平台会持续回调订单状态。
例如:
{
"orderNo":"PT20260623001",
"status":"DELIVERING"
}
服务端接收回调:
@PostMapping("/delivery/callback")
public Result callback(
@RequestBody
DeliveryCallback callback){
orderService.updateStatus(
callback.getOrderNo(),
callback.getStatus()
);
return Result.success();
}
实现订单状态同步更新。
WebSocket推送配送动态
订单状态发生变化时。
系统主动通知用户。
WebSocketServer.sendMessage(
userId,
"骑手已到店取货"
);
用户端实时接收。
socket.onMessage((res)=>{
console.log(res.data)
})
实现配送状态即时提醒。
多端统一管理架构
现代跑腿配送平台通常采用统一架构。
用户小程序
│
用户APP
│
H5网页
│
骑手端APP
│
管理后台
│
统一业务接口
│
地图服务平台
│
第三方配送平台
│
数据库中心
通过统一接口层管理订单、配送和用户数据。

结语
在跑腿配送系统搭建过程中,地图导航与第三方配送能力已经成为平台不可或缺的重要组成部分。地图服务负责位置获取、距离计算、路线规划和实时轨迹展示,而第三方配送平台则帮助企业快速构建配送能力,降低运营成本。
对于正在搭建跑腿配送平台的企业来说,采用“地图服务 + 智能派单 + 第三方配送 + 实时消息通知”的技术架构,不仅能够提升配送效率,也能够优化用户体验,为平台后续扩展同城配送、即时零售、外卖跑腿等业务提供稳定支撑。