百度地圖Android定位SDK是為Android移動端應用提供的一套簡單易用的定位服務接口,專注於為廣大開發者提供最好的綜合定位服務。通過使用百度定位SDK,開發者可以輕松為應用程序實現智能、精准、高效的定位功能。
打開百度地圖sdk開發,輸入應用名稱這里需要輸入SHA1,具體尋找SHA1過程可以參考官方的文檔
創建成功后,下載官方的jar包,將解壓后的所有文件添加到申請AK時使用的項目文件中的lib目錄中。然后在app目錄下的build.gradle文件中android塊中配置sourceSets標簽,內容如下:
sourceSets { main { jniLibs.srcDir 'libs' } }
此時就能將部分目錄添加到項目視圖中,現在需要將jar文件添加到項目視圖中。在app目錄的build.gradle的dependencies塊中添加以下代碼,然后右鍵目標jar文件,選擇Add as library,就能將其加入到項目視圖中。
implementation files('libs\\BaiduLBS_Android.jar')
然后打開AndroidManifest.xml文件,在<application>中加入如下代碼配置開發密鑰AK
,並且根據官方文檔,添加權限
顯示地圖
我們在xml文件的代碼中直接輸入
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="411dp" android:layout_height="662dp" android:clickable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:ignore="MissingClass" />
然后我們需要初始化地圖,創建一個activity
package com.example.zty_map; import androidx.appcompat.app.AppCompatActivity; import android.app.Application; import android.os.Bundle; import com.baidu.mapapi.CoordType; import com.baidu.mapapi.SDKInitializer; public class MAPZTY1 extends Application { @Override public void onCreate() { super.onCreate(); //在使用SDK各組件之前初始化context信息,傳入ApplicationContext SDKInitializer.initialize(this); //自4.3.0起,百度地圖SDK所有接口均支持百度坐標和國測局坐標,用此方法設置您使用的坐標類型. //包括BD09LL和GCJ02兩種坐標,默認是BD09LL坐標。 SDKInitializer.setCoordType(CoordType.BD09LL); } }
並且在AndroidManifest中聲明這個application
之后就可以通過創建地圖的實例MyMap來顯示地圖
mMapView = findViewById(R.id.bmapView); mBaiduMap=mMapView.getMap(); mBaiduMap.setMyLocationEnabled(true);
顯示定位
首先我們需要添加權限
<!-- 這個權限用於進行網絡定位 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 這個權限用於訪問GPS定位 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
然后在AndroidManifest的application中聲明定位的service組件
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"/>
然后在mainactivity中添加內置類
class MyLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(BDLocation location) { //mapView 銷毀后不在處理新接收的位置 if (location == null || mMapView == null) { return; } MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此處設置開發者獲取到的方向信息,順時針0-360 .direction(location.getDirection()).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); } }
然后在oncreate中打開位置監聽
option.setOpenGps(true);
設置定位參數:
LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打開gps option.setCoorType("bd09ll"); // 設置坐標類型 option.setScanSpan(1000);
最后打開定位功能,就能顯示定位
mLocationClient.start();
mLocationClient.requestLocation();
最后運行,查看定位,由於是虛擬機需要導入一個kml文件來顯示定位
github地址:https://github.com/Nanne1ess/ZTY-MAP.git