android百度地图定位服务
运行效果图(注意运行前要先到设置里允许GPS权限,否则无法定位,只显示百度地图):

首先去注册appkey,下载SDK开发包:

创建一个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文件夹中剩下的文件复制到此。

用于显示定位的图标icon_geo.png:
manifests:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mingrisoft.test">
//获取设备网络状态,禁用后无法获取网络状态
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
//网络权限,当禁用后,无法进行检索等相关业务
<uses-permission android:name="android.permission.INTERNET" />
//读取设备硬件信息,统计数据
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
//读取系统信息,包含系统版本等信息,用作统计
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
//获取设备的网络状态,鉴权所需网络代理
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//允许sd卡写权限,需写入地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
//允许sd卡读权限,需读取地图数据,禁用后无法显示地图
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
//获取统计数据
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//鉴权所需该权限获取进程列表
<uses-permission android:name="android.permission.GET_TASKS" />
//使用步行AR导航,配置Camera权限
<uses-permission android:name="android.permission.CAMERA" />
//网络定位
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
//GPS定位
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="gEnaDhNCFNRRCKmc7XPM1PttGalSkeKr"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
</RelativeLayout>MainActivity:
package com.mingrisoft.test;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
public class MainActivity extends AppCompatActivity {
private MapView mMapView; // 定义百度地图组件
private BaiduMap mBaiduMap; // 定义百度地图对象
private LocationClient mLocationClient; //定义LocationClient
private BDLocationListener myListener = new MyLocationListener(); //定义位置监听
private boolean isFirstLoc = true; //定义第一次启动
private MyLocationConfiguration.LocationMode mCurrentMode; //定义当前定位模式
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SDKInitializer.initialize(getApplicationContext()); //初始化地图SDK
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapview); //获取地图组件
mBaiduMap = mMapView.getMap(); //获取百度地图对象
mLocationClient = new LocationClient(getApplicationContext()); //创建LocationClient类
mLocationClient.registerLocationListener(myListener); //注册监听函数
initLocation(); //调用initLocation()方法,实现初始化定位
}
private void initLocation() { //该方法实现初始化定位
//创建LocationClientOption对象,用于设置定位方式
LocationClientOption option = new LocationClientOption();
option.setCoorType("bd09ll"); //设置坐标类型
option.setScanSpan(1000); //1秒定位一次
option.setOpenGps(true); //打开GPS
mLocationClient.setLocOption(option); //保存定位参数与信息
mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL; //设置定位模式
//设置自定义定位图标
BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory
.fromResource(R.drawable.icon_geo);
//位置构造方式,将定位模式,定义图标添加其中
MyLocationConfiguration config = new MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);
mBaiduMap.setMyLocationConfigeration(config); //地图显示定位图标
}
public class MyLocationListener implements BDLocationListener { //设置定位监听器
@Override
public void onReceiveLocation(BDLocation location) {
//销毁后不再处理新接收的位置
if (location == null || mMapView == null)
return;
// 构造定位数据
MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(100)
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.build();
// 设置定位数据
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc) { //如果是第一次定位,就定位到以自己为中心
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); //获取用户当前经纬度
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); //更新坐标位置
mBaiduMap.animateMapStatus(u); //设置地图位置
isFirstLoc = false; //取消第一次定位
}
}
}
@Override
protected void onStart() { //地图定位与Activity生命周期绑定
super.onStart();
mBaiduMap.setMyLocationEnabled(true);
mLocationClient.start();
}
@Override
protected void onStop() { //停止地图定位
super.onStop();
mBaiduMap.setMyLocationEnabled(false);
mLocationClient.stop();
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
protected void onDestroy() { //销毁地图
mMapView.onDestroy();
mMapView = null;
super.onDestroy();
}
} 相关推荐
etzt 2020-04-16
magvwiz 2020-09-26
mickeychan 2020-09-17
rungod 2020-09-16
xiaozhukuaitui 2020-09-05
小西0 2020-09-05
xiaozhukuaitui 2020-08-25
龙心尘 2020-08-25
rungod 2020-08-22
waiwaiLILI 2020-07-20
shilongdred 2020-06-28
人工智能快报 2020-06-09
shilongdred 2020-06-08
id=3&hmsr=%E5%BC%80%E5%8F%91%E8%80%85-AI%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF&hmpl=&hmcu=&hmkw=&hmci=
zmosquito 2020-06-02
nextwhy 2020-05-20
zuiyingong 2020-03-28