android笔记之百度地图学习

来源:互联网 发布:很有节奏感的网络歌曲 编辑:程序博客网 时间:2024/06/04 18:18

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

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();



0 0