三方运单计价各管各,不在以美团为基准,创建运单只有一个限制条件,最高运费:maxDeliveryFee
优化美团运费计算,两点距离用高德API实际计算行走距离
This commit is contained in:
@@ -208,6 +208,16 @@ func EarthDistance(lng1, lat1, lng2, lat2 float64) float64 {
|
||||
return dist * radius
|
||||
}
|
||||
|
||||
// 返回结果单元为公里
|
||||
func WalkingDistance(lng1, lat1, lng2, lat2 float64) (distance float64) {
|
||||
if distance = api.AutonaviAPI.WalkingDistance(lng1, lat1, lng2, lat2); distance == 0 {
|
||||
distance = EarthDistance(lng1, lat1, lng2, lat2) * 1.4
|
||||
} else {
|
||||
distance /= 1000
|
||||
}
|
||||
return distance
|
||||
}
|
||||
|
||||
func StandardCoordinate2Int(value float64) int {
|
||||
return int(math.Round(value * 1000000))
|
||||
}
|
||||
@@ -743,3 +753,16 @@ func GetShortNameFromURL(strURL string) (shortName string) {
|
||||
}
|
||||
return shortName
|
||||
}
|
||||
|
||||
// 阶梯计算总量
|
||||
// stageList是一个二维数组,第一维要求是从大到小排序的,第二维是级别及单位代价
|
||||
func CalcStageValue(stageList [][]float64, totalVolume float64) (value float64) {
|
||||
for _, v := range stageList {
|
||||
if totalVolume > v[0] {
|
||||
used := math.Ceil(totalVolume - v[0])
|
||||
value += v[1] * used
|
||||
totalVolume -= used
|
||||
}
|
||||
}
|
||||
return value
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user