1. 程式人生 > >百度地圖error code 162,座標為[0.0,0.0]或者[4.9E-324,4.9E-324]

百度地圖error code 162,座標為[0.0,0.0]或者[4.9E-324,4.9E-324]

前幾天再給一個安卓應用新增定位功能的時候用到了百度地圖的sdk。
用手機跑了一下demo沒問題後,按照官方給出的sdk使用指南:http://developer.baidu.com/map/geosdk-android-developv2.3.htm
將sdk新增進入了應用,跑一跑覺得沒有問題,但是幾次下來我發現伺服器返回的位置資訊老是一樣的,經緯度從未改變: error code : 162 latitude : 4.9E-324 lontitude : 4.9E-324.
這才發現,定位失敗了。上網翻了一下,錯誤程式碼162指的是伺服器端錯誤。
看到網上也有一部分人遇到這樣的問題,但都沒有給出解決方案,故我聯絡了百度,他們的工作人員態度很好,提示我是不是.so檔案沒有載入成功。
經檢查工程目錄libs/armeabi/下的liblocSDK3.so(檔名根據版本不同而異)檔案果然沒有載入成功,在此總結一下解決方案:
如果出現以上錯誤,請確保libs/armeabi/下的liblocSDK3.so沒有問題,
若沒有,請在程式碼中載入.so檔案,如果不會載入,請百度system.loadLibrary();
如果還是有錯誤,請檢查你寫的應用是否使用了JNI,如果有使用,一般你的工程libs資料夾下面會多出一個armeabi-v7a資料夾,這時把你的.so檔案拷貝到這裡面一份。
Clean並重新跑一下程式,應該就okay了。

如果還是有錯可以貼出來大家交流

建議地圖的sdk幫助文件裡給開發者提示:潛在的so庫檔案載入失敗bug,因為這個庫檔案載入失敗,並不會影響我的程式執行,但是卻得不到正確的內容。