博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【高德地图Android SDK】视频教学
阅读量:6229 次
发布时间:2019-06-21

本文共 6110 字,大约阅读时间需要 20 分钟。

前两天参加了高德在北航举办的公开课,感觉非常不错。完成老师布置的作业之后,还顺利地拿到了高德开发者认证证书!!

现在来跟大家分享一下,如何快速学习【高德地图Android SDK】的开发。一天包会!连环境如何配置,都在视频里有喔。

 

基础知识

Android 导航 SDK 是一款针对在线导航的产品,产品功能涵盖路径规划、模拟导航、GPS 定位、自定义导航界面、获取导航播报信息等。此外,该产品的导航路径计算与实时交通信息相结合,力求为用户提供更加合理、准确、人性化的导航服务。Android 导航 SDK 还支持步行路线规划和导航,使您的出行更加顺畅。

开发文档:

 

视频教学

一、如何使用Android SDK进行开发01—LBS开放平台简介及环境搭建

点击查看视频教学:

 

二、如何使用Android SDK进行开发02—marker标记

点击查看视频教学:

 

三、如何使用Android SDK进行开发03—地图Overlay添加

点击查看视频教学:

 

四、如何使用Android SDK进行开发04—搜索功能

点击查看视频教学:

 

课后习题

完成课后习题,就能得到高德开发者认证证书呢!老师布置的作业是这样说的:

题目

做一个简单的记录GPS运动轨迹的小软件。

功能点

1、实时记录gps定位信息,在地图上绘制轨迹。(定位、折线overlay)
2、如果在某个位置点逗留时间超过30秒,还需要使用marker标记。(标记marker)

提交方式

1)发送邮件至<xudong.tang@autonavi.com>
2)需提交一个zip包,里面包含apk和源程序

参与讨论

高德认证开发者QQ群号 253476702

 

代码揭秘

1、地图显示示意图

 

地图显示代码

public class BasicMapActivity extends Activity {    private MapView mapView;    private AMap aMap;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // R 需要引用包import com.amapv2.apis.R; setContentView(R.layout.basicmap_activity); mapView = (MapView) findViewById(R.id.map); mapView.onCreate(savedInstanceState);// 必须要写  init(); } /** * 初始化AMap对象 */ private void init() { if (aMap == null) { aMap = mapView.getMap(); } } /** * 方法必须重写 */ @Override protected void onResume() { super.onResume(); mapView.onResume(); } /** * 方法必须重写 */ @Override protected void onPause() { super.onPause(); mapView.onPause(); } /** * 方法必须重写 */ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } /** * 方法必须重写 */ @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } }

 

标记示意图

 

2、标记代码

private void addMarkersToMap(){    //声明一个动画帧集合。    ArrayList giflist = new ArrayList();    //添加每一帧图片。    giflist.add(BitmapDescriptorFactory.fromResource(R.drawable.navi_map_flash));    giflist.add(BitmapDescriptorFactory.fromResource(R.drawable.navi_map_flash1));    //设置远小近大效果,2.1.0版本新增;设置刷新一次图片资源的周期。    CHENGDU = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f)                .position(Constants.CHENGDU).title("成都市")                .snippet("成都市:30.679879, 104.064855").icons(giflist) .perspective(true).draggable(true).period(50)); CHENGDU.showInfoWindow();// 设置默认显示一个infowinfow markerOption = new MarkerOptions(); markerOption.position(Constants.XIAN); markerOption.title("西安市").snippet("西安市:34.341568, 108.940174"); markerOption.perspective(true); markerOption.draggable(true); markerOption.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)); XIAN = aMap.addMarker(markerOption); // 添加带有系统默认icon的marker drawMa

 

 

3、折线示意图

 

折线代码

private void setUpMap(){        mColorBar.setOnSeekBarChangeListener(this);        mAlphaBar.setOnSeekBarChangeListener(this);        mWidthBar.setOnSeekBarChangeListener(this);        aMap.moveCamera(CameraUpdateFactory.zoomTo(4));        // 绘制一个虚线三角形        polyline = aMap.addPolyline((new PolylineOptions()) .add(Constants.SHANGHAI, Constants.BEIJING, Constants.CHENGDU) .width(10).setDottedLine(true).geodesic(true) .color(Color.argb(255, 1, 1, 1))); // 绘制一个乌鲁木齐到哈尔滨的大地曲线 aMap.addPolyline((new PolylineOptions()) .add(new LatLng(43.828, 87.621), new LatLng(45.808, 126.55)) .geodesic(true).color(Color.RED)); } /** * Polyline中对填充颜色,透明度,画笔宽度设置响应事件 */ @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (polyline == null) { return; } if (seekBar == mColorBar) { polyline.setColor(Color.argb(progress, 1, 1, 1)); } else if (seekBar == mAlphaBar) { float[] prevHSV = new float[3]; Color.colorToHSV(polyline.getColor(), prevHSV); polyline.setColor(Color.HSVToColor(progress, prevHSV)); } else if (seekBar == mWidthBar) { polyline.setWidth(progress); } }

 

4、定位示意图

 

定位代码

/** * AMapV2地图中简单介绍显示定位小蓝点 */public class MultyLocationActivity extends Activity implements LocationSource, AMapLocationListener {    private AMap aMap;    private MapView mapView;    private OnLocationChangedListener mListener;    private LocationManagerProxy mAMapLocationManager;     @Override    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.locationsource_activity); mapView = (MapView) findViewById(R.id.map); mapView.onCreate(savedInstanceState); init(); } /** * 初始化AMap对象 */ private void init() { if (aMap == null) { aMap = mapView.getMap(); setUpMap(); } } private void setUpMap() { Map.setLocationSource(this);// 设置定位监听 aMap.getUiSettings().setMyLocationButtonEnabled(true);// 设置默认定位按钮是否显示 aMap.setMyLocationEnabled(true);// 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false // 设置定位的类型为定位模式:定位(AMap.LOCATION_TYPE_LOCATE)、跟随(AMap.LOCATION_TYPE_MAP_FOLLOW) // 地图根据面向方向旋转(AMap.LOCATION_TYPE_MAP_ROTATE)三种模式  aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE); } /** * 此方法需存在 */ @Override protected void onResume() { super.onResume(); mapView.onResume(); } /** * 此方法需存在 */ @Override protected void onPause() { super.onPause(); mapView.onPause(); deactivate(); } /** * 此方法需存在 */ @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } /** * 此方法已经废弃 */ @Override public void onLocationChanged(Location location) { } /** * 定位成功后回调函数 */ @Override public void onLocationChanged(AMapLocation amapLocation) { if (mListener != null && amapLocation != null) { if (amapLocation.getAMapException().getErrorCode() == 0) { mListener.onLocationChanged(amapLocation);// 显示系统小蓝点  } } } /** * 激活定位 */ @Override public void activate(OnLocationChangedListener listener) { mListener = listener; if (mAMapLocationManager == null) { mAMapLocationManager = LocationManagerProxy.getInstance(this); //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求 //在定位结束后,在合适的生命周期调用destroy()方法 //其中如果间隔时间为-1,则定位只定一次  mAMapLocationManager.requestLocationData( LocationProviderProxy.AMapNetwork, 60*1000, 10, this); } } /** * 停止定位 */ @Override public void deactivate() { mListener = null; if (mAMapLocationManager != null) { mAMapLocationManager.removeUpdates(this); mAMapLocationManager.destroy(); } mAMapLocationManager = null; } }

 

转载于:https://www.cnblogs.com/milkmap/p/4011491.html

你可能感兴趣的文章
java jdbc使用配置文件连接数据库
查看>>
ASP.NET MVC中三方登录: 微软、谷歌、Office365
查看>>
迭代器模式
查看>>
Liferay 启动过程分析7-初始化布局模板
查看>>
java格式化json字符串输入到文本中
查看>>
redis主从集群搭建及容灾部署(哨兵sentinel)
查看>>
apollo生产环境配置-实践笔记(附搭建框架图)
查看>>
正则去掉首尾空格以及首尾的
查看>>
CVPR
查看>>
python+selenium自动化测试(四)
查看>>
06Action中的Struts广告
查看>>
BashShell脚本的输入
查看>>
Docker镜像加速器
查看>>
我理解的Java并发基础(一):一些基本概念
查看>>
PHP 策略模式
查看>>
MySQL 设置密码,连接,常用命令
查看>>
基于MaxCompute构建企业用户画像(用户标签的制作)
查看>>
嵌入式系统基础及知识及接口技术总结
查看>>
指针和数组都是C语言的精髓所在,两者有何联系区别?
查看>>
Homebrew简介和基本使用
查看>>