Android google-maps经度/纬度计算问题

时间:2011-05-25 13:48:19

标签: android google-maps latitude-longitude

我到目前为止经常看到,由于某种原因,getLatitude()返回的纬度或经度值在Google-Maps-examples中与1E6相乘。这是什么原因?为何选择1E6?这些函数返回的原始值有什么问题?

3 个答案:

答案 0 :(得分:5)

我想我已经在某处读过这与性能有关。 getLatitute()返回一个double,它是浮点数据类型。如果设备不支持浮点运算,则浮点数据类型的数学运算速度很慢。

因此,通过将double值乘以1E6,degrees become microdegree,可以使用整数数学进行计算,而不会丢失太多分辨率。

答案 1 :(得分:0)

它不仅仅是谷歌地图,我还在Windows PC上使用了一些海事图表API。他们使用十进制度和&的混合物。 1E7度。它似乎就是以这种方式编写的功能&没有人愿意将它们全部统一起来。

答案 2 :(得分:0)

它们乘以1E6的原因是因为GeoPoint类(用于在Google Map上绘制点)使用微度纬度和经度作为整数。乘以1E6将度数转换为微度度数。谷歌之所以选择这样做是有争议的,但它可能与谷歌地图本身不是非常准确的事实有关,并且使用原始双倍值到GPS返回的10个或更多小数位是在Google地图上绘制一个点的准确度不必要。