用户位置
简介
移动应用的其中一个独特功能是位置感知。移动用户无论走到哪里都会随身携带自己的设备,因此为应用添加位置感知可给用户带来更具环境感的体验。
概念
移动基于位置的服务简称LBS,主要的工作原理是利用无线电通讯网络或 GPS 等定位方式来确定出移动设备所在的位置。
LBS 所围绕的核心就是要确定出用户所在的位置。通常有两种技术:
-
GPS定位:
基于手机内置的 GPS 硬件直接和卫星交互来获取当前的经纬度信息,精确度高,但只能室外使用,室内基本无法接收到卫星的信号。
-
网络定位:
根据手机当前网络附近的三个基站进行测速,以此计算出手机和每个基站之间的距离,再通过三角定位确定一个大概位置,精确度一般,但室内外均可使用
本教程主要介绍百度地图在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
《第一行代码》作者: 郭霖