Android高德地图小图标跟随手机旋转实现
随着移动互联的发展越来越多的智能手机应用都接入了地图功能,高德地图提供了一套免费的完善的SDK使得接入地图及导航功能更加方便快捷。智能手机的传感器将外部的状态转换成模拟的数据,从而实现更丰富的功能。陀螺仪传感器加之地图图标的方向指示使得定位及导航更加形象易懂。定位图标跟随手机旋转起基本原理就是根据陀螺仪取到的旋转角度讲图标进行旋转。
工具/原料
Android Studio、高德地图SDK
PC、带有陀螺仪的Android手机
准备工作
在高德地图开发网站申请APIKEY,下载SDK。高德地图定位SDK和地图SDK分为两个jar包,两个jar包都需要导入到工程中。
代码部分
初始化高德地图、设置定位图标样式
private AMap aMap;
aMap = mapView.getMap();//获取地图实例
MyLocationStyle myLocationStyle = new MyLocationStyle();
myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.location_map));// 设置小蓝点的图标
aMap.setMyLocationStyle(myLocationStyle);//设置定位图标样式
初始化陀螺仪传感器,注册回调函数
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);//注册回调函数
实现陀螺仪状态变化回调函数
@Override
public void onSensorChanged(SensorEvent 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);//
}
}
注意事项
注意在Activity生命周期内状态变化后释放对应的传感器资源,避免导致其他应用无法获取到资源出现异常,
高德地图具体使用方法见官方文档。