【高德地图Android SDK】视频教学
前两天参加了高德在北航举办的公开课,感觉非常不错。完成老师布置的作业之后,还顺利地拿到了高德开发者认证证书!!
现在来跟大家分享一下,如何快速学习【高德地图Android SDK】的开发。一天包会!连环境如何配置,都在视频里有喔。
基础知识
Android 导航 SDK 是一款针对在线导航的产品,产品功能涵盖路径规划、模拟导航、GPS 定位、自定义导航界面、获取导航播报信息等。此外,该产品的导航路径计算与实时交通信息相结合,力求为用户提供更加合理、准确、人性化的导航服务。Android 导航 SDK 还支持步行路线规划和导航,使您的出行更加顺畅。
开发文档:http://lbs.amap.com/api/android-navi-sdk/summary/
视频教学
一、如何使用Android SDK进行开发01—LBS开放平台简介及环境搭建
点击查看视频教学:http://v.163.com/paike/V8H1BIE6U/VA4PLC1AI.html
二、如何使用Android SDK进行开发02—marker标记
点击查看视频教学:http://v.163.com/paike/V8H1BJ7FL/VA4PMIKG3.html
三、如何使用Android SDK进行开发03—地图Overlay添加
点击查看视频教学:http://v.163.com/paike/V8H1BJ7FL/VA4POFD2H.html
四、如何使用Android SDK进行开发04—搜索功能
点击查看视频教学:http://v.163.com/paike/V8H1BIE6U/VA748DN20.html
课后习题
完成课后习题,就能得到高德开发者认证证书呢!老师布置的作业是这样说的:
题目
做一个简单的记录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;
}
}
【高德地图Android SDK】视频教学的更多相关文章
- 【视频教学】如何利用高德地图IOS SDK进行开发?
Step1:使用IOS SDK可以做什么高德地图 iOS SDK 是一套基于 iOS 5.1.1 及以上版本的地图应用程序开发接口.通过该接口,用户可使用高德地图数据和服务轻松构建功能丰富.交互性强的 ...
- 百度地图 Android SDK - 检索功能使用的简单演示样例
百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...
- 百度地图 Android SDK - Hello Baidu Map
例如,给广大以下主要开发者介绍了如何使用百度地图Android SDK构造的主应用程序的地图! 第一步.创建Androidproject,将百度地图Android SDK的开发包导入到project对 ...
- 百度地图 Android SDK - 个性化地图
什么是百度个性化地图Android SDK? 百度个性化地图Android SDK是一套基于Android 2.2及以上版本号设备的应用程序接口,您能够通过该套接口实现主要的地图功能,而且能够定制地图 ...
- 基础地图Android SDK
开发者可利用SDK提供的接口,使用百度为您提供的基础地图数据.目前百度地图SDK所提供的地图等级为3-21级,所包含的信息有建筑物.道路.河流.学校.公园等内容. V3.7.0起,地图支持缩放至21级 ...
- 百度地图 Android SDK - 标注(Marker)的基本使用
标注(Marker)是开发人员最常使用的地图覆盖物志一.今天就来向大家介绍一些标注(Marker)的最基本用法! 实现目标: 1.构建基础地图页面: 2.在地图的中心点处加入 Marker: 3.实现 ...
- Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK
原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...
- 百度地图 Android SDK - 新的版本号(v3.2.0)正式上线
百度地图 Android SDK v3.2.0 在版本号 2014 年 11 月 07 日本正式推出工作完成! watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- 高德地图iOS SDK限制地图的缩放比例
问题 高德地图的iOS SDK 3D版中(v2.4.0), 显示范围在560m左右时建筑会呈现3D效果. 我们有没有办法可以限制地图最小缩放到这个比例, 从而保证建筑始终使用3D效果显示呢? 探索 高 ...
随机推荐
- ios开发怎样才能做到代码和界面彻底分离,方便换肤?
设想一下,你现在手底下有N个开发人员,你如何让这些人参与到一个ios开发项目中来?而不是独自一个人完成.
- ASP.NET MVC:some benefits of asp.net mvc
Full control over HTML Full control over URLs Better separation of concerns Extensibility Testabilit ...
- Linux终端执行shell脚本,提示权限不够的解决办法
原文:http://blog.csdn.net/this_capslock/article/details/17415409 今天在Linux尝试搭建dynamips的工作环境,在执行shell脚本时 ...
- ios成长之每日一遍(day 3)
今天要介绍一下更多的控键使用, 当然也会对上一篇说的控件做一个巩固, 所以这一篇涉及到的控键会包括 UIImage.UITextField.UIButton.UILabel.UISwitch.以及 U ...
- 无需SherlockActionbar的SlidingMenu使用详解(二)——向Fragment中添加ViewPager和Tab
之前我们对大体框架有了一定的认识,现在我们来做Fragment界面,其实这里面和这个框架的关系就不大了,但因为有些同学对于在SlidingMenu中切换fragment还是有问题,所以我就在本篇进行详 ...
- Datagridview 在基于文本的单元格中启用换行,自动调整行高列宽
将 DataGridViewCellStyle的 WrapMode 属性设置为 DataGridViewTriState 枚举值之一.下面的代码示例使用 System.Windows.Forms.Da ...
- jquery的radio和checkbox的标签的操作集合
jquery的radio和checkbox的标签的操作集合: $("input[name='radio_name'][checked]").val(); //选择被选中Radio的 ...
- [Android Pro] 自己动手编译Android源码(超详细)
cp from : https://www.jianshu.com/p/367f0886e62b 在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈andro ...
- HTML5 Geolocation API地理定位整理(二)
Geolocation 实例demo 1.使用watchPosition()监听客户端位置 var watchOne=null; if (navigator.geolocation) { //watc ...
- cross validation笔记
preface:做实验少不了交叉验证,平时常用from sklearn.cross_validation import train_test_split,用train_test_split()函数将数 ...