androidstudio开发百度定位功能

**

用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中使用

五效果图片

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值