(开发版sha1,和发布版SHA1值和包名) 开发版SHA1值获取:http://blog.csdn.net/qq_29269233/article/details/53725865 发布版SHA1值获取(其中自己的签名文件为生成apk所在的目录,需要先将自己的项目打包生成apk): http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=112007(发布版) Android 签名证书的sha1值: 包名:需要使用百度地图的应用的包名
注意:自己在写项目的时候用百度地图的时候,开发版和发布版的sha1都配置了,运行的很不错,第二次在写定位的时候,自己懒了点就漏配置了一个sha1值,而且官方文档上也写明了非必填项,结果就出bug了,获取位置经纬度的时候我打印的log,第一次打印正确,第二个log就错误,改了好久一直没找到原因,最后自己去配置之前漏的sha1值就没问题了,以后还是老老实实都配置吧
http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hellobaidumap
初始化
//在使用SDK各组件之前初始化context信息,传入ApplicationContext //注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext());比例尺
mMapView.showZoomControls(false);//隐藏缩放按钮,默认为显示 mMapView.showScaleControl(false);//隐藏比例尺按钮,默认是显示的2.获取最小(3),最大缩放级别(22)
//通过控制器 float maxZoomLevel=baiduMap.getMaxZoomLevel();//获取地图的最大缩放级别 float minZoomLevel=baiduMap.getMinZoomLevel();//获取地图的最小缩放级别 // 2.获取最小(3),最大缩放级别(22) Log.i(tag,"地图最大缩放级别"+maxZoomLevel+";地图最小缩放级别:"+minZoomLevel); //09-26 11:46:29.401: I/HelloBaiduMapActivity(30819): 地图最大缩放级别22.0;地图最小缩放级别:3.03.设置地图中心点
//坐标对象(腾讯大厦坐标:22.5460778801,113.9410619639) //参数1:纬度,参数2:经度 private LatLng tencentPos=new LatLng(22.5460778801,113.9410619639); //newLatLng,通过经纬度设置中心位置,参数1():维度,参数2:经度 mMapStatusUpdate= MapStatusUpdateFactory.newLatLng(tencentPos); baiduMap.setMapStatus(mMapStatusUpdate);4.设置地图缩放为15
//zoomBy()是增量,zoomTo()是绝对值 mMapStatusUpdate= MapStatusUpdateFactory.zoomTo(15); baiduMap.setMapStatus(mMapStatusUpdate);5.更新地图状态 1)缩小 2)放大 3)旋转(0~360),每次在原来的基础上在旋转30度 4)俯、仰(0~45),每次在原来的基础上在俯视-5度 5)移动
@Override public void onClick(View view) { MapStatusUpdate mapstatusupdate=null; switch (view.getId()) { case R.id.btn1: // 1)缩小 mapstatusupdate=MapStatusUpdateFactory.zoomOut(); break; case R.id.btn2: // 2)放大 mapstatusupdate=MapStatusUpdateFactory.zoomIn(); break; case R.id.btn3: // 3)旋转(0~360),每次在原来的基础上在旋转30度 //3.1先拿到原来的角度 MapStatus currentMapStatus=baiduMap.getMapStatus(); //原来的角度+30度 float rotate=currentMapStatus.rotate+30; //创建一个地图状态,给该状态中添加角度 MapStatus mapStatus=new MapStatus.Builder().rotate(rotate).build(); mapstatusupdate=MapStatusUpdateFactory.newMapStatus(mapStatus); break; case R.id.btn4: // 4)俯、仰(0~45),每次在原来的基础上在俯视-5度(只支持负数,正数没有效果) MapStatus currentMapStatus4=baiduMap.getMapStatus(); float overlook=currentMapStatus4.overlook-5; MapStatus mapStatus4=new MapStatus.Builder().overlook(overlook).build(); mapstatusupdate=MapStatusUpdateFactory.newMapStatus(mapStatus4); break; case R.id.btn5: // 5)移动 mapstatusupdate=MapStatusUpdateFactory.newLatLng(tencentPos); //让其缓慢移动,以动画的方式更新地图动态,动画耗时2s, baiduMap.animateMapStatus(mapstatusupdate,2000); } baiduMap.setMapStatus(mapstatusupdate); }6.获取地图UI控制器:隐藏指南针
UiSettings uiSetting=baiduMap.getUiSettings(); //不显示指南针 uiSetting.setCompassEnabled(false);Demo:https://github.com/luuuzi007/BaiduMpa
项目需要获取经纬度,直接去看文档发现不难,记录一下吧(隔的时间有点久都忘了自己怎么写的)
/** * 百度地图定位管理器 */ public LocationClient mLocationClient = null; private MyLocationListener myListener = new MyLocationListener(); /** * 百度地图初始化,和配置参数 */ private void initBaiduMap() { mLocationClient = new LocationClient(getApplicationContext()); //声明LocationClient类 mLocationClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); //可选,设置定位模式,默认高精度 //LocationMode.Hight_Accuracy:高精度; //LocationMode. Battery_Saving:低功耗; //LocationMode. Device_Sensors:仅使用设备; option.setCoorType("bd09ll"); //可选,设置返回经纬度坐标类型,默认gcj02 //gcj02:国测局坐标; //bd09ll:百度经纬度坐标; //bd09:百度墨卡托坐标; //海外地区定位,无需设置坐标类型,统一返回wgs84类型坐标 option.setScanSpan(1000); //可选,设置发起定位请求的间隔,int类型,单位ms //如果设置为0,则代表单次定位,即仅定位一次,默认为0 //如果设置非0,需设置1000ms以上才有效 option.setOpenGps(true); //可选,设置是否使用gps,默认false //使用高精度和仅用设备两种定位模式的,参数必须设置为true option.setLocationNotify(true); //可选,设置是否当GPS有效时按照1S/1次频率输出GPS结果,默认false option.setIgnoreKillProcess(false); //可选,定位SDK内部是一个service,并放到了独立进程。 //设置是否在stop的时候杀死这个进程,默认(建议)不杀死,即setIgnoreKillProcess(true) //option.setIgnoreCacheException(false); //可选,设置是否收集Crash信息,默认收集,即参数为false //option.setWifiValidTime(5*60*1000); //可选,7.2版本新增能力 //如果设置了该接口,首次启动定位时,会先判断当前WiFi是否超出有效期,若超出有效期,会先重新扫描WiFi,然后定位 option.setEnableSimulateGps(false); //可选,设置是否需要过滤GPS仿真结果,默认需要,即参数为false mLocationClient.setLocOption(option); //mLocationClient为第二步初始化过的LocationClient对象 //需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用 //更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明 } /** * 百度地图获取经度,纬度 ,接口实现 */ public class MyLocationListener extends BDAbstractLocationListener { @Override public void onReceiveLocation(BDLocation location) { //此处的BDLocation为定位结果信息类,通过它的各种get方法可获取定位相关的全部结果 //以下只列举部分获取经纬度相关(常用)的结果信息 //更多结果信息获取说明,请参照类参考中BDLocation类中的说明 double latitude = location.getLatitude(); //获取纬度信息 double longitude = location.getLongitude(); //获取经度信息 //存储获取的数据 latitude_str = String.valueOf(latitude); longitude_str = String.valueOf(longitude); float radius = location.getRadius(); //获取定位精度,默认值为0.0f //Log.i(tag, "百度地图定位:经度:" + longitude + ",纬度:" + latitude); String coorType = location.getCoorType(); //获取经纬度坐标类型,以LocationClientOption中设置过的坐标类型为准 int errorCode = location.getLocType(); //获取定位类型、定位错误返回码,具体信息可参照类参考中BDLocation类中的说明 } }启动定位
//启动百度定位 mLocationClient.start();关闭定位
//关闭定位 mLocationClient.stop();