【创新项目实训】Android移动开发教学之用户位置

【创新项目实训】Android移动开发技术主题教学之用户位置

用户位置

简介

移动应用的其中一个独特功能是位置感知。移动用户无论走到哪里都会随身携带自己的设备,因此为应用添加位置感知可给用户带来更具环境感的体验。

概念

移动基于位置的服务简称LBS,主要的工作原理是利用无线电通讯网络或 GPS 等定位方式来确定出移动设备所在的位置。

LBS 所围绕的核心就是要确定出用户所在的位置。通常有两种技术:

  1. GPS定位:

    基于手机内置的 GPS 硬件直接和卫星交互来获取当前的经纬度信息,精确度高,但只能室外使用,室内基本无法接收到卫星的信号。

  2. 网络定位:

    根据手机当前网络附近的三个基站进行测速,以此计算出手机和每个基站之间的距离,再通过三角定位确定一个大概位置,精确度一般,但室内外均可使用

本教程主要介绍百度地图在LBS方面提供的一些功能。

百度地图 Android SDK简介

百度地图 Android SDK是一套基于Android 4.0及以上版本设备的应用程序接口。 可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序

重点功能简介

以下均基于百度地图Android SDK的开发指南,更多详细内容请访问 https://lbsyun.baidu.com/index.php?title=androidsdk。

地图展示与交互

地图展示:普通地图(2D,3D)、卫星图和实时交通图,开放高清4K地图显示。

地图交互:可通过接口或手势控制来实现地图的单击、双击、长按、缩放、旋转、改变视角等操作。

public class MainActivity extends Activity {
    private MapView mMapView = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取地图控件引用  
        mMapView = (MapView) findViewById(R.id.bmapView);
        mBaiduMap = mMapView.getMap();
        //显示卫星图层
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时必须调用mMapView. onResume ()
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时必须调用mMapView. onPause ()
        mMapView.onPause();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时必须调用mMapView.onDestroy()
        mMapView.onDestroy();
    }
}

地图覆盖物

百度地图SDK支持多种地图覆盖物,帮助展示更丰富的地图。

地图覆盖物:地图标注(Marker、InfoWindow)、几何图形(点、折线、弧线、多边形、圆、文字等)、POI检索结果覆盖物、线路规划结果覆盖物等。

//创建marker
MarkerOptions ooA = new MarkerOptions().position(llA).icon(bdA);
//添加marker
mMarkerA = (Marker) (mBaiduMap.addOverlay(ooA));
private Animation getScaleAnimation() {
    //创建缩放动画
    ScaleAnimation mScale = new ScaleAnimation(1f, 2f, 1f);
    //设置动画执行时间
    mScale.setDuration(2000);
    //动画重复模式
    mScale.setRepeatMode(Animation.RepeatMode.RESTART); 
    //动画重复次数
    mScale.setRepeatCount(1);
    //设置缩放动画监听
    mScale.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart() {
        }
        @Override
        public void onAnimationEnd() {
        }
        @Override
        public void onAnimationCancel() {
        }
        @Override
        public void onAnimationRepeat() {
        }
    });
    return mScale;
}
/**
 * 开启单边缩放动画 X或Y方向
 */
public void startSingleScaleAnimation() {
    //marker设置动画
    mMarkerG.setAnimation(getSingleScaleAnimation());
   //开启marker动画
    mMarkerG.startAnimation();
}

参考资料

百度地图开放平台网站

https://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project

《第一行代码》作者: 郭霖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值