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

来源:互联网 发布:网络作家个人简介 编辑:程序博客网 时间:2024/04/29 03:40

百度定位现在在大大小小的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");// 返回的定位结果是百度经纬度,默认值gcj02option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000msoption.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 {@Overridepublic 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);}}


0 0
原创粉丝点击