1
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user