github.com/seeker-insurance/kit@v0.0.13/geojson/point.go (about) 1 package geojson 2 3 import ( 4 "fmt" 5 ) 6 7 type Point [2]float64 8 9 //GeoJson stores points as [lng, lat], everywhere else we use lat, lng 10 func NewPoint(lat float64, lng float64) Point { 11 return Point{lng, lat} 12 } 13 14 func (p Point) Lat() float64 { 15 return p[1] 16 } 17 18 func (p Point) Lng() float64 { 19 return p[0] 20 } 21 22 //Coordinates is the coordinates. 23 func (p *Point) Coordinates() string { 24 return fmt.Sprintf(`[%f, %f]`, p.Lat(), p.Lng()) 25 } 26 27 //Type is the type. 28 func (p *Point) Type() string { 29 return PointType 30 } 31 32 //GeoJSON formats to GeoJSON: {type : "point", coordinates : [lat, lng]} 33 func (p *Point) GeoJSON() []byte { 34 return geoJSON(p) 35 } 36 37 func (p *Point) String() string { 38 return fmt.Sprintf("%f, %f", p.Lat(), p.Lng()) 39 } 40 41 func (p *Point) GetBSON() (interface{}, error) { 42 bdoc := map[string]interface{}{ 43 "type": p.Type(), 44 "coordinates": p, 45 } 46 return bdoc, nil 47 }