- ebai store.
This commit is contained in:
@@ -2,6 +2,7 @@ package jxutils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -64,3 +65,28 @@ func StrTime2JxOperationTime(strTime string, defValue int16) int16 {
|
||||
func JxOperationTime2StrTime(value int16) string {
|
||||
return fmt.Sprintf("%02d:%02d:00", value/100, value%100)
|
||||
}
|
||||
|
||||
func GetPolygonFromCircle(lng, lat, distance float64, pointCount int) (points [][2]float64) {
|
||||
points = make([][2]float64, pointCount)
|
||||
for k := range points {
|
||||
angle := float64(k) * 360 / float64(pointCount)
|
||||
points[k][0], points[k][1] = ConvertDistanceToLogLat(lng, lat, float64(distance), angle)
|
||||
}
|
||||
return points
|
||||
}
|
||||
|
||||
func GetPolygonFromCircleStr(lng, lat, distance float64, pointCount int) string {
|
||||
points := GetPolygonFromCircle(lng, lat, distance, pointCount)
|
||||
points2 := make([]string, len(points))
|
||||
for k, v := range points {
|
||||
points2[k] = fmt.Sprintf("%.6f,%.6f", v[0], v[1])
|
||||
}
|
||||
return strings.Join(points2, ";")
|
||||
}
|
||||
|
||||
func ConvertDistanceToLogLat(lng, lat, distance, angle float64) (newLng, newLat float64) {
|
||||
oneDu := 111319.55
|
||||
newLng = lng + (distance*math.Sin(angle*math.Pi/180))/(oneDu*math.Cos(lat*math.Pi/180)) //将距离转换成经度的计算公式
|
||||
newLat = lat + (distance*math.Cos(angle*math.Pi/180))/oneDu //将距离转换成纬度的计算公式
|
||||
return newLng, newLat
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user