LatLng构造函数将经度更改为180.0到-180.0

时间:2014-08-20 23:26:47

标签: android android-location

创建新的LatLng时,如果使用180.0作为经度,则更改为-180。根据纬度,这种情况根本不会发生,90.0工作正常。

例如:

LatLng blah = new LatLng(-90.0, 180.0);
Log.d(TAG, "blah: " + blah.longitude);

将输出:

blah: -180.0

虽然这很好用:

LatLng blah = new LatLng(-90.0, 179.99999999999);
Log.d(TAG, "blah: " + blah.longitude);

输出:

blah: 179.99999999999

我认为这可能是由于双精度的精确度,所以实际上是180.00000001或类似的东西,但我不知道如何绕过它,因为你不能使用字符串或大小数等。

2 个答案:

答案 0 :(得分:3)

-180和180表示相同的经度值。 LatLng class将其属性标准化,以便此经度始终表示为-180。

这不是一个错误,但它确实意味着你必须要小心,因为你不能假设你得到的经度的确切表示与你输入的经度相同。

答案 1 :(得分:2)

作为LatLong constructor的文档:

 longitude  The point's longitude. This will be normalized to be 
 within -180 degrees inclusive and +180 degrees exclusive. 

来自 -180到179.999 + -180 degrees inclusive and +180 degrees exclusive值是有效的,当你将 +180 加到latlong它会溢出时在结果上给你-180.0

另一方面179.99999999999它仍然有效,因为它不超过180并且不会溢出,从而为您提供相同的值。