• 百度定位SDK的使用示例


    本文基于最新的百度地图定位SDK(V4.0 版本)使用的定位Demo

    使用百度地图SDK进行实时定位的主要有6步:

    // 启用定位
    mBaiduMap.setMyLocationEnabled(true);
    // 1. 初始化LocationClient类
    mLocationClient = new LocationClient(getApplicationContext());
    // 2. 声明LocationListener类(负责监听位置变化)
    locationListener = new MyLocationListener();
    // 3. 注册监听函数
    mLocationClient.registerLocationListener(locationListener);
    // 4. 设置参数
    LocationClientOption clientOption = new LocationClientOption();
    clientOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式
    clientOption.setCoorType("bd09ll"); // 设置定位结果类型
    clientOption.setScanSpan(5000); // 设置发起定位请求的时间间隔,ms
    clientOption.setIsNeedAddress(true); // 设置返回的定位结果包含地址信息
    clientOption.setNeedDeviceDirect(true);// 设置返回结果包含手机的方向
    
    // 5. 应用上面的参数
    mLocationClient.setLocOption(clientOption);
    // 6. 注册位置提醒监听事件
    
    // 7. 开启/关闭 定位SDK
    mLocationClient.start();
    mLocationClient.stop();
    
    为了实时监听我们位置的变化,我们需要实现BDLocationListener类,获得系统实时的位置信息,并重载onReceiveLocation方法返回位置结果
    class MyLocationListener implements BDLocationListener {
    // 异步返回的定位结果
    @Override
    public void onReceiveLocation(BDLocation bdLocation) {
    if (bdLocation == null) {
    return;
    }
    locType = bdLocation.getLocType();
    Toast.makeText(MainActivity.this, "当前定位的返回值是:" + locType, Toast.LENGTH_SHORT).show();
    longitude = bdLocation.getLongitude();
    latitude = bdLocation.getLatitude();
    if (bdLocation.hasRadius()) {// 判断是否有定位精度半径
    radius = bdLocation.getRadius();
    }
    if (locType == BDLocation.TypeGpsLocation) {//
    Toast.makeText(MainActivity.this, "当前速度是:" + bdLocation.getSpeed() + "定位使用卫星数量:"
    + bdLocation.getSatelliteNumber(), Toast.LENGTH_SHORT).show();
    } else if (locType == BDLocation.TypeNetWorkLocation) {
    addrStr = bdLocation.getAddrStr();// 获取反地理编码(文字描述的地址)
    Toast.makeText(MainActivity.this, addrStr, Toast.LENGTH_SHORT).show();
    }
    direction = bdLocation.getDirection();// 获取手机方向,【0~360°】,手机上面正面朝北为0°
    province = bdLocation.getProvince(); // 省份
    city = bdLocation.getCity(); // 城市
    district = bdLocation.getDistrict(); // 区县
    Toast.makeText(MainActivity.this, province + "~" + city + "~" + district, Toast.LENGTH_SHORT).show();
    // 构造定位数据
    MyLocationData locData = new MyLocationData.Builder()
    .accuracy(radius) // 定位精度半径
    .direction(direction) // 方向
    .latitude(latitude) // 纬度
    .longitude(longitude) // 精度
    .build();
    // 设置定位数据
    mBaiduMap.setMyLocationData(locData);
    LatLng ll = new LatLng(latitude, longitude);
    MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);
    mBaiduMap.animateMapStatus(msu);
    }
    }
    

      

  • 相关阅读:
    OpenStack 发行版本
    刷新linux硬盘存储接口
    LVM实践
    LVM man帮助
    ansible --help 文档
    nmcli connection modify eth1 ipv4.addr "192.168.31.23" ipv4.method manual
    自己动手使用, MetaWeblog 发布博客(cnblogs)
    测试图片上传 on Markdown editor
    大批量更新数据mysql批量更新的四种方法
    PHP print_r 转换/还原为数组
  • 原文地址:https://www.cnblogs.com/hot-destiny/p/5904976.html
Copyright © 2020-2023  润新知