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  }