Android百度地图学习笔记(一)

开发前准备。首先下载好百度地图所需要的SDK,并获取key。获取key的方法在百度API首页上的有。

小提示:可能做为开发者的你忘记了debug.keystore的密码(其实是根本就不知道) debug.keystore的密码是android。
配置百度地图
这里将记录如何使用百度地图定位

  1. 在上面的准备工作做完以后,就可以再自己的程序里面做开发学习了。首先声明各种对象

    LocationClient mLocClient;
    private MyLocationListener myListener=new MyLocationListener();
    //MyLocationConfiguration配置定位图层的显示方式
    private com.baidu.mapapi.map.MyLocationConfiguration.LocationMode mCurrentMode
    =com.baidu.mapapi.map.MyLocationConfiguration.LocationMode.NORMAL; //定位模式
    BitmapDescriptor mCurrentMarker; //bitmap描述信息
    
    private MapView mMapView;
    private BaiduMap mBaiduMap;
  2. 上面的MyLocationListener是自己写的`public class MyLocationListener implements BDLocationListener{

    @Override
    public void onReceiveLocation(BDLocation location) {
        // TODO Auto-generated method stub
        if (location==null || mMapView==null) 
            return;
        /*
         * mylocationdata位定位数据 其中accuracy为定位精度
         * location.getRadius为获取定位精度
         * direction为定位是GPS的方向角度
         * latitude  百度纬度坐标
         * longitude 百度经度坐标
         */
        MyLocationData locData=new MyLocationData.Builder()
                .accuracy(location.getRadius())
                .direction(100).latitude(location.getLatitude())
                .longitude(location.getLongitude()).build();
        mBaiduMap.setMyLocationData(locData);
        if (isFirstLoc) {
            isFirstLoc=false;
            //latlng为地理坐标的基本数据结构,包括一个纬度,一个纬度经度
            LatLng ll=new LatLng(location.getLatitude(),location.getLongitude());
            //MapStatusUpdate 描述地理状态将要发生的变化 
            //MapStatusUpdateFactory 生成状态将要发生的变化  newLatLng设置地图的中心点
            MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
            //animateMapStatus以动画的方式更新地图状态,时间为300ms
            mBaiduMap.animateMapStatus(u);
        }
    }
    public void onReceivePoi(BDLocation poiLocation) {
    }
    

    }`

  3. 初始化视图mMapView=(MapView) findViewById(R.id.bmapView);
    mBaiduMap=mMapView.getMap();
    mBaiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(new MapStatus.Builder().zoom(15).build()));
    //开启定位图层
    mBaiduMap.setMyLocationEnabled(true);
    //定位初始化
    mLocClient=new LocationClient(this);
    mLocClient.registerLocationListener(myListener); //绑定监听器
    LocationClientOption option=new LocationClientOption();
    option.setLocationMode(com.baidu.location.LocationClientOption.LocationMode.Hight_Accuracy);//设置定位模式
    option.setAddrType("all"); //返回的定位结果包含地址信息
    option.setCoorType("bd09ll"); //返回的定位结果是百度经纬度,默认值gcj02国家测绘局坐标
    option.setScanSpan(1000); //设置发起定位请求的间隔时间为1000ms
    option.setIsNeedAddress(true); //返回的定位结果包含地址信息
    mLocClient.setLocOption(option);
    mLocClient.start();

  4. 初始化定位的模式mBaiduMap.setMyLocationConfigeration(new
    MyLocationConfiguration(mCurrentMode,
    true,
    mCurrentMarker));

  5. 初始化定位的显示图标mCurrentMarker=null;
    mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(
    mCurrentMode, true, null));
    这里的第3个变量是图标的样式,你们可以选择自己喜欢的样式。

  6. 结果截图,定位还是很精确的,我这里的误差不到20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值