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 == "" {
originalData, distance, durationTime, err := GetCyclingLine(sLng, sLat, uLng, uLat)
globals.SugarLogger.Debugf("======originalData := %d", len(originalData))
if err == nil && len(originalData) != model.NO {
v.OriginalData = strings.Join(originalData, ";")
v.Distance = distance
@@ -731,8 +732,6 @@ func GetCyclingLine(sLng, sLat, uLng, uLat float64) (polyLineList []string, dist
return nil, 0, 0, err
}
data, err := api.BaiDuNaviAPI.DirectionLiteRide(coords)
globals.SugarLogger.Debugf("======data := %s", utils.Format4Output(data, false))
globals.SugarLogger.Debugf("======data := %v", err)
if err != nil {
return nil, 0, 0, err
}
@@ -744,37 +743,71 @@ func GetCyclingLine(sLng, sLat, uLng, uLat float64) (polyLineList []string, dist
return nil, 0, 0, err
}
//polyLine := make([]string, 0, 0)
polyLine := make([]string, 0, 0)
if path != nil && len(path.Routes) != 0 {
distance = int64(path.Routes[0].Distance) // 距离
duration = int64(path.Routes[0].Duration) // 时间
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)
//if err != nil {
// polyLineList = polyLine
//}
globals.SugarLogger.Debugf("polyLine========================%d", len(polyLine))
polyLineList = baiDuCoord2Gaode2(polyLine)
globals.SugarLogger.Debugf("polyLineList========================%d", len(polyLineList))
if len(polyLineList) == 0 || polyLineList == nil {
polyLineList = polyLine
}
return
}
// 美团只认识高德地图坐标点,的转一下
func baiDuCoord2Gaode(baiduCoordinat []string) ([]string, error) {
globals.SugarLogger.Debugf("------------baiduCoordinat %s", utils.Format4Output(baiduCoordinat, false))
coords, err := api.BaiDuNaviAPI.BatchCoordinateConvertBai2Gao(baiduCoordinat, baidunavi.CoordSysBaidu2Gaode)
globals.SugarLogger.Debugf("------------coords %s", utils.Format4Output(coords, false))
globals.SugarLogger.Debugf("------------coords %v", err)
if err != nil {
return nil, err
count := len(baiduCoordinat) / 100
if i := len(baiduCoordinat) % 100; i != 0 {
count += 1
}
gaoCoordinat := make([]string, 0, 0)
for _, v := range coords {
gaoCoordinat = append(gaoCoordinat, fmt.Sprintf("%.6f,%.6f", v.Lng, v.Lat))
for i := 1; i <= count; i++ {
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
}
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
}