ITPub博客

首页 > 应用开发 > IT综合 > app直播商城源码,实现系统的定位功能

app直播商城源码,实现系统的定位功能

IT综合 作者:云豹科技阿星 时间:2021-12-09 16:34:36 0 删除 编辑

一.申请自己应用的密钥 这里参考官方文档来操作

二.显示地图

这里app直播商城源码要建立自己的application类,来显示自己的地图(自己的application类要继承官方的application类)

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        SDKInitializer.initialize(this);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括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中使用的,这样app直播商城源码就实现了定位功能。

声明:本文由云豹科技转发风峰博客,如有侵权请联系作者删除

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2846792/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-08-24

  • 博文量
    239
  • 访问量
    115548