1. 程式人生 > >關於android定位的坐標系問題

關於android定位的坐標系問題

電子 情況下 基礎 roi 正常 實測 一個 百度地圖 實的

按照正常的思路,我們通過GPS或者基站定位等方式獲取到經緯度信息後,把它放到地圖上,就能夠完成定位。但實際上,我們很有可能會在實際操作中發現,我們的定位出現了較大的偏移。這是因為我國出於國家安全(或者¥@#%¥##)的考慮,會將所有的電子地圖經行加偏處理,由真實的地理坐標系又稱地球坐標系(WGS84)轉換為火星坐標系(GCJ02)。這就是我們定位出現偏移的原因,也是坐標系問題產生的根源

那麽,我們要怎樣處理坐標系問題呢。就以我們常用的百度與高德地圖api為例來說明。百度地圖的坐標系是在火星坐標系的基礎上又自行加密的BD09坐標系,高德地圖的坐標系是常見的火星坐標系GCJ02。那麽很好理解了,既然百度地圖是BD09坐標系的,那麽通過百度地圖API獲得的經緯度也是BD09坐標系的,直接顯示,沒有問題;同理,通過高德地圖API獲得的經緯度也一定是GCJ02的,可以在高德地圖上直接顯示。但是我們如果沒有調用第三方地圖API,而是使用android.location獲取的經緯度,或者是通過手持或車載的GPS終端獲取的經緯度,那就是屬於WGS84的真實的地理坐標,這時候,直接在百度或者高德地圖上顯示是會出現偏移的

那麽,遇到經緯度與地圖的坐標系不相符的情況下,怎麽辦呢?最優的辦法就是調用你所使用的地圖的服務商提供的坐標系轉換接口,有可能是付費接口。不推薦使用網上流傳甚廣的地球坐標系與火星坐標系轉換算法,實測誤差較大。如果,實在沒有辦法的話,在小範圍內,給經緯度加一個固定的修正值,也勉強可用。註意,是小範圍,因為加偏雖然不是線性的,但是一定範圍的的偏移量不會相差太大,通過一個固定的修正值,還是能夠在小範圍內提高定位精度的。至於這個範圍怎麽確定,我也不知道...

關於android定位的坐標系問題