Android谷歌地图经纬度计算问题

Android谷歌地图经纬度计算问题,android,google-maps,latitude-longitude,Android,Google Maps,Latitude Longitude,到目前为止,我经常看到,由于某种原因,在谷歌地图示例中,getLatitude()返回的纬度或经度值与1E6相乘。这是什么原因?为什么是1E6?这些函数返回的原始值有什么问题?不仅仅是谷歌地图,我在Windows PC上使用了一些海图API&它们混合使用十进制度数和1E7度数。似乎函数就是这样写的&没有人费心把它们统一起来。我想我在什么地方读到过,这与性能有关。getLatitute()返回一个double,它是浮点数据类型。如果设备不支持浮点操作,则浮点数据类型的数学运算速度较慢 因此,通过将

到目前为止,我经常看到,由于某种原因,在谷歌地图示例中,getLatitude()返回的纬度或经度值与1E6相乘。这是什么原因?为什么是1E6?这些函数返回的原始值有什么问题?

不仅仅是谷歌地图,我在Windows PC上使用了一些海图API&它们混合使用十进制度数和1E7度数。似乎函数就是这样写的&没有人费心把它们统一起来。

我想我在什么地方读到过,这与性能有关。getLatitute()返回一个
double
,它是浮点数据类型。如果设备不支持浮点操作,则浮点数据类型的数学运算速度较慢


因此,通过将双精度值乘以1E6,可以使用整数数学进行计算,而不会丢失太多分辨率

将它们乘以1E6的原因是
GeoPoint
类(用于在谷歌地图上绘制点)使用微度纬度和经度作为整数。乘以1E6可将度转换为微度。谷歌选择这种方式的原因尚待讨论,但这可能与谷歌地图本身并不十分准确有关,使用GPS返回的原始双精度值到小数点后10位或更多是在谷歌地图上绘制点的不必要的精度级别。

我想补充一点,谷歌地图不是非常精确,地质点可以与实际物理位置相差10米或更多。在谷歌地图上绘制点时,使用大于微度的精度不会太有用。通过使用整数值执行所有操作来提高性能是有益的,因为正如您所说的,分辨率损失不是主要问题。