This commit is contained in:
邹宗楠
2024-07-04 17:57:30 +08:00
parent 0b7b24dde2
commit 941544a209

View File

@@ -632,6 +632,7 @@ func GetSToURidingDistance2(sLng, sLat, uLng, uLat float64, orderId string) (way
// 获取骑行路线图 // 获取骑行路线图
if v.OriginalData == "" { if v.OriginalData == "" {
originalData, distance, durationTime, err := GetCyclingLine(sLng, sLat, uLng, uLat) originalData, distance, durationTime, err := GetCyclingLine(sLng, sLat, uLng, uLat)
globals.SugarLogger.Debugf("======originalData := %d", len(originalData))
if err == nil && len(originalData) != model.NO { if err == nil && len(originalData) != model.NO {
v.OriginalData = strings.Join(originalData, ";") v.OriginalData = strings.Join(originalData, ";")
v.Distance = distance v.Distance = distance
@@ -731,8 +732,6 @@ func GetCyclingLine(sLng, sLat, uLng, uLat float64) (polyLineList []string, dist
return nil, 0, 0, err return nil, 0, 0, err
} }
data, err := api.BaiDuNaviAPI.DirectionLiteRide(coords) data, err := api.BaiDuNaviAPI.DirectionLiteRide(coords)
globals.SugarLogger.Debugf("======data := %s", utils.Format4Output(data, false))
globals.SugarLogger.Debugf("======data := %v", err)
if err != nil { if err != nil {
return nil, 0, 0, err return nil, 0, 0, err
} }
@@ -744,37 +743,71 @@ func GetCyclingLine(sLng, sLat, uLng, uLat float64) (polyLineList []string, dist
return nil, 0, 0, err return nil, 0, 0, err
} }
//polyLine := make([]string, 0, 0) polyLine := make([]string, 0, 0)
if path != nil && len(path.Routes) != 0 { if path != nil && len(path.Routes) != 0 {
distance = int64(path.Routes[0].Distance) // 距离 distance = int64(path.Routes[0].Distance) // 距离
duration = int64(path.Routes[0].Duration) // 时间 duration = int64(path.Routes[0].Duration) // 时间
for _, v := range path.Routes[0].Steps { for _, v := range path.Routes[0].Steps {
polyLineList = append(polyLineList, strings.Split(v.Path, ";")...) polyLine = append(polyLine, strings.Split(v.Path, ";")...)
} }
} }
//polyLineList, err = baiDuCoord2Gaode(polyLine) globals.SugarLogger.Debugf("polyLine========================%d", len(polyLine))
//if err != nil { polyLineList = baiDuCoord2Gaode2(polyLine)
// polyLineList = polyLine globals.SugarLogger.Debugf("polyLineList========================%d", len(polyLineList))
//} if len(polyLineList) == 0 || polyLineList == nil {
polyLineList = polyLine
}
return return
} }
// 美团只认识高德地图坐标点,的转一下 // 美团只认识高德地图坐标点,的转一下
func baiDuCoord2Gaode(baiduCoordinat []string) ([]string, error) { func baiDuCoord2Gaode(baiduCoordinat []string) ([]string, error) {
globals.SugarLogger.Debugf("------------baiduCoordinat %s", utils.Format4Output(baiduCoordinat, false)) count := len(baiduCoordinat) / 100
coords, err := api.BaiDuNaviAPI.BatchCoordinateConvertBai2Gao(baiduCoordinat, baidunavi.CoordSysBaidu2Gaode) if i := len(baiduCoordinat) % 100; i != 0 {
globals.SugarLogger.Debugf("------------coords %s", utils.Format4Output(coords, false)) count += 1
globals.SugarLogger.Debugf("------------coords %v", err)
if err != nil {
return nil, err
} }
gaoCoordinat := make([]string, 0, 0) gaoCoordinat := make([]string, 0, 0)
for _, v := range coords { for i := 1; i <= count; i++ {
gaoCoordinat = append(gaoCoordinat, fmt.Sprintf("%.6f,%.6f", v.Lng, v.Lat)) var discordant = make([]string, 0, 0)
if i == count {
discordant = append(discordant, baiduCoordinat[(i-1)*100:]...)
} else {
discordant = append(discordant, baiduCoordinat[(i-1)*100:i*100]...)
}
coords, err := api.BaiDuNaviAPI.BatchCoordinateConvertBai2Gao(discordant, baidunavi.CoordSysBaidu2Gaode)
if err != nil {
globals.SugarLogger.Debugf("百度坐标转换异常:%v", err)
break
}
for _, v := range coords {
gaoCoordinat = append(gaoCoordinat, fmt.Sprintf("%.6f,%.6f", v.Lng, v.Lat))
}
}
if len(gaoCoordinat) == 0 || len(gaoCoordinat) != len(baiduCoordinat) {
} }
return gaoCoordinat, nil return gaoCoordinat, nil
} }
func baiDuCoord2Gaode2(baiduCoordinat []string) []string {
gaoCoordinat := make([]string, 0, 0)
for _, v := range baiduCoordinat {
var XPI = math.Pi * 3000.0 / 180.0
coords := strings.Split(v, ",")
var x = utils.Str2Float64(coords[0]) - 0.0065
var y = utils.Str2Float64(coords[1]) - 0.006
var z = math.Sqrt(x*x+y*y) - 0.00002*math.Sin(y*XPI)
var theta = math.Atan2(y, x) - 0.000003*math.Cos(x*XPI)
var gg_lng = z * math.Cos(theta)
var gg_lat = z * math.Sin(theta)
gaoCoordinat = append(gaoCoordinat, fmt.Sprintf("%.6f,%.6f", gg_lng, gg_lat))
}
return gaoCoordinat
}