diff --git a/gps.go b/gps.go index 1750f46..7d74f22 100644 --- a/gps.go +++ b/gps.go @@ -14,11 +14,11 @@ var ( type GpsDegrees struct { Orientation byte - Degrees, Minutes, Seconds int + Degrees, Minutes, Seconds float64 } func (d GpsDegrees) String() string { - return fmt.Sprintf("Degrees", string([]byte{d.Orientation}), d.Degrees, d.Minutes, d.Seconds) + return fmt.Sprintf("Degrees", string([]byte{d.Orientation}), d.Degrees, d.Minutes, d.Seconds) } func (d GpsDegrees) Decimal() float64 { diff --git a/ifd_enumerate.go b/ifd_enumerate.go index 4bf6abe..1e38f60 100644 --- a/ifd_enumerate.go +++ b/ifd_enumerate.go @@ -901,18 +901,18 @@ func (ifd *Ifd) GpsInfo() (gi *GpsInfo, err error) { gi.Latitude = GpsDegrees{ Orientation: latitudeRefValue.(string)[0], - Degrees: int(float64(latitudeRaw[0].Numerator) / float64(latitudeRaw[0].Denominator)), - Minutes: int(float64(latitudeRaw[1].Numerator) / float64(latitudeRaw[1].Denominator)), - Seconds: int(float64(latitudeRaw[2].Numerator) / float64(latitudeRaw[2].Denominator)), + Degrees: float64(latitudeRaw[0].Numerator) / float64(latitudeRaw[0].Denominator), + Minutes: float64(latitudeRaw[1].Numerator) / float64(latitudeRaw[1].Denominator), + Seconds: float64(latitudeRaw[2].Numerator) / float64(latitudeRaw[2].Denominator), } longitudeRaw := longitudeValue.([]Rational) gi.Longitude = GpsDegrees{ Orientation: longitudeRefValue.(string)[0], - Degrees: int(float64(longitudeRaw[0].Numerator) / float64(longitudeRaw[0].Denominator)), - Minutes: int(float64(longitudeRaw[1].Numerator) / float64(longitudeRaw[1].Denominator)), - Seconds: int(float64(longitudeRaw[2].Numerator) / float64(longitudeRaw[2].Denominator)), + Degrees: float64(longitudeRaw[0].Numerator) / float64(longitudeRaw[0].Denominator), + Minutes: float64(longitudeRaw[1].Numerator) / float64(longitudeRaw[1].Denominator), + Seconds: float64(longitudeRaw[2].Numerator) / float64(longitudeRaw[2].Denominator), } // Parse altitude.