1.获取AK

发布版:

keytool -v -list -keystore key.jks

SHA1:A9:7D:70:70:4C:67:83:71:AC:FD:18:6E:EF:9B:08:FF:CF:07:A6:BD

开发版:

keytool -v -list -keystore debug.keystore

SHA1:39:FC:60:2A:FA:CB:BF:6C:79:CA:98:58:C6:2F:F8:58:FE:56:24:2F

2.创建定位测试项目

1)AndroidManifest.xml

增加权限,声明service和ak鉴权

2)导入项目所需的jar包和so

BaiduLBS_Android.jar

libBaiduMapSDK_base_v4_5_2.so

libBaiduMapSDK_map_v4_5_2.so

liblocSDK7b.so

在app的build.gradle android{}中说明so为该libs路径

android {

...

sourceSets {

main {

jniLibs.srcDir 'libs'

}

}

}

3.定位流程

1)初始化LocationClient类

LocationClient类最好在主线程中声明,需要Context类型的参数。

Context需要时全进程有效的Context,推荐用getApplicationConext获取全进程有效的Context

mLocClient=new LocationClient(getApplicationContext()); mLocClient.registerLocationListener(listener);

2)配置SDK参数

LocationClientOption option = new LocationClientOption();

option.setIsNeedAddress(true);//是否要地址

option.setOpenGps(true);

option.setCoorType("bd09ll"); // 设置坐标类型

option.setScanSpan(1000);//可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的

mLocClient.setLocOption(option);

mLocClient.start();

3)实现BDAbstractLocationListener接口

Android定位SDK自v7.2版本起,对外提供了Abstract类型的监听接口BDAbstractLocationListener,用于实现定位监听。原有BDLocationListener暂时保留,推荐开发者升级到Abstract类型的新监听接口使用,该接口会异步获取定位结果

@Override

public void onReceiveLocation(BDLocation bdLocation) {

Log.i("bdmap","定位类型:"+bdLocation.getLocTypeDescription()+"\n"

+"纬度:"+bdLocation.getLatitude()+"\n"

+"经度:"+bdLocation.getLongitude()+"\n"

+"详细地址:"+bdLocation.getAddrStr()+"\n"

+"卫星数目"+bdLocation.getSatelliteNumber());

}

输出:

I/bdmap: 定位类型:GPS location successful!

纬度:30.555669

经度:104.075068

详细地址:中国四川省成都市武侯区G213(xxxxxx)

卫星数目4

4.增加Mark

LatLng ll = new LatLng(bdLocation.getLatitude(),

bdLocation.getLongitude());

BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_openmap_mark);

// 构建MarkerOption,用于在地图上添加Marker

OverlayOptions option = new MarkerOptions()

.position(ll) //mark出现的位置

.icon(bitmap) //mark图标

.draggable(true);//mark可拖动

//在地图上添加Marker并显示

mBaiduMap.addOverlay(option);

//对Marker的点击事件

mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {

@Override

public boolean onMarkerClick(Marker marker) {

//获取marker中的数据

double lat = marker.getPosition().latitude;

double log = marker.getPosition().longitude;

Toast.makeText(getApplication(),

"经度"+log+" 纬度"+lat,Toast.LENGTH_LONG)

.show();

return false;

}

});

5.Demo

public class MainActivity extends AppCompatActivity {

private MapView mMapView = null;

private BaiduMap mBaiduMap = null;

boolean isFirstLoc = true; // 是否首次定位

LocationClient mLocClient;

private MyLocationData locData; //定位数据包

private Marker marker;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

SDKInitializer.initialize(getApplicationContext());

setContentView(R.layout.activity_main);

mMapView = (MapView)findViewById(R.id.bmapView);

mBaiduMap = mMapView.getMap();

//设置类型

mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);

mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(17));

// 开启定位图层

mBaiduMap.setMyLocationEnabled(true);

mLocClient = new LocationClient(getApplicationContext());

mLocClient.registerLocationListener(listener);

LocationClientOption option = new LocationClientOption();

option.setIsNeedAddress(true);//是否要地址

option.setOpenGps(true);

option.setCoorType("bd09ll"); // 设置坐标类型

option.setScanSpan(1000);//可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的

mLocClient.setLocOption(option);

mLocClient.start();

//对Marker的点击事件

mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {

@Override

public boolean onMarkerClick(Marker marker) {

//获取marker中的数据

double lat = marker.getPosition().latitude;

double log = marker.getPosition().longitude;

Toast.makeText(getApplication(),

"经度"+log+" 纬度"+lat,Toast.LENGTH_LONG)

.show();

return false;

}

});

//Map点击事件,点击地图移除marker

mBaiduMap.setOnMapClickListener(new BaiduMap.OnMapClickListener() {

@Override

public void onMapClick(LatLng latLng) {

marker.remove();//移除marker

}

@Override

public boolean onMapPoiClick(MapPoi mapPoi) {

return false;

}

});

}

/*** * 定位结果回调,在此方法中处理定位结果 */

BDAbstractLocationListener listener = new BDAbstractLocationListener() {

@Override

public void onReceiveLocation(BDLocation bdLocation) {

Log.i("bdmap","定位类型:"+bdLocation.getLocTypeDescription()+"\n"

+"纬度:"+bdLocation.getLatitude()+"\n"

+"经度:"+bdLocation.getLongitude()+"\n"

+"详细地址:"+bdLocation.getAddrStr()+"\n"

+"卫星数目"+bdLocation.getSatelliteNumber());

//构造定位数据

locData = new MyLocationData.Builder()

.accuracy(bdLocation.getRadius())

.latitude(bdLocation.getLatitude())

.longitude(bdLocation.getLongitude())

.build();

mBaiduMap.setMyLocationData(locData);

if (isFirstLoc) {

isFirstLoc = false;

LatLng ll = new LatLng(bdLocation.getLatitude(),

bdLocation.getLongitude());

BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.mipmap.icon_openmap_mark);

// 构建MarkerOption,用于在地图上添加Marker

OverlayOptions option = new MarkerOptions()

.position(ll) //mark出现的位置

.icon(bitmap) //mark图标

.draggable(true);//mark可拖动

//在地图上添加Marker并显示

marker = (Marker) mBaiduMap.addOverlay(option);

MapStatus.Builder builder = new MapStatus.Builder();

builder.target(ll).zoom(17.0f);

mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));

}

}

};

@Override

protected void onDestroy() {

//退出时销毁定位

mLocClient.stop();

//关闭定位图层

mBaiduMap.setMyLocationEnabled(false);

mMapView.onDestroy();

mMapView = null;

super.onDestroy();

}

@Override

protected void onResume() {

super.onResume();

mMapView.onResume();

}

@Override

protected void onPause() {

super.onPause();

mMapView.onPause();

}

}

android百度定位方式,Android 百度定位SDK相关推荐

  1. Android定位方式和测试方法,定位方式(d16)

    一,回顾, ①selector和xpath的区别,selector是解析的html,xpth是解析的xml,所以使用selector比使用xpath快, ②定位元素的单数和复数,当使用单数定位不到元素 ...

  2. 【自动驾驶】定位方式:RTK定位与激光融合定位

    对于自动驾驶定位技术更详细的介绍,可以参考这篇博客:自动驾驶定位技术(Localization)-GNSS 定位分为RTK定位和融合定位. RTK(Real Time Kinematic)定位: 实时 ...

  3. android删除打开方式,Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)...

    Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到 ...

  4. 自动化测试元素定位方式之find_elements_by_XXX()定位

    find_elements_by_XXX() 作用: 1.查找定位所有符合条件的元素 2.返回的定位元素格式为数组(列表)格式: 说明: 3.列表数据格式的读取需要指定下标(下标从0开始) 操作: 说 ...

  5. android builder布局方式,android – AlertDialog.Builder与自定义布局和EditText;无法访问视图...

    我试图用EditText对象创建一个警报对话框.我需要以编程方式设置EditText的初始文本.这是我有的. AlertDialog.Builder dialogBuilder = new Alert ...

  6. android 展示星期方式,Android显示从一周到另一周的日期(星期四至星期四)

    最后我得到了工作一个解决方案,解决我的问题: 在OnCreate中: TextView tv_chart_menuvotes = (TextView) findViewById(R.id.tv_cha ...

  7. android qq存储方式,android(5)(模拟QQ登录,文件存储,SD卡存储,SharedPreferences存储)...

    模拟QQ登录(记录账号和密码): 1.文件存储到文件中: /** * 文件存储 *@author Administrator * */ public class Utils { /** * 保存用户信 ...

  8. Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)...

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便.定位一般分为三种发方案:即GPS定位.Google网络定位以及基站定位 最简单的手机定位方式当然是通过GP ...

  9. java中常用的定位方式有哪些_java-selenium八种元素定位方式

    一.ID定位 一般情况下页面元素的id属性在当前网页中是唯一的所以使用ID定位可以保证定位的唯一性,不会像其他定位方式一样可能定位到多个页面元素.但有的网页页面元素没有id属性值,导致无法使用ID定位 ...

最新文章

  1. UIControlEvents的几种类型值
  2. oracle参数文件的本质
  3. 几种常用的图像处理函数库
  4. jQuery实例——展示表格点击变色、全选、删除
  5. 模拟退火求函数最值问题求解
  6. [Elasticsearch] es 6.8 编译报错 invalid type code: 85
  7. DataGridView的列宽设置
  8. Navicat(服务器对象) -2之MySQL 或 MariaDB 对象
  9. moreclipboard能记录多个粘贴内容的eclipse粘贴板插件
  10. python对数据进行统计分析_数据分析员用python做数据分析是怎么回事,需要用到python中的那些内容,具体是怎么操作的?...
  11. 卡耐基口才艺术与人际关系1
  12. 算法题-字符串匹配算法
  13. Alibaba 表格开源工具 easyexcel 快速使用教程
  14. apache poi excel显示 base64 图片_java操作Excel一:POI
  15. 通达信与飞狐不同函数的替代
  16. 怎样使用Excel填充柄的作用与功能
  17. 简支梁挠度计算公式推导_自己整理的简支梁挠度计算公式
  18. 艾司博讯:拼多多怎么设置团长ID?团长权限?
  19. 浙江师范大学计算机复试考什么,浙江师范大学考研难吗?一般要什么水平才可以进入?...
  20. python——正则表达式详解(二)

热门文章

  1. 如何开发一个小程序游戏?
  2. 概率论与数理统计 | (3) 随机变量
  3. 一份新媒体营销推广策划方案 助你升级主管路
  4. Attribute value is quoted with which must be escaped when used within the value 问题解决
  5. A/B Problem(大数)
  6. Matlab画圆方向图,如何在matlab里画天线的立体方向图?
  7. 在linux上安装微信/QQ/TIM/迅雷等
  8. JS:二叉树(2)——递归操作节点、构造二叉树
  9. 前端 点击复制文本 无需插件
  10. 吴恩达新课 医学图像AI(AI for Medicine)专项课程推荐