Android百度地图使用之定位

来源:互联网 发布:php header image 编辑:程序博客网 时间:2024/05/17 05:55

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


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

第一步,你去官网下载百度地图的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;
}

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


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

1 0
原创粉丝点击