Android百度地图使用之定位

    xiaoxiao2021-03-25  188

    基安卓于百度地图的定位使用


    地图在开发中使用的频率相当的高,我个人推荐高德地图,因为其定位误差比百度要小的多,无奈公司让用百度地图,既如此我就来说说地图的基本功能–定位。

    第一步,你去官网下载百度地图的SDK,去控制台申请一个AK,在dos窗口中获取sha1码。

    第二步,初始化地图引擎

        

    第三步,初始化BaiDuMap对象。

    /** * 地图初始化 */ private void initMap() { //获取地图控件引用 mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); //开启交通图 mBaiduMap.setTrafficEnabled(true); mCurrentMode = LocationMode.NORMAL; // 开启定位图层 mBaiduMap.setMyLocationEnabled(true); //自定义定位图标 mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo); MyLocationConfiguration configuration =new MyLocationConfiguration(mCurrentMode,true,mCurrentMarker); //设置定位图层配置信息,只有先允许定位图层后设置定位图层配置信息才会生效,参见 setMyLocationEnabled(boolean)   mBaiduMap.setMyLocationConfigeration(configuration); // 定位初始化 mLocClient = new LocationClient(this); mLocClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 打开gps option.setCoorType("bd09ll"); // 设置坐标类型 option.setScanSpan(1000); option.setAddrType("all"); //加上这个配置后才可以取到详细地址信息 mLocClient.setLocOption(option); mLocClient.start();//开始定位 }    第四步,定位回调 public class MyLocationListener implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) {

    // mLatResult = location.getLatitude(); // mLngResult = location.getLongitude(); // location.getLocType(); // mPoiResult = location.getAddrStr(); Log.d(“结果”, “onReceiveLocation: ” +”经度”+ location.getLatitude()+”维度”+location.getLongitude());

    if (location == null || mMapView == null) { Toast.makeText(LocationActivity.this, "定位失败", Toast.LENGTH_SHORT).show(); return; } MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360   .direction(5)//设定图标方向  .latitude(location.getLatitude()) //百度纬度坐标 .longitude(location.getLongitude())//百度经度坐标 .build(); //设置定位数据, 只有先允许定位图层后设置数据才会生效 mBaiduMap.setMyLocationData(locData); //配置定位图层显示方式,三个参数的构造器   /* 

          * 1.定位图层显示模式        * 2.是否允许显示方向信息        * 3.用户自定义定位图标        *        * */

    if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatus.Builder builder = new MapStatus.Builder(); builder.target(ll).zoom(18.0f); mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build())); } } public void onReceivePoi(BDLocation poiLocation) { } }      

    @Override protected void onDestroy() { super.onDestroy(); //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理 // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; }

    @Override protected void onResume() { super.onResume(); //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理 mMapView.onResume(); } @Override protected void onPause() { super.onPause();

    , //在ac了 ivity执行onPause时执行mMapView. onPause (),实现地图生命周期管理 mMapView.onPause(); }                                                                                                               

    转载请注明原文地址: https://ju.6miu.com/read-2755.html

    最新回复(0)