百度地图使用经验

1、集成SDK 官方文档都有登录百度帐号

2、获取密匙参考:另外一个文章中有仔细说明

3、初始化显示地图

  •  引入MapView:implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.4.0'
  • 在OnCreate方法中初始化百度地图,如下: 
    protected void onCreate(Bundle savedInstanceState) {                                       super.onCreate(savedInstanceState);

        //在使用SDK各组件之前初始化context信息,传入ApplicationContext                            SDKInitializer.initialize(getApplicationContext());

        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使          用的坐标类型.

         //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。                                                       SDKInitializer.setCoordType(CoordType.BD09LL);                                           setContentView(R.layout.activity_locate);

        initView();

        }

4、实时定位

  • gradle引入定位SDK 

implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8'

  • 获取权限

Manifest.permission.ACCESS_FINE_LOCATION , Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE

  • 初始化定位

mMapView.showScaleControl(true);  // 设置比例尺是否可见(true 可见/false不可见)
mMapView.showZoomControls(false);  // 设置缩放控件是否可见(true 可见/false不可见)
Log.e("initLocation: ", mMapView.getLogoPosition()+"...");
mMapView.removeViewAt(1);// 删除百度地图Logo
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
// 定位初始化
mLocClient = new LocationClient(mActivity);
myListener = new MyLocationListener();
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();

option.setOpenGps(true);// 打开gps
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置高精度定位
option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
option.setScanSpan(scanSpan);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);//可选,默认false,设置是否使用gps
option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
option.setIgnoreKillProcess(false);//可选,默认false,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认杀死
option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
mLocClient.setLocOption(option);
mLocClient.start();//开始定位

  • 定位监听

private class MyLocationListener extends BDAbstractLocationListener {

    @Override
    public void onReceiveLocation(BDLocation location) {
        if(onLocateListener != null){
            onLocateListener.onLocate(location);
        }
        // MapView 销毁后不在处理新接收的位置
        if (mMapView == null) return;
        double lat = location.getLatitude();
        double lng = location.getLongitude();
        LatLng latLng = new LatLng(lat , lng);
        MapStatus.Builder builder = new MapStatus.Builder();
        builder.target(latLng).zoom(20.0f);
       baiduMap.animateMapStatus(

                MapStatusUpdateFactory.newMapStatus(builder.build()));

    }

}

5、常用方法

  • 绘制点位

    //构建MarkerOption,用于在地图上添加Marker

    BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_state_run);

    OverlayOptions option = new MarkerOptions() .position(point) .icon(bitmap);

    //在地图上添加Marker,并显示

    Marker marker = (Marker) baiduMap.addOverlay(option);

    //设置可拖拽

    marker.setDraggable(true);

     
  • 移动地图到指定点位

    1.直接移动

    LatLng latLng = new LatLng(resultLatitude, resultLongitude);
    MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(latLng);
    mBaiduMap.animateMapStatus(update);

    2.移动加缩放

    LatLng latLng = new LatLng(resultLatitude, resultLongitude);
    MapStatus.Builder builder = new MapStatus.Builder();
    builder.target(latLng).zoom(20.0f);
    mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));

    • 显示定位蓝色箭头小图标

      MyLocationData locData = new MyLocationData.Builder()
              // 设置定位数据的精度信息,单位:米
              .accuracy(location.getRadius())
              // 此处设置开发者获取到的方向信息,顺时针0-360
              .direction(location.getDirection())
              .latitude(resultLatitude)
              .longitude(resultLongitude)
              .build();

      mBaiduMap.setMyLocationData(locData);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值