创建新的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或类似的东西,但我不知道如何绕过它,因为你不能使用字符串或大小数等。
答案 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并且不会溢出,从而为您提供相同的值。