开发前准备。首先下载好百度地图所需要的SDK,并获取key。获取key的方法在百度API首页上的有。
小提示:可能做为开发者的你忘记了debug.keystore的密码(其实是根本就不知道) debug.keystore的密码是android。
配置百度地图
这里将记录如何使用百度地图定位
在上面的准备工作做完以后,就可以再自己的程序里面做开发学习了。首先声明各种对象
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;
上面的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) { }
}`
初始化视图
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();初始化定位的模式
mBaiduMap.setMyLocationConfigeration(new
MyLocationConfiguration(mCurrentMode,
true,
mCurrentMarker));初始化定位的显示图标
mCurrentMarker=null;
这里的第3个变量是图标的样式,你们可以选择自己喜欢的样式。
mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(
mCurrentMode, true, null));结果