android笔记之百度地图学习

最近学习了一下百度地图的开发,主要学习了地图和定位两大功能

SHA1查看

Windows下查看SHA1

cd  C:/users/你的用户名/.android o

获取发布版的SHA1

keytool -list -v -keystore debug.keystore

之后输入密码,默认密码是android

Linux下的SHA1

将目录改为:/home/用户名/.androidebug.keystore

调试版的SHA1在android studio右侧的gradle中项目下的Task/android/signingReport中



基础地图的实现

百度官方文档

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

常见错误

有时可能会遇到Scode校验错误,一般情况可能是安全码或AK有误,可以重新在官网的API后台更正

在开发的时候如何处理这样的异常?

注册一个广播接收者

class MyReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if(action.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)){
            Toast.makeText(getApplicationContext(),"网络异常",Toast.LENGTH_SHORT).show();
        }else if(action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)){
            Toast.makeText(getApplicationContext(),"校验异常",Toast.LENGTH_SHORT).show();
        }

    }
}

初始化SDK之后注册一个广播发送异常信息

rivate void initSDK() {
    SDKInitializer.initialize(getApplicationContext());//初始化SDK
    //注册一个广播监听异常
    IntentFilter filter=new IntentFilter();
    filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);//网络异常
    filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);//校验异常
    registerReceiver(new MyReceiver(),filter);


定位功能的实现

在onCreate中初始化LocationClient

 /**
         * 初始化百度定位
         */
        mLocationClient = new LocationClient(getApplicationContext()); // 声明LocationClient类
        mLocationClient.registerLocationListener(myListener); // 注册监听函数

初始化定位参数

 /**
     * 初始化定位参数
     */
    private void initLocation() {
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
        option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系
        // 定位频率 必须大于1000 单位毫秒
        int span = 5000;
        option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
        option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要
        option.setOpenGps(true);// 可选,默认false,设置是否使用gps
        option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出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仿真结果,默认需要
        mLocationClient.setLocOption(option);
    }

注册监听事件

 /**
     * 注册监听事件
     */
    private class MyLocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            mCurrentLocation=location;
            if (isFirst) {
                showMyLoction();//如果是第一次定位,显示到当前的位置
                addMark();//在当ia前定位加上标注
                isFirst = false;
            }
        }
    }<pre name="code" class="java">    private void addMark() {
        MarkerOptions mark=new MarkerOptions();
        LatLng latLng=new LatLng(mCurrentLocation.getLatitude(),mCurrentLocation.getLongitude());
        mark.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_start))
                .position(latLng);
        mBaiduMap.addOverlay(mark);
    }

    private void showMyLoction() {
        // 让地图中心跑到我的真实位置处
        LatLng latLng = new LatLng(mCurrentLocation.getLatitude(),mCurrentLocation.getLongitude());
        MapStatusUpdate mapStatusUpdate = MapStatusUpdateFactory.newLatLngZoom(latLng, 21);
        // 没有动画效果
        // mBaiduMap.setMapStatus(mapStatusUpdate);
        mBaiduMap.animateMapStatus(mapStatusUpdate, 1000);
    }

 
 开启定位 
 

 initLocation();
        mLocationClient.start();



发布了38 篇原创文章 · 获赞 6 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/coderlady/article/details/51870730