百度地图实现定位图标随手机方向变化而变化,即运用方向传感器

前言: 在安卓《第一行代码》里面关于百度地图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();}

百度地图实现定位图标随手机方向变化而变化,即运用方向传感器相关推荐

  1. 安卓百度地图之定位图标在地图上显示

    此文章接上一篇文件:安卓百度地图之定位_zpon_wangxuan的博客-CSDN博客,对于地图上显示定位图标就是在地图上添加一个地图的marker就可以了: 布局文件代码: <LinearLa ...

  2. android百度地图更换定位图标,android百度地图定位,改变MyLocationOverlay默认图标(原始为蓝色点)(两种方法)...

    开放地图API无外乎google ,百度,高德等.其它的还有很多,不过比较好用的就这三种了,如果不需要出国(台湾例外),则最好使用百度地图,性能比高德好的多,无聊的时候自己可以测试测试.. 下面我简单 ...

  3. Android百度地图之定位图层

    来自:http://blog.csdn.net/u010142437/article/details/11577077 在使用百度地图结合GPS进行定位一文中,我们已经介绍了利用GPS结合百度地图进行 ...

  4. 在Fragment中实现百度地图,定位到当前位置(基于SDKv2.1.0)

    使用最新版本的百度地图需要注意的几个地方: 1.libs文件夹下要有android-support-v4.jar.baidumapapi_v2_1_0.jar.locSDK_3.1.jar三个jar包 ...

  5. android百度地图sdk定位权限,Android:使用百度地图SDK实现定位:下载SDK、申请密钥、动态获得Android权限...

    最近想实现一个打卡的功能,想到可以利用百度地图的SDK.网上有很多关于百度地图SDK定位.地图功能应用的demo,这部分倒不是很困难.但网上很多博客写的内容一般都着重于代码部分,很多下载配置和编译器设 ...

  6. AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  7. AngularJS进阶 十九 在AngularJS应用中集成百度地图实现定位功能

    在AngularJS应用中集成百度地图实现定位功能 注:请点击此处进行充电! 前言 根据项目需求,需要实现手机定位功能,考虑到百度业务的强大能力,遂决定使用百度地图第三方服务. 添加第三方模块的步骤与 ...

  8. 关于开发百度地图的定位以及导航的代码记录

    因为年前的工作中用到了百度地图的定位 导航功能,然后又去翻阅了百度sdk相关的api后进行开发,现在对其进行一些整理,方便后面遇到相关开发时使用. 开发之前,先进行准备工作,在百度地图的开发者网站上下 ...

  9. 百度IP定位和百度地图API定位

    百度IP定位和百度地图API定位 在这里根据你所获得ip,来确定这个ip的大体位置 [java] view plaincopy <span style="font-size:14px; ...

  10. android 百度地图拖动定位,百度地图获取定位,实现拖动marker定位,返回具体的位置名...

    body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑"; ...

最新文章

  1. 再次证明消息四元组的处理顺序。
  2. Java 集合系列(4): LinkedList源码深入解析2
  3. sysbench压力测试工具简介和使用(一)
  4. Eclipse把默认为Gbk的编码变为UTF-8
  5. 使用Spring Boot 2.0的Spring Security:保护端点
  6. XenServer上启动虚拟机失败’The VDI is not available’的解决方法
  7. 计算机英语论文摘要,求英语高手翻译论文摘要,非常感谢!
  8. VBA中数组(Array)与随机数(Rnd)的使用
  9. java spring 源码下载_Spring源码下载
  10. 躬身入境DIY - 《传奇动物园》北京沙盘活动精彩回顾
  11. 网络工程师(软考)学习笔记3--计算机网络体系结构2
  12. vscode插件Todo Tree配置
  13. 【敏捷开发每日一贴】用户故事Userstory
  14. oa系统用什么云服务器,oa系统怎么选云服务器
  15. 高德地图使用心得,百度地图使用心得
  16. 2020算法面经问题汇总
  17. KNN分类——matlab(转载)
  18. Win10杀死进程方式
  19. 超级玩家全面进化 联想Z5s、Z5 Pro GT 855版、S5 Pro GT发布
  20. python爬虫(13)爬取百度贴吧帖子

热门文章

  1. Debian7安装无线网卡
  2. 「Computer Vision」Note on Kinetics and Two-Stream Inflated 3D ConvNets (I3D)
  3. mysql ubb html_自动闭合HTML/ubb标签函数
  4. coldfusion php,PHP加密代码转换为ColdFusion
  5. 如何在Word文档中画图,教程来啦,怎样在word文档中添加图形
  6. 用python写一个股票提醒、并用邮件方式发送出去
  7. 推荐!32个好用的百度网盘搜索引擎
  8. php文件迅雷下载不弹出来,javascript,_文件下载按钮被迅雷响应后,JS事件无法触发,javascript - phpStudy...
  9. Liunx官网下载步骤
  10. ❤️【独家】挑战全网最通俗易懂的神经网络的表达能力解释