求大神绕过,这个仅限于初级开发者
初始化定位
private void initLocation() {
//定位客户端的设置
mLocationClient = new LocationClient(getActivity());
mLocationListener = new MyLocationListener();
mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL,true,null));
//注册监听
//配置定位
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//设置高精度定位定位模式
option.setCoorType(“bd09ll”);//坐标类型
option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);//打开Gps
option.setScanSpan(1000);//1000毫秒定位一次
option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
mLocationClient.setLocOption(option);
mLocationClient.start();//启动定位
mLocationClient.registerLocationListener(mLocationListener);
}
//自定义的定位监听
private class MyLocationListener implements BDLocationListener {
LatLng mLatLng = null;
@Override
public void onReceiveLocation(BDLocation location) {
//将获取的location信息给百度map
MyLocationData data = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(100)
.latitude(location.getLatitude())
.longitude(location.getLongitude())
.build();
mBaiduMap.setMyLocationData(data);
mLatLng = new LatLng(location.getLatitude(), location.getLongitude());
Log.e("1212", "4444444444" + mLatLng);
if (isFirstLocation) {
//获取经纬度
MapStatusUpdate status = MapStatusUpdateFactory.newLatLng(mLatLng);
mBaiduMap.animateMapStatus(status);//动画的方式到中间
isFirstLocation = false;
showInfo("位置:" + location.getAddrStr());
}
}
@Override
public void onConnectHotSpotMessage(String s, int i) {
}
}
****重点这样的代码定位没问题,不过就是定位只能定位一次,那么怎么解决呢?
其实很简单的,只是大家可能现在忽略了这点。百度的官方现在也没有添加这样的说明
只需要在清单文件中加上
即可实现时时定位