百度地图实现定位图标随手机方向变化而变化,即运用方向传感器
百度地图实现定位图标随手机方向变化而变化,即运用方向传感器
前言: 在安卓《第一行代码》里面关于百度地图sdk的学习中,发现书上的代码只实现到把自己(即定位图标)显示在地图上这一步,而图标的指向是固定的不会随手机方向改变而改变,用起来挺别扭的,故我自己查文档实现了这一功能。
具体实现:一、在书上代码的基础上,自己写一个MyOrientationListener用于监听方向传感器。
public class MyOrientationListener implements SensorEventListener {private Context context;private SensorManager sensorManager;private Sensor sensor;private float lastX; //用于记录最后一次从方向传感器获得的x值private OnOrientationListener onOrientionListener; //内部接口实现回调public interface OnOrientationListener{void onOrientationChanged(float x);}public MyOrientationListener(Context context){this.context=context;}public void setOnOrientionListener(OnOrientationListener onOrientionListener){this.onOrientionListener=onOrientionListener;}@Overridepublic void onSensorChanged(SensorEvent event) { //手机方向改变时调用if (event.sensor.getType()==Sensor.TYPE_ORIENTATION){float x=event.values[SensorManager.DATA_X];if (Math.abs(xlastX)>1.0 //设置条件防止频繁回调{onOrientionListener.onOrientationChanged(x);lastX=x;}}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}public void onStart(){ //获取传感器sensor并与onOrientionListener绑定sensorManager=(SensorManager)context.getSystemService(Context.SENSOR_SERVICE);if (sensorManager!=null){sensor=sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);}if(sensor!=null){sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_UI);}}public void onStop(){sensorManager.unregisterListener(this); //传感器解除绑定}
}
二、在Mainactivity中初始化MyOnrientationListener
private MyOrientationListener myOrientationListener;private double mCurrentLantitude; //此刻的纬度值private double mCurrentLongtitude; //此刻的经度值private int mXDirection; //此刻的x值,方向由传感器测出,范围0~360,为手机方向与北极的角度
private void initOrientationListener(){myOrientationListener=new MyOrientationListener(getApplicationContext());myOrientationListener.setOnOrientionListener(new MyOrientationListener.OnOrientationListener() {@Overridepublic void onOrientationChanged(float x) {mXDirection=(int)x;// Log.d("MainActivity"," "+x);builder=new MyLocationData.Builder();builder.longitude(mCurrentLongtitude).latitude(mCurrentLantitude).direction(mXDirection);data=builder.build();baiduMap.setMyLocationData(data); //手机方向改变实时改变图标指向MyLocationConfiguration configuration = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null );baiduMap.setMyLocationConfigeration(configuration);}});}
注意:得把MyLocationConfiguration的构造函数第二个参数设置我为true才可显示方向信息,即图标方向才会改变。
三、管理传感器
protected void onStart(){super.onStart();myOrientationListener.onStart();}
protected void onStop(){super.onStop();myOrientationListener.onStop();}
百度地图实现定位图标随手机方向变化而变化,即运用方向传感器相关推荐
- 安卓百度地图之定位图标在地图上显示
此文章接上一篇文件:安卓百度地图之定位_zpon_wangxuan的博客-CSDN博客,对于地图上显示定位图标就是在地图上添加一个地图的marker就可以了: 布局文件代码: <LinearLa ...
- android百度地图更换定位图标,android百度地图定位,改变MyLocationOverlay默认图标(原始为蓝色点)(两种方法)...
开放地图API无外乎google ,百度,高德等.其它的还有很多,不过比较好用的就这三种了,如果不需要出国(台湾例外),则最好使用百度地图,性能比高德好的多,无聊的时候自己可以测试测试.. 下面我简单 ...
- Android百度地图之定位图层
来自:http://blog.csdn.net/u010142437/article/details/11577077 在使用百度地图结合GPS进行定位一文中,我们已经介绍了利用GPS结合百度地图进行 ...
- 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)
使用最新版本的百度地图需要注意的几个地方: 1.libs文件夹下要有android-support-v4.jar.baidumapapi_v2_1_0.jar.locSDK_3.1.jar三个jar包 ...
- android百度地图sdk定位权限,Android:使用百度地图SDK实现定位:下载SDK、申请密钥、动态获得Android权限...
最近想实现一个打卡的功能,想到可以利用百度地图的SDK.网上有很多关于百度地图SDK定位.地图功能应用的demo,这部分倒不是很困难.但网上很多博客写的内容一般都着重于代码部分,很多下载配置和编译器设 ...
- AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能
在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...
- AngularJS进阶 十九 在AngularJS应用中集成百度地图实现定位功能
在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...
- 关于开发百度地图的定位以及导航的代码记录
因为年前的工作中用到了百度地图的定位 导航功能,然后又去翻阅了百度sdk相关的api后进行开发,现在对其进行一些整理,方便后面遇到相关开发时使用. 开发之前,先进行准备工作,在百度地图的开发者网站上下 ...
- 百度IP定位和百度地图API定位
百度IP定位和百度地图API定位 在这里根据你所获得ip,来确定这个ip的大体位置 [java] view plaincopy <span style="font-size:14px; ...
- android 百度地图拖动定位,百度地图获取定位,实现拖动marker定位,返回具体的位置名...
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑"; ...
最新文章
- 再次证明消息四元组的处理顺序。
- Java 集合系列(4): LinkedList源码深入解析2
- sysbench压力测试工具简介和使用(一)
- Eclipse把默认为Gbk的编码变为UTF-8
- 使用Spring Boot 2.0的Spring Security:保护端点
- XenServer上启动虚拟机失败’The VDI is not available’的解决方法
- 计算机英语论文摘要,求英语高手翻译论文摘要,非常感谢!
- VBA中数组(Array)与随机数(Rnd)的使用
- java spring 源码下载_Spring源码下载
- 躬身入境DIY - 《传奇动物园》北京沙盘活动精彩回顾
- 网络工程师(软考)学习笔记3--计算机网络体系结构2
- vscode插件Todo Tree配置
- 【敏捷开发每日一贴】用户故事Userstory
- oa系统用什么云服务器,oa系统怎么选云服务器
- 高德地图使用心得,百度地图使用心得
- 2020算法面经问题汇总
- KNN分类——matlab(转载)
- Win10杀死进程方式
- 超级玩家全面进化 联想Z5s、Z5 Pro GT 855版、S5 Pro GT发布
- python爬虫(13)爬取百度贴吧帖子
热门文章
- Debian7安装无线网卡
- 「Computer Vision」Note on Kinetics and Two-Stream Inflated 3D ConvNets (I3D)
- mysql ubb html_自动闭合HTML/ubb标签函数
- coldfusion php,PHP加密代码转换为ColdFusion
- 如何在Word文档中画图,教程来啦,怎样在word文档中添加图形
- 用python写一个股票提醒、并用邮件方式发送出去
- 推荐!32个好用的百度网盘搜索引擎
- php文件迅雷下载不弹出来,javascript,_文件下载按钮被迅雷响应后,JS事件无法触发,javascript - phpStudy...
- Liunx官网下载步骤
- ❤️【独家】挑战全网最通俗易懂的神经网络的表达能力解释