百度地圖 同時提供了 定位SDK
定位SDK 可以單獨使用 也可以跟百度地圖結合使用
比如獲取用戶當前所在城市 顯示對應城市天氣預報
比如 讓用戶查看附近的好喫好玩的 這些功能都需要定位
定位SDK 已經有了 4.2 在次使用4.2的SDK 接入
通過 demo示例 我們瞭解到 :
-
百度定位SDK爲我們提供了大體3個功能模塊的功能 : 定位 地理圍欄 記錄當前位置
定位: 獲取到用戶當前位置的信息
地理圍欄: 設置一個區域 當用戶靠近 或 在區域中的時候 會提示 回調
記錄當前位置 : 若記住當前位置 再次經過的時候會提示
-
百度定位SDK定位 有三種模式
高精度定位模式 : 這種定位模式下,會同時使用網絡定位和GPS定位,優先返回最高精度的定位結果
LocationMode.Hight_Accuracy
僅設備模式 : 這種定位模式下,不會使用GPS,只會使用網絡定位(Wi-Fi和基站定位)
LocationMode.Device_Sensors
低功耗模式 : 這種定位模式下,不需要連接網絡,只使用GPS進行定位,這種模式下不支持室內環境的定位
LocationMode.Battery_Saving
百度返回的定位信息關於地址需要開啓使用setIsNeedAddress(boolean)
設置是否要返回地址信息,默認爲無地址信息。
-
百度返回的定位信息的座標有三種類型
返回國測局經緯度座標系:gcj02
返回百度墨卡託座標系:bd09
返回百度經緯度座標系:bd09ll
-
關於設置定時定位的時間間隔說明 (從官網摘抄)
說明:
當所設的整數值大於等於1000(ms)時,定位SDK內部使用定時定位模式。調用requestLocation( )後,每隔設定的時間,定位SDK就會進行一次定位。如果定位SDK根據定位依據發現位置沒有發生變化,就不會發起網絡請求,返回上一次定位的結果;如果發現位置改變,就進行網絡請求進行定位,得到新的定位結果。定時定位時,調用一次requestLocation,會定時監聽到定位結果。
當不設此項,或者所設的整數值小於1000(ms)時,採用一次定位模式。每調用一次requestLocation( ),定位SDK會發起一次定位。請求定位與監聽結果一一對應。
設定了定時定位後,可以熱切換成一次定位,需要重新設置時間間隔小於1000(ms)即可。locationClient對象stop後,將不再進行定位。如果設定了定時定位模式後,多次調用requestLocation(),則是每隔一段時間進行一次定位,同時額外的定位請求也會進行定位,但頻率不會超過1秒一次。
將定位SDK 引入自己的項目
1 創建程序 程序包名 與申請key時一致
2 導入 jar包 和 so包
3 在manifest中初始化key的信息 以及權限的拷貝 還需要寫入一個服務(一個程序對應一個service)
4 定位需要一個LocationClient對象 實例化 該對象需要程序級別的上下文
} catch (Exception e) {
// TODO: handle exception
}
option.setScanSpan(span);// 設置的掃描間隔,單位是毫秒 (下面有備註)
option.setIsNeedAddress(true);// 設置是否需要地址信息,默認爲無地址
// 可以理解爲 將封裝好的定位參數 設置給 定位對象
mLocationClient.setLocOption(option);7 設置好定位參數 就可以啓動定位了 start方法 (可以使用stop停止)