Loading

百度地图定位开发——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

 

posted @ 2021-12-03 23:03  Nanne1ess  阅读(658)  评论(0编辑  收藏  举报