百度地图集成

来源:互联网 发布:矩阵qr分解 编辑:程序博客网 时间:2024/05/20 14:25

1.链接:http://lbsyun.baidu.com/index.php?title=androidsdk

2.申请密钥:

1.获取应用sha1:keytool -v -list -keystore keystore.jks,进入存在keystore的对应路径下并将文件名替换


3.如果地图空白并且提示:AndroidManifest.xml的application中没有meta-data标签,如果提示
Authentication Error errorcode: 230 uid: -1 appid -1 msg: APP Scode码校验失败,则需要检查包名及sha1值是否正确

4.定位功能:

  1.LocationClient为核心Api,BDLocationListener接口回调

  2.LocationClient mClient=new LocationClient(this);
     LocationClientOption option = new LocationClientOption();
    option.setCoorType("bd09ll");
    option.setIsNeedAddress(true);
    option.setOpenGps(true);
    option.setScanSpan(1000);
    mClient.setLocOption(option);

//监听定位成功中的代码,其中isfirstrun是用来标志是否首次进入,首次进入需要将地图拖动至当前位置,方法是BaiduMap.setMapStatusUpdate();

 MyLocationData data = new MyLocationData.Builder()
                    .accuracy(bdLocation.getRadius())
                    .latitude(bdLocation.getLatitude())
                    .longitude(bdLocation.getLongitude())
                    .build();
            Log.e("test",bdLocation.getAddrStr()+"---地址");
            baiduMap.setMyLocationData(data);
            if (isFirstIn) {
                LatLng latLng = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());
                MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(latLng);
                baiduMap.animateMapStatus(update);
                isFirstIn = false;
            }

5.方向传感器

1.自定义定位图标

BitmapDescriptor

    mIconLocation=new BitmapDescriptorFactory().fromResource(R.drawable.nav);

   MyLocationConfiguration config=new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL,true,mIconLocation);
            baiduMap.setMyLocationConfigeration(config);

2.自定义方向传感器监听,MyOrientationListener implements SensorEventListener,在方向改变时抓取坐标

@Override
    public void onSensorChanged(SensorEvent event) {
            if (event!=null){
             if ( event.sensor.getType()==Sensor.TYPE_ORIENTATION) {
                    float x=event.values[SensorManager.DATA_X];
                    if (x-lastX>1.0f){
                        if (orientationListener!=null){
                        orientationListener.onOrientationChanged(x);
                    }
                    }
                    lastX=x;
                }
            }
    }

并对外提供开始监听和结束监听的方法

  public void start() {
        mSensorManager= (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
        if (mSensorManager!=null){
            mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        }
        if (mSensor!=null){
            mSensorManager.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_UI);
        }
    }


    public void stop() {
        if (mSensorManager!=null)
            mSensorManager.unregisterListener(this);
    }

在Activity的onStart中开始监听,onStop中结束监听

在定位完成后,设置图标方向

 MyLocationData data = new MyLocationData.Builder()
                    .direction(mCurrentx)
                    .build();
            Log.e("test",bdLocation.getAddrStr()+"---地址");
            baiduMap.setMyLocationData(data);

6.模式切换

MyLocationConfiguration.LocationMode.FOLLOWING---跟随模式

MyLocationConfiguration.LocationMode.FOLLOWING---罗盘模式

  MyLocationConfiguration.LocationMode.NORMAL-------普通模式

0 0