Although the coordinates of Position.Location can be defined with :semicircles format, they can't be retrieved in semicircles units.
The coordinates can only be retrieved using the methods toDegrees() or toRadians().
Does anyone know why there is no method toSemicircles()?
EDIT:
What is the unit semicircles and what are the benefits?
For example, the second hand of a watch can move continuously and smoothly or snap to every second. In the latter case, the angle of the second hand is mapped onto a grid of 60 seconds / 360 degrees.
Similarly, the exact geographic angles lat/lon can be mapped onto a grid with the size of the maximum value of a Lang.Number, which is 2^31 = 2,147,483,648 = 0x80000000. Therefore the formulas for the calculation of semicircles are
semicircles = degrees * 0x80000000 semicircles / 180 degrees
semicircles = radians * 0x80000000 semicircles / Math.PI
This conversion results in a small rounding error, since the true angle usually doesn't exactly hit the grid point. However, the advantage is that half of the memory space is saved. A pair of lat/lon in radians or degrees needs size of storage for two Lang.Double (64bit) and a pair of lat/lon in semicircles needs size of storage for two Lang.Number (32bit).
For example to store a course with every second recording for a time period of 1h = 3600sec in an array, storage is needed (without the overhead due to the object representation and for the management of the array):
32bit * 2 * 3600 = 230.400bit = 28,8kB for numbers
64bit * 2 * 3600 = 460.800bit = 57,6kB for doubles
Moreover, the execution performance of numbers is more efficient than that of doubles.
And because of these advantages, especially the smaller memory size, in a location object lat/lon are stored in semicircles and also in the fit the course points are stored in semicircles.