使用腾讯地图,百度和高德不在使用

This commit is contained in:
邹宗楠
2024-07-31 11:09:07 +08:00
parent d6e1893671
commit 4cf9001c9a
20 changed files with 287 additions and 212 deletions

View File

@@ -7,7 +7,7 @@ import (
"crypto/md5"
"encoding/base64"
"fmt"
"git.rosy.net.cn/baseapi/platformapi/autonavi"
"git.rosy.net.cn/baseapi/platformapi/tencent_map"
"io/ioutil"
"math"
"math/rand"
@@ -271,16 +271,32 @@ func EarthDistance(lng1, lat1, lng2, lat2 float64) float64 {
return dist * radius
}
// 返回结果单元为公里
// WalkingDistance 返回结果单元为公里
func WalkingDistance(lng1, lat1, lng2, lat2 float64) (distance float64) {
if distance = api.AutonaviAPI.WalkingDistance(lng1, lat1, lng2, lat2); distance == 0 {
param := &tencent_map.TencentCyclingPlanningReq{
From: fmt.Sprintf("%.6f,%.6f", lat1, lng1),
To: fmt.Sprintf("%.6f,%.6f", lat2, lng2),
}
distanceMetre, _ := api.TencentMapAPI.WalkingDistance(param)
if distanceMetre == 0 {
distance = EarthDistance(lng1, lat1, lng2, lat2) * 1.4
} else {
distance /= 1000
distance = float64(distanceMetre) / float64(1000)
}
return distance
}
// 老版本百度
//func WalkingDistance(lng1, lat1, lng2, lat2 float64) (distance float64) {
// if distance = api.AutonaviAPI.WalkingDistance(lng1, lat1, lng2, lat2); distance == 0 {
// distance = EarthDistance(lng1, lat1, lng2, lat2) * 1.4
// } else {
// distance /= 1000
// }
// return distance
//}
//经纬度坐标转换到平面坐标
func MillierConvertion(lat float64, lon float64) [2]float64 {
var L, H, W, temp, mill, x, y float64
@@ -312,22 +328,50 @@ func IntCoordinate2Standard(value int) float64 {
func IntCoordinate2MarsStandard(gpsLng, gpsLat int, coordinateType int) (marsLng, marsLat float64, err error) {
marsLng = IntCoordinate2Standard(gpsLng)
marsLat = IntCoordinate2Standard(gpsLat)
coordSys := ""
coordSys := 0
switch coordinateType {
case model.CoordinateTypeGPS:
coordSys = autonavi.CoordSysGPS
coordSys = tencent_map.CoordinateChangeTypeGPS
case model.CoordinateTypeMars:
return marsLng, marsLat, nil
case model.CoordinateTypeBaiDu:
coordSys = autonavi.CoordSysBaidu
coordSys = tencent_map.CoordinateChangeTypeBaidu
case model.CoordinateTypeMapbar:
coordSys = autonavi.CoordSysMapbar
coordSys = tencent_map.CoordinateChangeTypeMapbar
default:
panic(fmt.Sprintf("known coordinate type:%d", coordinateType))
}
return api.AutonaviAPI.CoordinateConvert(marsLng, marsLat, coordSys)
result, err := api.TencentMapAPI.TencentCoordinateChange(&tencent_map.TencentCoordinateChangeReq{
Locations: fmt.Sprintf("%.6f,%.6f", marsLat, marsLng),
Type: coordSys,
})
if err != nil {
return 0, 0, err
}
return utils.Str2Float64(result[0].Lng), utils.Str2Float64(result[0].Lat), nil
}
//func IntCoordinate2MarsStandard(gpsLng, gpsLat int, coordinateType int) (marsLng, marsLat float64, err error) {
// marsLng = IntCoordinate2Standard(gpsLng)
// marsLat = IntCoordinate2Standard(gpsLat)
// coordSys := ""
// switch coordinateType {
// case model.CoordinateTypeGPS:
// coordSys = autonavi.CoordSysGPS
// case model.CoordinateTypeMars:
// return marsLng, marsLat, nil
// case model.CoordinateTypeBaiDu:
// coordSys = autonavi.CoordSysBaidu
// case model.CoordinateTypeMapbar:
// coordSys = autonavi.CoordSysMapbar
// default:
// panic(fmt.Sprintf("known coordinate type:%d", coordinateType))
// }
// return api.TencentMapAPI.CoordinateConvert(marsLng, marsLat, coordSys)
//}
func IntPrice2Standard(value int64) float64 {
return float64(value) / 100
}