This commit is contained in:
邹宗楠
2024-07-04 15:22:17 +08:00
parent 88c315d874
commit b88cfa29d0
3 changed files with 103 additions and 62 deletions

View File

@@ -37,6 +37,9 @@ const (
CoordSysWGS84 = 1 // GPS设备获取的角度坐标WGS84坐标 CoordSysWGS84 = 1 // GPS设备获取的角度坐标WGS84坐标
CoordSysGCJ02 = 3 // google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标国测局GCJ02坐标 CoordSysGCJ02 = 3 // google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标国测局GCJ02坐标
CoordSysBaiDu = 5 // 百度地图采用的经纬度坐标 CoordSysBaiDu = 5 // 百度地图采用的经纬度坐标
CoordSysGaoDe2Baidu = "1" // 高德坐标转百度坐标
CoordSysBaidu2Gaode = "5" // 百度坐标转高德坐标
) )
const ( const (
@@ -160,7 +163,7 @@ func genGetURL(baseURL, apiStr string, params map[string]interface{}) string {
return baseURL + queryString return baseURL + queryString
} }
func (a *API) AccessAPI(apiStr string, params map[string]interface{}) (retVal interface{}, err error) { /*func (a *API) AccessAPI(apiStr string, params map[string]interface{}) (retVal interface{}, err error) {
apiStr += "/" apiStr += "/"
params2 := utils.MergeMaps(utils.Params2Map("ak", a.ak, "output", "json"), params) params2 := utils.MergeMaps(utils.Params2Map("ak", a.ak, "output", "json"), params)
params2[signKey] = a.signParams(apiStr, params2) params2[signKey] = a.signParams(apiStr, params2)
@@ -191,52 +194,7 @@ func (a *API) AccessAPI(apiStr string, params map[string]interface{}) (retVal in
} }
}) })
return retVal, err return retVal, err
} }*/
// BatchCoordinateConvert 坐标转换
func (a *API) BatchCoordinateConvert(coords []*Coordinate, fromCoordSys, toCoordSys int) (outCoords []*Coordinate, err error) {
if fromCoordSys == toCoordSys {
return coords, nil
}
var coordsStrList []string
for _, v := range coords {
coordsStrList = append(coordsStrList, fmt.Sprintf("%.6f,%.6f", v.Lng, v.Lat))
}
params := url.Values{
"coords": []string{strings.Join(coordsStrList, ";")},
"from": []string{utils.Int2Str(fromCoordSys)},
"to": []string{utils.Int2Str(toCoordSys)},
}
result, err := a.AccessAPI2("geoconv/v1/", params)
if err == nil {
err = utils.Map2StructByJson(result[resultKey], &outCoords, false)
}
return outCoords, err
}
func (a *API) DirectionLiteRide(coords []*Coordinate) (retVal interface{}, err error) {
var (
sCoords string
uCoords string
apiStr = "directionlite/v1/riding"
)
sCoords = utils.Float64ToStr(coords[0].Lat) + "," + utils.Float64ToStr(coords[0].Lng)
uCoords = utils.Float64ToStr(coords[1].Lat) + "," + utils.Float64ToStr(coords[1].Lng)
param := url.Values{
"origin": []string{sCoords},
"destination": []string{uCoords},
}
resp, err := a.AccessAPI2(apiStr, param)
if err == nil {
return resp[resultKey], nil
}
return nil, nil
}
func (a *API) AccessAPI2(apiStr string, param url.Values) (retVal map[string]interface{}, err error) { func (a *API) AccessAPI2(apiStr string, param url.Values) (retVal map[string]interface{}, err error) {
@@ -259,15 +217,10 @@ func (a *API) AccessAPI2(apiStr string, param url.Values) (retVal map[string]int
} }
resp, err1 := http.Get(request.String()) resp, err1 := http.Get(request.String())
//err1 = errors.New("测试退出退出")
//defer resp.Body.Close()
body, err2 := ioutil.ReadAll(resp.Body) body, err2 := ioutil.ReadAll(resp.Body)
if err1 != nil || err2 != nil { if err1 != nil || err2 != nil {
continue continue
} }
//result := string(body)
//result := map[string]interface{}{}
err = json.Unmarshal(body, &retVal) err = json.Unmarshal(body, &retVal)
if err == nil { if err == nil {
return retVal, nil return retVal, nil
@@ -275,3 +228,84 @@ func (a *API) AccessAPI2(apiStr string, param url.Values) (retVal map[string]int
} }
return nil, errors.New("所有百度应用额度均用完") return nil, errors.New("所有百度应用额度均用完")
} }
// BatchCoordinateConvert 坐标转换
//func (a *API) BatchCoordinateConvert(coords []*Coordinate, fromCoordSys, toCoordSys int) (outCoords []*Coordinate, err error) {
// if fromCoordSys == toCoordSys {
// return coords, nil
// }
// var coordsStrList []string
// for _, v := range coords {
// coordsStrList = append(coordsStrList, fmt.Sprintf("%.6f,%.6f", v.Lng, v.Lat))
// }
//
// params := url.Values{
// "coords": []string{strings.Join(coordsStrList, ";")},
// "from": []string{utils.Int2Str(fromCoordSys)},
// "to": []string{utils.Int2Str(toCoordSys)},
// }
//
// result, err := a.AccessAPI2("geoconv/v1/", params)
// if err == nil {
// err = utils.Map2StructByJson(result[resultKey], &outCoords, false)
// }
// return outCoords, err
//}
// BatchCoordinateConvert 坐标转换
func (a *API) BatchCoordinateConvert(coords []*Coordinate, changeType string) (outCoords []*Coordinate, err error) {
var coordsStrList []string
for _, v := range coords {
coordsStrList = append(coordsStrList, fmt.Sprintf("%.6f,%.6f", v.Lng, v.Lat))
}
params := url.Values{
"coords": []string{strings.Join(coordsStrList, ";")},
"model": []string{changeType}, // 1:高德转百度 5:百度转高德
//"from": []string{utils.Int2Str(fromCoordSys)},
//"to": []string{utils.Int2Str(toCoordSys)},
}
result, err := a.AccessAPI2("geoconv/v2/", params)
if err == nil {
err = utils.Map2StructByJson(result[resultKey], &outCoords, false)
}
return outCoords, err
}
// BatchCoordinateConvertBai2Gao 百度转高德
func (a *API) BatchCoordinateConvertBai2Gao(coords []string, changeType string) (outCoords []*Coordinate, err error) {
params := url.Values{
"coords": []string{strings.Join(coords, ";")},
"model": []string{changeType}, // 1:高德转百度 5:百度转高德
}
result, err := a.AccessAPI2("geoconv/v2/", params)
if err == nil {
err = utils.Map2StructByJson(result[resultKey], &outCoords, false)
}
return outCoords, err
}
// DirectionLiteRide 获取骑行距离
func (a *API) DirectionLiteRide(coords []*Coordinate) (retVal interface{}, err error) {
var (
sCoords string
uCoords string
apiStr = "directionlite/v1/riding"
)
sCoords = utils.Float64ToStr(coords[0].Lat) + "," + utils.Float64ToStr(coords[0].Lng)
uCoords = utils.Float64ToStr(coords[1].Lat) + "," + utils.Float64ToStr(coords[1].Lng)
param := url.Values{
"origin": []string{sCoords},
"destination": []string{uCoords},
}
resp, err := a.AccessAPI2(apiStr, param)
if err == nil {
return resp[resultKey], nil
}
return nil, nil
}

View File

@@ -26,16 +26,13 @@ func init() {
} }
func TestBatchCoordinateConvert(t *testing.T) { func TestBatchCoordinateConvert(t *testing.T) {
//result, err := api.BatchCoordinateConvert([]*Coordinate{
result, err := api.BatchCoordinateConvert([]*Coordinate{ result, err := api.BatchCoordinateConvert([]*Coordinate{
&Coordinate{ &Coordinate{
Lng: 104.057367, Lng: 104.00701626019786,
Lat: 30.694686, Lat: 30.660569196450925,
}, },
&Coordinate{ }, "5")
Lng: 104.057367,
Lat: 30.694686,
},
}, CoordSysGCJ02, CoordSysBaiDu)
if err != nil { if err != nil {
t.Fatalf("TestCoordinateConvert failed with error:%v", err) t.Fatalf("TestCoordinateConvert failed with error:%v", err)
} else { } else {
@@ -59,6 +56,16 @@ func TestDirectionLiteRide(t *testing.T) {
fmt.Println(result) fmt.Println(result)
} }
func TestAC(t *testing.T) {
fmt.Println(fmt.Sprintf("%.6f,%.6f", 104.00080006826988, 30.65440926211375))
}
func TestBatchCoordinateConvertBai2Gao(t *testing.T) {
aa := []string{"104.00703948726,30.66023262214", "104.00734814129,30.660267081943"}
result, err := api.BatchCoordinateConvertBai2Gao(aa, "5")
fmt.Println(err)
fmt.Println(result)
}
func TestName(t *testing.T) { func TestName(t *testing.T) {
syncStatus := 1 syncStatus := 1

View File

@@ -236,7 +236,7 @@ func TestBatchSetPrice(t *testing.T) {
} }
func TestRetailDelete(t *testing.T) { func TestRetailDelete(t *testing.T) {
poiCode := "18877719" poiCode := "17088914"
i := 0 i := 0
count := 0 count := 0
@@ -453,9 +453,9 @@ func TestRetailSkuSellStatus(t *testing.T) {
} }
func TestRetailSellStatus(t *testing.T) { func TestRetailSellStatus(t *testing.T) {
result, err := api.RetailSellStatus(utils.GetUUID(), "10071426", []*BareStoreFoodInfo{ result, err := api.RetailSellStatus(utils.GetUUID(), "17088914", []*BareStoreFoodInfo{
&BareStoreFoodInfo{ &BareStoreFoodInfo{
AppFoodCode: "6092651", AppFoodCode: "2429611",
Skus: []*BareStoreSkuInfo{ Skus: []*BareStoreSkuInfo{
&BareStoreSkuInfo{ &BareStoreSkuInfo{
//SkuID: "22781", //SkuID: "22781",