导语
本章根据baidu地图API,实现打卡功能。用到了基础地图、覆盖物、定位图层、陀螺仪方法、悬浮信息弹框。
(这里原创!!!转载请表明我的原文地址~)
baidu地图API地址 :Android 地图SDK
请先注册注册账号和获取密钥,并实现地图显示出来。(注意:密钥、权限要设置)
另外,我得说明本章所下载官方Demo 和 导入的jar包和so文件。自定义下载即可,如下图:
接下来,一起看实现效果。
源码Git地址:BaiduMapApp
效果图
实现代码·三步骤
第一步:基础地图和方向传感器
类先实现方向传感器 implements SensorEventListener
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
double x = sensorEvent.values[SensorManager.DATA_X];
if (Math.abs(x - lastX) > 1.0) {
mCurrentDirection = (int) x;
locData = new MyLocationData.Builder()
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(mCurrentDirection).latitude(mCurrentLat)
.longitude(mCurrentLon).build();
mBaiduMap.setMyLocationData(locData);
}
lastX = x;
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
/**
* 初始化地图
*/
private void initBaiduMap() {
mMapView = (MapView) findViewById(R.id.mapview);
mBaiduMap = mMapView.getMap();
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
mBaiduMap.setMyLocationEnabled(true);//开启定位图层
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);//获取传感器管理服务
}
@Override
protected void onResume() {
super.onResume();
mMapView.onResume();
//为系统的方向传感器注册监听器
mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_UI);
}