Android開放百度地圖集成
1、創建應用 獲取AK (我理解為Application key)
通過百度賬號登錄百度地圖開放平臺,進入API控制臺 http://lbsyun.baidu.com/apiconsole/key 創建自己的應用,輸入應用名稱 ,選擇Android SDK 應用類型,選擇需要的服務(默認全選) 輸入簽名文件的SHA1,默認的簽名文件debug.keystore 在 C:\Users\你的用戶\.android下,然後打開控制臺cd到此目錄下 鍵入 keytool -v -list -keytore debug.keystore,就可以獲取簽名文件的SHA1了 註意復制時不要有空格,然後輸入應用的包名,也不要輸入錯了,系統自己生成安全碼,提交就創建完成了。
2、下載SDK,集成到自己的項目
選擇需要的服務類型,然後下載SDK 也可以下載demo,http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download,下載完成後解壓,將lib下面的jar和so文件放入工程的libs下面,compile fileTree(include: [‘*.jar‘], dir: ‘libs‘) build.grade下有這個語句 就只需要 在android下添加 sourceSet{main {jniLib.Dir(‘libs‘)}}就可以了 這個地方百度開發文檔說的有點模糊,也可以自己創建jniLib文件夾添加so文件,但不要同時都做。
然後在清單文件中添加權限 service(定位需要)mata(只需要改自己的ak就行),註意也別放錯位置了。百度開發文檔都有不在粘貼 http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap。
3、展示地圖 定位 添加覆蓋物 地理編碼等
在自己的xml文件中引入mapview,在Java代碼中 初始化地圖的SDK SDKInitializer.initialize(getApplicationContext());獲取mapview並且在activity的生命周期中實現mapview的周期 ,到目前位置,運行應用就可以看到地圖的效果了,北京。
通過LocationClient 、BaiduMap、BDLocationListener實現定位功能 通過mapview獲取baidumap 設置LocationClient 的參數 和監聽器 ,實現BDLocationListener接口,然後開啟定位 LocationClient.start(),通過接口回調的location就能獲取位置等信息 。
通過緯度和經度改變地圖所顯示的位置和添加自己位置
a、移動地圖的位置
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);
// 移動到某經緯度
mBaiduMap.animateMapStatus(update);
b、添加自己的位置
mBaiduMap.setMyLocationEnabled(true);
// 構造定位數據
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此處設置開發者獲取到的方向信息,順時針0-360
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
// 設置定位數據
mBaiduMap.setMyLocationData(locData);
c、通過mBaiduMap.addOverlay(option);添加覆蓋物marker等 參考百度文檔
//添加marker
//構建Marker圖標
BitmapDescriptor bitmap = BitmapDescriptorFactory
.fromResource(drawable);
//構建MarkerOption,用於在地圖上添加Marker
OverlayOptions option = new MarkerOptions()
.position(point)
.icon(bitmap);
//在地圖上添加Marker,並顯示
mBaiduMap.addOverlay(option);
d、添加線等,pts為一個集合List<LatLng>
OverlayOptions polylineOption = new PolylineOptions()
.points(pts).width(5).color(0XFFff0000)
;
mBaiduMap.addOverlay(polylineOption);
e、地理編碼 輸入一個位置返回經緯度
mSearch = GeoCoder.newInstance();獲取實例對象 設置監聽器,實現監聽器接口OnGetGeoCoderResultListener ,回調的result就可以獲取信息 ,註意都是異步的,當然也有反地理編碼。
百度地圖實現的功能很多,你能想到的 所需要的 都能提供。
Android開放百度地圖集成