百度地图- - -定位
程序员文章站
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
上一篇: 百度地图定位
下一篇: 百度地图定位API代码实现