您的位置:首页 > 移动开发 > Android开发

[Android]百度地图初使用(2)

2015-11-22 02:23 429 查看
一、定位功能

使用的API

LocationClient进行定位的一些功能(核心)

BDLocationListener

二、代码实现

//定位相关
//定位服务的客户端。宿主程序在客户端声明此类,并调用,目前只支持在主线程中启动
private LocationClient locationClient;
//自定义定位请求回调接口,继承BDLocationListener
private MyLocationListener myLocationListener;


/**
* 定位初始化
*/
private void initLocation(){
locationClient = new LocationClient(this);
myLocationListener = new MyLocationListener();
//注册回调接口
locationClient.registerLocationListener(myLocationListener);
//配置定位SDK各配置参数,比如定位模式、定位时间间隔、坐标系类型等
LocationClientOption locationClientOption = new LocationClientOption();
locationClientOption.setCoorType("bd0911");
locationClientOption.setIsNeedAddress(true);//设置是否需要地址信息,默认为无地址
locationClientOption.setOpenGps(true);
locationClientOption.setScanSpan(1000);
//locationClient设置配置信息
locationClient.setLocOption(locationClientOption);
}


/**
*在Activity的onStart和onStop方法中开启,关闭定位
*/
@Override
protected void onStart() {
super.onStart();
//开启定位
baiduMap.setMyLocationEnabled(true);
if (!locationClient.isStarted()){
locationClient.start();
}
}

@Override
protected void onStop() {
super.onStop();
//关闭定位
baiduMap.setMyLocationEnabled(false);
locationClient.stop();
}


/**
* 自定义接口回调
*/
private  class MyLocationListener implements BDLocationListener{
/**
*
* @param bdLocation  回调的百度坐标类,内部封装了如经纬度、半径等属性信息
*/
@Override
public void onReceiveLocation(BDLocation bdLocation) {
//定位数据-->将bdlocation中的信息转到MyLocationData中
MyLocationData data= new MyLocationData.Builder()//
.accuracy(bdLocation.getRadius())
.latitude(bdLocation.getLatitude())
.longitude(bdLocation.getLongitude())
.build();
//添加定位信息
baiduMap.setMyLocationData(data);
//用来存储用户当前位置的经纬度,这两个成员变量用于用户的重定位
mlat = bdLocation.getLatitude();
mlong = bdLocation.getLongitude();
//将地图中心定义到当前位置
if(isFirstIn){
//设置经纬度
LatLng latLng = new LatLng(bdLocation.getLatitude(),bdLocation.getLongitude());
MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLng(latLng);
baiduMap.animateMapStatus(mapStatusUpdate);
isFirstIn = false;
Toast.makeText(MainActivity.this,bdLocation.getAddrStr(),Toast.LENGTH_SHORT).show();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: