百度定位的一个封装工具类

时间:2022-02-05 19:43:27

百度定位现在在大大小小的App中使用的比较广泛,但是如何更好的使用百度提供给我们的Api却又是不那么简单,因此这里我将项目中使用到的一个百度定义封装的工具类共享出来,供大家参考和指教。

废话不多少了,直接上代码:

(这里面使用了接口回调的方式来进行调用百度定位,对接口回调比较了解的朋友们应该很容易明白)

package com.icbc.elife.utils;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.baidu.mapapi.SDKInitializer;
import android.content.Context;
import android.text.TextUtils;
/**
*
* 创建时间:2015年12月1日 上午10:57:55
* 项目名称:ELife
* @author Z.G.N
* @version 1.0
* @since jdk1.7.0_51
* 文件名称:LocationUtil.java
* 类说明:获取地址位置
*/
public class LocationUtil {
private static LocationUtil locationUtil;
private BDLocation location;
private Context context;
/** 百度定位 */
public LocationClient mLocationClient;
//public GeofenceClient mGeofenceClient;
public MyLocationListener mMyLocationListener;
public BDLocation mlocation; // 定位到的数据
public boolean isLocated; // 是否定位完成
private LocationUtil(Context context) {

// 百度地图
//SDKInitializer.initialize(context);
mLocationClient = new LocationClient(context.getApplicationContext());
mMyLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mMyLocationListener);
//mGeofenceClient = new GeofenceClient(getApplicationContext());
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationMode.Hight_Accuracy);// 设置高精度模式
option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms
option.setTimeOut(5000);
option.setIsNeedAddress(true); //反地理编码
mLocationClient.setLocOption(option);
}

/**
* 定义一个单例方法,避免多线程并发的写法
* @param context
* @return
*/
public static LocationUtil getInstance(Context context) {
if (locationUtil == null) {
synchronized (LocationUtil.class) {
if(locationUtil==null){
locationUtil = new LocationUtil(context);
}
}
}
return locationUtil;
}

/**
* 开始进行百度定位
*/
public void startLocation(){

mLocationClient.start();
}

/**
* 结束百度定位
*/
public void stopLocation(){
mLocationClient.stop();
}


/**
* 实现实位回调监听
*/
public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {

if(location!=null && !TextUtils.isEmpty(location.getCity())){

if(baiduLocationListener!=null){

baiduLocationListener.onLocationChanged(location);
}
stopLocation();
}
}
}

public BaiduLocationListener baiduLocationListener;
public void setBaiduLocatinListener(BaiduLocationListener baiduLocationListener){
this.baiduLocationListener=baiduLocationListener;
}
public interface BaiduLocationListener{
public void onLocationChanged(BDLocation location);
}


}


相关文章