欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

百度地图- - -定位

程序员文章站 2022-06-10 12:42:10
...

我用的是最新的7.0sdk,准备工作就不说了, 去官网上申请key,并将在manifest中配置出来

百度地图- - -定位

并且将之配置出来百度地图- - -定位

     在定位中,最为主要的其实就是一个核心类LocationClient,在这个类的监听回调中包含了定位返回的位置信息等,我们的逻辑就可以在他的回调中进行处理,其实也就分为三步:

    1. 实例化定位的核心类,MyLocationListener mLocationClient = new LocationClient(context);

    2.注册监听,mLocationClient.registerLocationListener(new BDLocationListener);

    3.开启定位服务, mLocationClient.start();

当然,这是主要的步骤,其实还有很多操作可以自己去配置, 我贴出自己的demo代码

private BaiduLocation(Context cxt) {
		context = cxt;
		mLocationClient = new LocationClient(cxt);
		listener = new MyLocationListener();
		// TODO Auto-generated constructor stub
	}
	public static BaiduLocation getCInstance(Context cxt){ 
		if(insatance == null)
		{
			synchronized (BaiduLocation.class) {
				if(insatance == null){
					insatance = new BaiduLocation(cxt);
				}
			}
		}
		return insatance;
}

public class MyLocationListener implements BDLocationListener {
 
		private BaiduMap map;
		private MyApplication mApp;

		public void onReceiveLocation(BDLocation location) {
            //Receive Location 
            StringBuffer address = new StringBuffer(100);

            address.append(location.getAddrStr());
            double longitude = location.getLongitude(); //精度
            double latitude = location.getLatitude(); //纬度
            Log.i("哈哈",longitude+"---"+latitude);
            myAddress = location.getAddrStr();
            city = location.getCity();
            CustomerInformation.getCarInfoInstance().setLatitude(latitude);
            CustomerInformation.getCarInfoInstance().setLongitude(longitude);
            try {
     		   mLocationResult = address.toString();
                if (mLocationResult != null)
                {
                   if(mLocationResult.indexOf("省")!=-1){
                     mPorvince=mLocationResult.substring(2, mLocationResult.indexOf("省"));
                   }else if(mLocationResult.indexOf("市")!=-1){
                     mPorvince=mLocationResult.substring(2, mLocationResult.indexOf("市"));
                   }	 
                	//定位到位置后,将定位停止掉
                	if(null != mPorvince){
                		mLocationClient.stop();
                	}
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
              
        }
}

private void InitLocation() {
			LocationClientOption option = new LocationClientOption();
			option.setLocationMode(LocationMode.Hight_Accuracy);// 设置高精度定位定位模式
			option.setCoorType("bd09ll");// 设置百度经纬度坐标系格式
			option.setScanSpan(1000);// 设置发起定位请求的间隔时间为1000ms
			option.setIsNeedAddress(true);// 反编译获得具体位置,只有网络定位才可以
			option.setLocationNotify(true);//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
			option.setOpenGps(true);
			mLocationClient.setLocOption(option);
			mLocationClient.registerLocationListener(listener);
			
}

public void start(){
        InitLocation();
        mLocationClient.start();
}

用的时候直接实例化出来BaiduLocation这个类,直接调用start()方法就可以,返回的信息其实都在onReceiveLocation这个回调中的BDLocation中的,城市的名称,经纬度等等,具体逻辑就可以自己去做了

转载于:https://my.oschina.net/fbf8866/blog/852797