2011-05-25 125 views

回答

5

我想我已經在某處讀過這與性能有關。 getLatitute()返回一個double,它是浮點數據類型。如果設備不支持浮點運算,則浮點數據類型的運算速度較慢。

所以通過乘以double值與1E6,degrees become microdegree,所以計算可以用整數數學來完成,而不會失去太多的分辨率。

+1

我想補充一點,Google地圖並不是非常準確,GeoPoints可能會離實際的物理位置高達10米或更遠。在Google地圖上繪製點的上下文中,使用大於微地址的精度不會太有用。通過使用整數值執行所有操作來提高性能是有益的,因爲像您所說的那樣,分辨率的損失不是主要關心的問題。 – SSZero 2011-05-25 15:16:46

0

它不僅僅是谷歌地圖,我在Windows PC上使用一些海圖API,它們使用小數度上的混合物1E7度。它似乎是這樣寫的功能&沒有人困擾它們統一它們。

0

它們被1E6相乘的原因是因爲GeoPoint類(這是用來對谷歌地圖的繪製點)使用microdegree緯度和經度爲整數。乘以1E6將度數轉化爲微小的度數。谷歌選擇這樣做的原因有待討論,但這可能與谷歌地圖本身不是非常精確的事實有關,並且使用由GPS返回的10位或更多小數位的原始雙精度值是一個事實一個不必要的準確性來繪製Google Map上的一個點。