android百度地图定位服务

五陵年少金市东,银鞍白马渡春风。这篇文章主要讲述android百度地图定位服务相关的知识,希望能为你提供帮助。
运行效果图(注意运行前要先到设置里允许GPS权限,否则无法定位,只显示百度地图):

android百度地图定位服务

文章图片

 
首先去注册appkey,下载SDK开发包:
android百度地图定位服务

文章图片

 
 
创建一个Module包名为com.mingrisoft,将项目结构类型切换为Project,解压缩下载的BaiduLBS_android-SDK_Lib.zip文件,将libs下的jar文件复制到该Module的libs文件夹中。选中这些文件,单击右键选择Add As Library...,添加百度类库。在“src/main”中新建目录JNIlibs,并将解压缩的BaiduLBS_Android-SDK_Lib.zip文件libs文件夹中剩下的文件复制到此。
android百度地图定位服务

文章图片
android百度地图定位服务

文章图片
        用于显示定位的图标icon_geo.png:
android百度地图定位服务

文章图片

 
 
manifests:

1 < ?xml version="1.0" encoding="utf-8"?> 2 < manifest xmlns:android="http://schemas.android.com/apk/res/android" 3package="com.mingrisoft.test"> 4 5//获取设备网络状态,禁用后无法获取网络状态 6< uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 7//网络权限,当禁用后,无法进行检索等相关业务 8< uses-permission android:name="android.permission.INTERNET" /> 9//读取设备硬件信息,统计数据 10< uses-permission android:name="android.permission.READ_PHONE_STATE" /> 11//读取系统信息,包含系统版本等信息,用作统计 12< uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 13//获取设备的网络状态,鉴权所需网络代理 14< uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 15//允许sd卡写权限,需写入地图数据,禁用后无法显示地图 16< uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 17//允许sd卡读权限,需读取地图数据,禁用后无法显示地图 18< uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 19//获取统计数据 20< uses-permission android:name="android.permission.WRITE_SETTINGS" /> 21//鉴权所需该权限获取进程列表 22< uses-permission android:name="android.permission.GET_TASKS" /> 23//使用步行AR导航,配置Camera权限 24< uses-permission android:name="android.permission.CAMERA" /> 25//网络定位 26< uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 27//GPS定位 28< uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 29< !-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> 30< uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 31 32< application 33android:allowBackup="true" 34android:icon="@mipmap/ic_launcher" 35android:label="@string/app_name" 36android:roundIcon="@mipmap/ic_launcher_round" 37android:supportsRtl="true" 38android:theme="@style/AppTheme"> 39< meta-data 40android:name="com.baidu.lbsapi.API_KEY" 41android:value="https://www.songbingjia.com/android/gEnaDhNCFNRRCKmc7XPM1PttGalSkeKr"/> 42 43< activity android:name=".MainActivity"> 44< intent-filter> 45< action android:name="android.intent.action.MAIN" /> 46 47< category android:name="android.intent.category.LAUNCHER" /> 48< /intent-filter> 49< /activity> 50< /application> 51 52 < /manifest>

 
activity_main.xml:
1 < ?xml version="1.0" encoding="utf-8"?> 2 < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3xmlns:app="http://schemas.android.com/apk/res-auto" 4xmlns:tools="http://schemas.android.com/tools" 5android:layout_width="match_parent" 6android:layout_height="match_parent" 7tools:context=".MainActivity"> 8 9< com.baidu.mapapi.map.MapView 10android:id="@+id/bmapview" 11android:layout_width="match_parent" 12android:layout_height="match_parent" 13android:clickable="true" /> 14 15 < /RelativeLayout>

 
MainActivity:

1 package com.mingrisoft.test; 2 3 import android.os.Bundle; 4 import android.support.v7.app.AppCompatActivity; 5 6 import com.baidu.location.BDLocation; 7 import com.baidu.location.BDLocationListener; 8 import com.baidu.location.LocationClient; 9 import com.baidu.location.LocationClientOption; 10 import com.baidu.mapapi.SDKInitializer; 11 import com.baidu.mapapi.map.BaiduMap; 12 import com.baidu.mapapi.map.BitmapDescriptor; 13 import com.baidu.mapapi.map.BitmapDescriptorFactory; 14 import com.baidu.mapapi.map.MapStatusUpdate; 15 import com.baidu.mapapi.map.MapStatusUpdateFactory; 16 import com.baidu.mapapi.map.MapView; 17 import com.baidu.mapapi.map.MyLocationConfiguration; 18 import com.baidu.mapapi.map.MyLocationData; 19 import com.baidu.mapapi.model.LatLng; 20 21 public class MainActivity extends AppCompatActivity { 22 23private MapView mMapView; // 定义百度地图组件 24private BaiduMap mBaiduMap; // 定义百度地图对象 25private LocationClient mLocationClient; //定义LocationClient 26private BDLocationListener myListener = new MyLocationListener(); //定义位置监听 27private boolean isFirstLoc = true; //定义第一次启动 28private MyLocationConfiguration.LocationMode mCurrentMode; //定义当前定位模式 29 30@Override 31protected void onCreate(Bundle savedInstanceState) { 32super.onCreate(savedInstanceState); 33SDKInitializer.initialize(getApplicationContext()); //初始化地图SDK 34setContentView(R.layout.activity_main); 35mMapView = (MapView) findViewById(R.id.bmapview); //获取地图组件 36mBaiduMap = mMapView.getMap(); //获取百度地图对象 37mLocationClient = new LocationClient(getApplicationContext()); //创建LocationClient类 38mLocationClient.registerLocationListener(myListener); //注册监听函数 39initLocation(); //调用initLocation()方法,实现初始化定位 40} 41 42private void initLocation() {//该方法实现初始化定位 43//创建LocationClientOption对象,用于设置定位方式 44LocationClientOption option = new LocationClientOption(); 45option.setCoorType("bd09ll"); //设置坐标类型 46option.setScanSpan(1000); //1秒定位一次 47option.setOpenGps(true); //打开GPS 48mLocationClient.setLocOption(option); //保存定位参数与信息 49mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL; //设置定位模式 50//设置自定义定位图标 51BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory 52.fromResource(R.drawable.icon_geo); 53//位置构造方式,将定位模式,定义图标添加其中 54MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker); 55mBaiduMap.setMyLocationConfigeration(config); //地图显示定位图标 56} 57 58public class MyLocationListener implements BDLocationListener {//设置定位监听器 59@Override 60public void onReceiveLocation(BDLocation location) { 61//销毁后不再处理新接收的位置 62if (location == null || mMapView == null) 63return; 64// 构造定位数据 65MyLocationData locData = https://www.songbingjia.com/android/new MyLocationData.Builder().accuracy(location.getRadius()) 66// 此处设置开发者获取到的方向信息,顺时针0-360 67.direction(100) 68.latitude(location.getLatitude()) 69.longitude(location.getLongitude()) 70.build(); 71// 设置定位数据 72mBaiduMap.setMyLocationData(locData); 73 74if (isFirstLoc) {//如果是第一次定位,就定位到以自己为中心 75LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); //获取用户当前经纬度 76MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); //更新坐标位置 77mBaiduMap.animateMapStatus(u); //设置地图位置 78isFirstLoc = false; //取消第一次定位 79} 80 81} 82} 83 84 85@Override 86protected void onStart() {//地图定位与Activity生命周期绑定 87super.onStart(); 88mBaiduMap.setMyLocationEnabled(true); 89mLocationClient.start(); 90} 91 92 93@Override 94protected void onStop() {//停止地图定位 95super.onStop(); 96mBaiduMap.setMyLocationEnabled(false); 97mLocationClient.stop(); 98} 99 100@Override 101protected void onResume() { 102super.onResume(); 103mMapView.onResume(); 104} 105 106@Override 107protected void onPause() { 108super.onPause(); 109mMapView.onPause(); 110} 111 112 113@Override 114protected void onDestroy() {//销毁地图 115mMapView.onDestroy(); 116mMapView = null; 117super.onDestroy(); 118} 119 120 121 }

【android百度地图定位服务】 

    推荐阅读