48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package autonavi
|
|
|
|
import (
|
|
"fmt"
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"strings"
|
|
)
|
|
|
|
// GetCyclingPlan 获取骑手的骑行计划
|
|
func (a *API) GetCyclingPlan(origin, destination string) ([]string, int64, int64, error) {
|
|
param := map[string]interface{}{
|
|
"key": a.key,
|
|
"origin": origin,
|
|
"destination": destination,
|
|
"show_fields": "polyline",
|
|
}
|
|
result, err := a.AccessAPI3("direction/electrobike", param)
|
|
if err != nil {
|
|
return nil, 0, 0, err
|
|
}
|
|
var data *CyclingPlan
|
|
if err := utils.Map2StructByJson(result, &data, false); err != nil {
|
|
return nil, 0, 0, err
|
|
}
|
|
|
|
if data.Status != "1" && data.Info != "ok" {
|
|
return nil, 0, 0, fmt.Errorf(data.Infocode)
|
|
}
|
|
|
|
polyLineList := make([]string, 0, 0) // 坐标
|
|
var distance int64 = 0 // 距离 4329
|
|
var duration int64 = 0 // 时间 978
|
|
for _, v := range data.Route.Paths {
|
|
for _, v2 := range v.Steps {
|
|
if v2.Polyline != "" {
|
|
polyLine := strings.Split(v2.Polyline, ";")
|
|
if polyLine != nil {
|
|
polyLineList = append(polyLineList, polyLine...)
|
|
}
|
|
}
|
|
}
|
|
distance = utils.Str2Int64(v.Distance)
|
|
duration = utils.Str2Int64(v.Duration) + 300
|
|
}
|
|
|
|
return polyLineList, distance, duration, nil
|
|
}
|