百度地圖定位開發——Android地圖sdk開發


百度地圖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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM