Android开发百度SDK的使用--定位图层的使用
2014-11-28 18:01
435 查看
在上一篇博客中对Android中调用百度的SDK的设置,以及简单的定位功能做了笔记,这次来记录一下如何使用百度地图接口的定位图层,ps:版本号V3.2
1. 首先我们在使用百度SDK各组件之前需要初始化context信息并传入ApplicationContext中,这里在我的Application的onCreate方法中进行该步骤:
1)在setMyLocationConfigeration方法中可以设置地图的模式:对于传入参数的MyLocationConfiguration中LocationMode.NORMAL表示正常模式,LocationMode.COMPASS表示使用罗盘模式,LocationMode.FOLLOWING表示跟随模式
2)设置显示当前定位点的图标,MyLocationConfiguration构造参数中第二个boolean值表示是否显示定位当前点图标,第三个参数表示个人设置的图标,null表示使用默认图标,如果我们想要修改可以使用 BitmapDescriptorFactory.fromResource(R.drawable.icon_geo)帮助我们创建自己图标(一个BitmapDescriptor对象),并将其传入MyLocationConfiguration构造函数
4. 管理MapView:在百度SDK中对MapView定义了类似Activity的生命周期函数,方便我们的管理
1. 首先我们在使用百度SDK各组件之前需要初始化context信息并传入ApplicationContext中,这里在我的Application的onCreate方法中进行该步骤:
@Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); // 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext SDKInitializer.initialize(this); }2. 第二步,来加载显示地图的控件,这里我在布局文件中直接加载
<com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />3. 获取BaiduMap对象,对MapView进行设置
mBaiduMap = mMapView.getMap();//得到一个BaiduMap对象 mBaiduMap.setMyLocationEnabled(true);//打开定位图层在定位操作同上一篇博客,在定位回调接口中对BaiduMap进行设置
mLocClient.registerLocationListener(new BDLocationListener() { @Override public void onReceiveLocation(BDLocation location) { // TODO Auto-generated method stub if (location == null || mMapView == null) return; mTextView.setText("当前位置:"+location.getAddrStr()); MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); LatLng ll = new LatLng(location.getLatitude(), location .getLongitude()); mUpdate = MapStatusUpdateFactory.newLatLngZoom(ll, 14); mBaiduMap.animateMapStatus(mUpdate); //mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo); mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( LocationMode.NORMAL, true, null)); } });关于地图的设置进行一些说明:
1)在setMyLocationConfigeration方法中可以设置地图的模式:对于传入参数的MyLocationConfiguration中LocationMode.NORMAL表示正常模式,LocationMode.COMPASS表示使用罗盘模式,LocationMode.FOLLOWING表示跟随模式
2)设置显示当前定位点的图标,MyLocationConfiguration构造参数中第二个boolean值表示是否显示定位当前点图标,第三个参数表示个人设置的图标,null表示使用默认图标,如果我们想要修改可以使用 BitmapDescriptorFactory.fromResource(R.drawable.icon_geo)帮助我们创建自己图标(一个BitmapDescriptor对象),并将其传入MyLocationConfiguration构造函数
4. 管理MapView:在百度SDK中对MapView定义了类似Activity的生命周期函数,方便我们的管理
@Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); }附上源码:
package com.example.gymapp; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationConfiguration; import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.model.LatLng; public class MainActivity extends Activity { LocationClient mLocClient; BitmapDescriptor mCurrentMarker; MapView mMapView; BaiduMap mBaiduMap; private MapStatusUpdate mUpdate; private TextView mTextView; private Button loactionButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.bmapView); loactionButton = (Button) findViewById(R.id.button1); mTextView = (TextView) findViewById(R.id.textView1); mBaiduMap = mMapView.getMap(); mBaiduMap.setMyLocationEnabled(true); mLocClient = new LocationClient(this); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); option.setCoorType("bd09ll"); option.setIsNeedAddress(true); mLocClient.setLocOption(option); mLocClient.registerLocationListener(new BDLocationListener() { @Override public void onReceiveLocation(BDLocation location) { // TODO Auto-generated method stub if (location == null || mMapView == null) return; mTextView.setText("当前位置:"+location.getAddrStr()); MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此处设置开发者获取到的方向信息,顺时针0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); LatLng ll = new LatLng(location.getLatitude(), location .getLongitude()); mUpdate = MapStatusUpdateFactory.newLatLngZoom(ll, 14); mBaiduMap.animateMapStatus(mUpdate); //mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo); mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( LocationMode.FOLLOWING, true, null)); } }); mLocClient.start(); loactionButton.setText("定位"); loactionButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub mLocClient.requestLocation(); } }); } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { // 退出时销毁定位 mLocClient.stop(); // 关闭定位图层 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); } }
相关文章推荐
- Android开发之百度SDK的使用--基础定位
- Android开发之百度SDK的使用--线路查询
- android中使用百度定位sdk实时的计算移动距离
- 利用百度地图API定位为什么使用百度自己开发的locSDK2.6.jar包
- Android使用百度定位SDK方法及错误处理
- Android应用程序实现定位功能(使用百度定位SDK)
- Android使用百度定位SDK 方法及错误处理
- 百度Android 定位SDK 的使用及错误
- Android使用GSP和百度SDK定位
- android开发游记:集成百度定位SDK进行实时定位 获取当前城市地理信息
- cordova开发中,android端利用百度sdk定位。
- Android使用百度定位SDK方法及错误处理
- android中使用百度定位sdk实时的计算移动距离
- Android使用百度定位SDK方法及错误处理
- android中使用百度定位sdk实时的计算移动距离
- 【代码】Android 使用百度定位SDK 方法及处理错误
- Android百度定位API使用方法
- Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
- Android百度定位API使用方法
- Android 系统api实现定位及使用百度提供的api来实现定位