问题描述
||
到目前为止,我经常看到它,由于某种原因,由getLatitude()返回的纬度或经度值在Google Maps示例中与1E6相乘。这是什么原因?为什么选择1E6?这些函数返回的原始值有什么问题?
解决方法
我想我在某处读到了这与性能有关。 getLatitute()返回一个
double
,它是浮点数据类型。如果设备不支持浮点运算,则对浮点数据类型的数学运算会很慢。
因此,通过将双精度值乘以1E6,度变为微度,因此可以使用整数数学进行计算而不会损失太多分辨率。
,它不仅是Google地图,我还使用Windows PC上的一些海事图表API,它们在十进制度和1E7度中使用混合。似乎函数是用这种方式编写的,没有人会费心去统一它们。
,它们乘以1E6的原因是因为GeoPoint
类(用于在Google Map上绘制点)将微度经度和纬度用作整数。乘以1E6可将度转换为微度。 Google选择以这种方式执行此操作的原因尚有争议,但这可能与Google Maps本身并不十分准确的事实有关,并且使用原始的double值将GPS返回的10位或更多的小数位设置为在Google地图上绘制点的不必要的准确性。