随着移动互联的发展越来越多的智能手机应用都接入了地图功能,高德地图提供了一套免费的完善的SDK使得接入地图及导航功能更加方便快捷。智能手机的传感器将外部的状态转换成模拟的数据,从而实现更丰富的功能。陀螺仪传感器加之地图图标的方向指示使得定位及导航更加形象易懂。定位图标跟随手机旋转起基本原理就是根据陀螺仪取到的旋转角度讲图标进行旋转。
工具/原料
Android Studio、高德地图SDK
PC、带有陀螺仪的Android手机
准备工作
1、在高德地图开发网站申请APIKEY,下载SDK。高德地图定位SDK和地图SDK分为两个jar包,两个jar包都需要导入到工程中。
代码部分
1、初始化高德地图、设置定位图标样式private AMap aMap;aMap = mapView.getMap();//获取地图实例MyLocationStyle myLocationStyle = new MyLocationStyle();myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.location_map));// 设置小蓝点的图标aMap.setMyLocationStyle(myLocationStyle);//设置定位图标样式
2、初始化陀螺仪传感器,注册回调函数private SensorManager mSM;private Sensor mSensor;mSM = (SensorManager) getSystemService(SENSOR_SERVICE);mSensor = mSM.getDefaultSensor(Sensor.TYPE_ORIENTATION);mSM.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_UI);//注册回调函数
3、实现陀螺仪状态变化回调函数@Overridepublic vo坡纠课柩id onSensorChanged(SensorEv髫潋啜缅ent event) { if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) { float degree = event.values[0]; float bearing = aMap.getCameraPosition().bearing; if (degree + bearing > 360) aMap.setMyLocationRotateAngle(degree + bearing - 360);// 设置小蓝点旋转角度 else aMap.setMyLocationRotateAngle(degree + bearing);// }}