**
用androidstudio开发百度定位功能
一.申请自己应用的密钥
可以参考官方文档
https://lbsyun.baidu.com/index.php?title=android-locsdk
二.显示地图
建立自己的application类来显示自己的地图
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//初始化context信息,传入ApplicationContext
SDKInitializer.initialize(this);
//方法设置您使用的坐标类型.
//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
SDKInitializer.setCoordType( CoordType.BD09LL);
}
}
三.创建自己的位置监听类
public class MyLocationListener extends BDAbstractLocationListener {
private MapView mMapView;
private BaiduMap mBaiduMap;
private boolean isFirstLocate = true;
public MyLocationListener(BaiduMap mBaiduMap,MapView mMapView){
this.mBaiduMap=mBaiduMap;
this.mMapView=mMapView;
}
@Override
public void onReceiveLocation(BDLocation location) {
//mapView 销毁后不在处理新接收的位置
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
if (isFirstLocate) {
isFirstLocate = false;
//给地图设置状态
mBaiduMap.animateMapStatus( MapStatusUpdateFactory.newLatLng(ll));
}
if (location == null || mMapView == null){
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(location.getDirection()).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
}
初始化地图的代码
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
if (isFirstLocate) {
isFirstLocate = false;
//给地图设置状态
mBaiduMap.animateMapStatus( MapStatusUpdateFactory.newLatLng(ll));
}
四.activity或fragment中的使用
public class fxfrgment extends Fragment {
private MapView mMapView = null;
private BaiduMap mBaiduMap=null;
private LocationClient mLocationClient=null;
private boolean isFirstLocate = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate ( R.layout.fragment_fxfrgment, container, false );
mMapView = (MapView) view.findViewById ( R.id.Map );
mBaiduMap = mMapView.getMap();
//普通地图 ,mBaiduMap是地图控制器对象
mBaiduMap.setMyLocationEnabled ( true );
mLocationClient=new LocationClient ( mMapView.getContext ());
LocationClientOption option = new LocationClientOption ();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);
//设置locationClientOption
mLocationClient.setLocOption(option);
//注册LocationListener监听器
MyLocationListener myLocationListener = new MyLocationListener(mBaiduMap,mMapView);
mLocationClient.registerLocationListener(myLocationListener);
//开启地图定位图层
mLocationClient.start();
return view;
}
@Override
public void onResume() {
mMapView.onResume();
super.onResume ();
}
@Override
public void onPause() {
mMapView.onPause ();
super.onPause ();
}
@Override
public void onDestroy() {
mLocationClient.stop();
mBaiduMap.setMyLocationEnabled(false);
mMapView.onDestroy();
mMapView = null;
super.onDestroy ();
}
在Fragment中使用