【高德地图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

地图显示示意图

地图显示代码

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();
    }
}

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

点击查看视频教学:http://v.163.com/paike/V8H1BJ7FL/VA4PMIKG3.html

标记示意图

标记代码

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

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

点击查看视频教学:http://v.163.com/paike/V8H1BJ7FL/VA4POFD2H.html

折线示意图

折线代码

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);
        }
        }

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

点击查看视频教学:http://v.163.com/paike/V8H1BIE6U/VA748DN20.html

五、如何使用Android SDK进行开发04—定位

定位示意图

定位代码

/**
 * 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;
    }
}

课后习题

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

题目

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

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

提交方式
1)发送邮件至<[email protected]>
2)需提交一个zip包,里面包含apk和源程序

参与讨论

高德认证开发者QQ群号 253476702

时间: 2024-10-26 12:36:58

【高德地图Android SDK】视频教学的相关文章

高德地图Android SDK通过View初始化Marker的一些用途

大家都知道在高德地图Android SDK中,InfoWindow是全局唯一的,并且这个infowindow与AMap和Marker有关,使用起来不是很灵活,并且没法实现如下类似的需求:现在我们有一些自定义marker,或者查询得到的poi数据,我们想在地图上直观的看到这些点具体情况(效果如下图所示),而不是需要点击每个marker,弹出一个infowindow来才能查看到它的消息.这种需求我们就需要考虑别的方式来实现了. 其实实现这个功能也很简单,我们需要变通一下,从Marker去着手而非从I

【视频教学】如何利用高德地图IOS SDK进行开发?

Step1:使用IOS SDK可以做什么高德地图 iOS SDK 是一套基于 iOS 5.1.1 及以上版本的地图应用程序开发接口.通过该接口,用户可使用高德地图数据和服务轻松构建功能丰富.交互性强的地图应用.地图 iOS SDK 不仅包含构建地图的基本接口,还提供了诸如本地搜索.路线规划.公交搜索以及坐标地址搜索等服务,用户可以根据自己的需要进行选择.高德地图 iOS SDK的服务是免费的,任何非盈利性网站均可使用.您需要先申请Key,才能使用该服务.  Step2:视频学教程如何使用IOS

百度地图 Android SDK - 新的版本号(v3.2.0)正式上线

百度地图 Android SDK v3.2.0 在版本号 2014 年 11 月 07 日本正式推出工作完成! watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FsbG1lc2Vu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 在这个版本号中.我们主要为广大开发人员开放了百度城市热力图层,帮助开发人员构建形式更加丰富的地图应用! 那么这里可能

百度地图 Android SDK - 检索功能使用的简单示例

百度地图 SDK 不仅为广大开发者提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发者提供了多种 LBS 检索的能力.通过这些接口,开发者可以轻松的访问百度的 LBS 数据,丰富自己的移动端地图应用. 目前百度地图 SDK 为开发者提供的检索服务有: POI 检索:可以检索百度 POI 数据信息: 线路规划:利用百度的引擎帮助开发者规划线路: 在线建议检索.短链接分享.地理编码等等.... 本文将以一个很简单的 POI 城市内检索为例,像广大开发者介绍接口的使用. 第一步,选择并下载 SD

百度地图 Android SDK - Hello Baidu Map

如下内容主要向广大开发者介绍如何利用百度地图Android SDK来构建一个最基本的地图应用! 第一步,创建Android工程,将百度地图Android SDK的开发包导入到工程相应位置: 在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示: 注:l

基础地图Android SDK

开发者可利用SDK提供的接口,使用百度为您提供的基础地图数据.目前百度地图SDK所提供的地图等级为3-21级,所包含的信息有建筑物.道路.河流.学校.公园等内容. V3.7.0起,地图支持缩放至21级,暂不支持卫星图.热力图.交通路况图层的21级显示,打开以上类型图层,地图会自动缩放到20级. 所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注.矢量图形元素(包括:折线.多边形和圆等).定位图标等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动. 百度地图SDK为广大开发

Android 关于百度地图Android SDK几处修正使用说明(非官方)

本篇主要是因为最近在学习使用百度地图,发现了一些问题,跟大伙分享一下. 1.根据android sdk开发指南中"Hello World"的例子,构建一个基础的地图页面,如果大家完全按照示例代码中所写的那样,是不会执行成功的,会有以下问题的错误提示"java.lang.RuntimeException: Unable to instantiate activity ComponentInfo" 这个问题出现的原因是 在第二步,配置Activity部分,android

分享:百度地图Android SDK开发指南

最新的百度地图(v3.2)下载包中居然没有开发指南,自己整理了一下网页版的百度地图Android SDK开发指南,分享给和自己一样需要Demo的学生党.下载链接: http://pan.baidu.com/s/1jGqYF5c 密码: wpf9.

百度地图 Android SDK - 新版本(v3.2.0)正式上线

百度地图 Android SDK v3.2.0 版本于 2014 年 11 月 07 日完成正式上线工作! 在这个版本中,我们主要为广大开发者开放了百度城市热力图层,帮助开发者构建形式更加丰富的地图应用! 那么这里可能一些细心的开发者就会有疑问了,曾经的 v3.1.0 版本貌似就有一个什么热力图,这两个之间是怎么回事,有什么区别呢?别急,听我慢慢道来: v3.1.0 版本所开放的是热力图的绘制能力,说白了就是你来给我们提供数据,我们来帮助您实现本地的一个热力图绘制,最主要的前提是由开发者传入位置