直接上我的代码然后注释给的很清楚 public class SportActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

private MapView mapView;

private AMap aMap;

private TextView offlineMap, record;

private AMapLocationClient mLocationClient;

private AMapLocationClientOption mLocationOption;

private LocationSource.OnLocationChangedListener mListener;

private AMapLocation privLocation;

private SportMyView sportMyView;

private double distance;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.sport_avtivity);

//初始化DBFlow

FlowManager.init(new FlowConfig.Builder(this).build());

FlowManager.init(this);

mapView = findViewById(R.id.mapView);

mapView.onCreate(savedInstanceState);// 调用地图所必须重写

if (aMap == null) {

aMap = mapView.getMap();

}

aMap.getUiSettings().setZoomControlsEnabled(false);

aMap.moveCamera(CameraUpdateFactory.zoomTo(15));

aMap.setMapTextZIndex(2);

setUpMap();

init();

insertModel();

}

private void setUpMap() {

/**

* 设置一些amap的属性

*/

UiSettings uiSettings = aMap.getUiSettings();

uiSettings.setCompassEnabled(true);// 设置指南针是否显示

uiSettings.setZoomControlsEnabled(true);// 设置缩放按钮是否显示

uiSettings.setScaleControlsEnabled(true);// 设置比例尺是否显示

uiSettings.setRotateGesturesEnabled(true);// 设置地图旋转是否可用

uiSettings.setTiltGesturesEnabled(true);// 设置地图倾斜是否可用

uiSettings.setMyLocationButtonEnabled(false);// 设置默认定位按钮是否显示

/** 自定义系统定位小蓝点

*

*/

MyLocationStyle myLocationStyle = new MyLocationStyle();

aMap.setMyLocationStyle(myLocationStyle);

aMap.setLocationSource(mLocationSource);// 设置定位监听

aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示

aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false

}

/**

* 进入历史详情和地图管理页面

*/

private void init() {

offlineMap = findViewById(R.id.offlineMap);

offlineMap.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Intent intent = new Intent(SportActivity.this, OfflineMapActivity.class);

startActivity(intent);

}

});

//历史记录

record = findViewById(R.id.record);

record.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Intent intent = new Intent(SportActivity.this, RecordActivity.class);

startActivity(intent);

}

});

}

public LocationSource mLocationSource = new LocationSource() {

@Override

public void activate(OnLocationChangedListener onLocationChangedListener) {

mListener = onLocationChangedListener;

sportMyView = findViewById(R.id.sportMyView);

sportMyView.setVisibility(View.INVISIBLE);

sportMyView.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//初始化定位

initAmapLocation();

}

});

sportMyView.setVisibility(View.VISIBLE);

}

@Override

public void deactivate() {

mListener = null;

if (mLocationClient != null) {

mLocationClient.stopLocation();

mLocationClient.onDestroy();

}

mLocationClient = null;

}

};

/**

* 初始化定位

*/

private void initAmapLocation() {

//初始化定位

mLocationClient = new AMapLocationClient(this);

//设置定位回调监听

mLocationClient.setLocationListener(mAMapLocationListener);

//初始化AMapLocationClientOption对象

mLocationOption = new AMapLocationClientOption();

// 设置定位场景,目前支持三种场景(签到、出行、运动,默认无场景)

mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.Transport);

//设置定位模式为AMapLocationMode.Hight_Accuracy,设备定位模式。

mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);

//设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。

mLocationOption.setInterval(2000);

//设置是否返回地址信息(默认返回地址信息)

mLocationOption.setNeedAddress(true);

//单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。

mLocationOption.setHttpTimeOut(20000);

if (null != mLocationClient) {

mLocationClient.setLocationOption(mLocationOption);

//设置场景模式后最好调用一次stop,再调用start以保证场景模式生效

mLocationClient.startLocation();

}

}

/**

* 定位回调每1秒调用一次

*/

public AMapLocationListener mAMapLocationListener = new AMapLocationListener() {

@Override

public void onLocationChanged(AMapLocation amapLocation) {

if (amapLocation != null) {

if (amapLocation.getErrorCode() == 0) {

mListener.onLocationChanged(amapLocation);// 显示系统小蓝点,不写这一句无法显示到当前位置

amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表

Log.e(TAG, "获取经纬度集合" + privLocation);//打Log记录点是否正确

amapLocation.getAccuracy();//获取精度信息

amapLocation.getBearing();//获取方向角信息

amapLocation.getSpeed();//获取速度信息 单位:米/秒

amapLocation.getLocationType();//查看是什么类型的点

Log.e(TAG, "获取点的类型" + amapLocation.getLocationType());

if (amapLocation.getLocationType() == 1) {

Location location = new Location();

location.latitude = amapLocation.getLatitude();

location.longitutd = amapLocation.getLongitude();

drawLines(amapLocation);//一边定位一边连线

distance += distance;

Toast.makeText(SportActivity.this, "经纬度"+distance+"KM",Toast.LENGTH_SHORT).show();

Log.e("DDDDDDDDD", String.valueOf(distance));

Log.e(TAG, "获取点的类型" + amapLocation.getLocationType());

Log.e("LLLLL", String.valueOf(location.latitude));

Log.e("LLLLLLLL", String.valueOf(location.longitutd));

}

//获取定位时间

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Date date = new Date(amapLocation.getTime());

sdf.format(date);

privLocation = amapLocation;

} else {

//定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。

Log.e("AmapError", "location Error, ErrCode:"

+ amapLocation.getErrorCode() + ", errInfo:" + amapLocation.getErrorInfo());

}

}

}

};

/**

* 绘制运动路线

*

* @param curLocation

*/

public void drawLines(AMapLocation curLocation) {

if (null == privLocation) {

return;

}

PolylineOptions options = new PolylineOptions();

//上一个点的经纬度

options.add(new LatLng(privLocation.getLatitude(), privLocation.getLongitude()));

//当前的经纬度

options.add(new LatLng(curLocation.getLatitude(), curLocation.getLongitude()));

options.width(10).geodesic(true).color(Color.GREEN);

aMap.addPolyline(options);

//距离的计算

distance = AMapUtils.calculateLineDistance(new LatLng(privLocation.getLatitude(),

privLocation.getLongitude()), new LatLng(curLocation.getLatitude(),

curLocation.getLongitude()));

}

/**

* 向数据库中传递数据

*/

private void insertModel() {

MyDataBase myDatabase = new MyDataBase();

myDatabase.averagespeed = "100";

myDatabase.duration = "23";

myDatabase.distance = distance;

myDatabase.time = "2018-10-23";

//myDatabase.save();

Log.e("TEST", String.valueOf(myDatabase.averagespeed));

Log.e("Sunday", String.valueOf(myDatabase.id));

Log.e("Location", String.valueOf(myDatabase.location));

}

/**

* 必须重写的方法

*/

@Override

protected void onDestroy() {

mapView.onDestroy();

super.onDestroy();

}

/**

* 必须重写的方法

*/

@Override

protected void onPause() {

mapView.onPause();

super.onPause();

}

/**

* 必须重写的方法

*/

@Override

protected void onResume() {

mapView.onResume();

super.onResume();

}

}

上面的代码中直接复制就行,泛红的方法删除就可以是用了。

android 图片运动轨迹,基于Android的高德地图的定位和运动轨迹记录的功能相关推荐

  1. 基于Android的高德地图的定位和运动轨迹记录的功能

           废话不多说,首先去高德地图的API上获取key(这一步很重要),因为没有KEY是无法获取高德地图的. 首先这是高德地图API的网址https://lbs.amap.com/,可以点击进去 ...

  2. Android 集成高德地图——当前定位,添加图标,画路线,设置显示中心位置,比例,地图刷新位置监听,判断GPS开启,去打开GPS

    /*** 判断定位服务是否开启** @param* @return true 表示开启*/ public static boolean isLocationEnabled(Context contex ...

  3. Android Studio之高德地图实现定位和3D地图显示

    在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德地图实现定位和3D地图显示,并标注相应位置,话不多说,先看看效果,在上代码 ...

  4. android高德地图默认当前位置,【报Bug】1.9.2 android 高德地图无法定位到当前位置...

    详细问题描述 (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题) [内容] 1.9.2版本 a ...

  5. Android+SpringBoot+Vue+高德地图实现后台查看车辆实时位置功能

    场景 通过给车辆的驾驶员的手机安装app,管理员在后台可以实时查看车辆的实时位置. 实现思路: app中集成高德地图,app启动登录后,定时地获取当前定位信息连同当前账号上传到服务器后台. 后台将获取 ...

  6. 基于Cesium使高德地图、百度地图、腾讯地图与天地图无偏移叠加

    基于Cesium使高德地图.百度地图.腾讯地图与天地图无偏移叠加 需求的产生 方法的探索 经验总结 需求的产生 在Cesium框架中,可以支持很多ImageryProvider,但是Viewer只用一 ...

  7. Android本科毕业设计基于Android的天气预报APP系统(附带源码)

    Android本科毕业设计基于Android的天气预报开发APP系统源码.显示城市当前的实时天气状况,包括城市名称.城市名片.天气情况.温度高低.星期等信息.界面左边有一列城市列表,显示中国各个城市名 ...

  8. android------之高德地图实现定位和3D地图显示

    2019独角兽企业重金招聘Python工程师标准>>> 在应用开发中,地图开发是经常需要使用的"组件",国内比较出名的是就是百度地图和高德地图. 此博客讲的是高德 ...

  9. 利用高德地图实现定位功能

    最近学习使用高德地图可谓是出师不利....嘛,不知道为啥高德给的3d地图的jar包用不了,最后实在没办法用了2d的jar包,然后在大佬和其他资料的帮助下,实现了高德地图的定位功能.接下来就说一下具体的 ...

最新文章

  1. 报错 org.springframework.beans.factory.BeanCreationException
  2. 她在博士阶段破釜沉舟转换研究方向后,发表了32篇SCI
  3. leetcode算法题--合并两个有序数组
  4. 大数据变现四种途径,如何把海量数据变成现金?
  5. Atitit ftp原理与解决方案
  6. 2018 计蒜之道 复赛
  7. C++---------【多态性】之【静态多态性】
  8. 如何运行网页html,如何在网页中运行html代码
  9. c语言输入1显示good,求助 无论输入什么输出的结果是个0
  10. 微信端打开页面,布局乱了
  11. [BZOJ1009]GT考试
  12. java生成 折线图
  13. ftl模板导出excel_ftl方式导出excel
  14. 用 Python 分析某医院药品销售案例!
  15. 产权登记在未成年子女名下,离婚时应如何处理
  16. 基于SIMULINK的AWGN信道仿真
  17. 小米5测试机软件,小米手机硬件检测软件
  18. 电脑太卡,重置电脑会解决问题吗
  19. python 批量处理图片文件(做到图片不变形)
  20. 删除按升序排列的单链表中的重复元素

热门文章

  1. 操作系统中文件系统-文件的分类
  2. 自举电路工作原理和自举电阻和电容的选取
  3. 第一章: Optix光线跟踪引擎简介
  4. 【论文翻译】HCGN:面向集体分类的异构图卷积网络深度学习模型
  5. 阶乘求和 C语言实现求阶乘之和 三种方法实现 先阶乘再累加
  6. python发送文件_Python发送邮件(最全)
  7. php 判断app浏览器打开,手机浏览器下判断是否安装某app,并判断是否打开该应用...
  8. java 锁 面试题_Java面试题-Java中的锁
  9. Centos7中语言如何设置成中文
  10. 【委托】—是什么怎么用什么用