ACCESS固定到本身的义务

 

在落到实处稳定到自身的岗位时,首先要打开定位图层,能够采取com.baidu.mapapi.map.BaiduMap
对象的setMyLocationEnabled()方法达成。该方法的语法格式如下:

Public
final void set MyLocationEnabled(boolean enabled)

个中,enabled参数用于指定是还是不是允许定位图层,值为true时期表同意,否则为不容许。

翻开定位图层的代码如下:

mBaiduMap.setMyLocationEnabled(true); 

接下来创设MyLocationData对象,用于协会定位数据,包蕴GPS定位时方向角度、纬度坐标、经度坐标、定位精度和时速等。例如,构造定位数据,指定GPS定位时方向角度为100、坐标地点为当下任务,可以运用上面的代码。

01     MyLocationData locData = new MyLocationData.Builder().
02             accuracy(location.getAccuracy())    //设置精度
03             .direction(100)                     //此处设置开发者获取到的方向信息,顺时针0-360
04             .latitude(location.getLatitude())   //设置纬度坐标
05             .longitude(location.getLongitude()) //设置经度坐标
06             .build();

申明:此处代码将应用Android原有定位方法。

再安装固定数据,并计划定位图层的局地新闻。代码如下:

01     mBaiduMap.setMyLocationData(locData);
02     //设置自定义定位图标
03     BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory
04             .fromResource(R.drawable.icon_geo);
05     mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL;      //设置定位模式
06     //位置构造方式,将定位模式,定义图标添加其中
07     MyLocationConfiguration config = new
 MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);
08     mBaiduMap.setMyLocationConfigeration(config);                 //地图显示定位图标

最后,在不必要一定图层时关闭定位图层。代码如下:

mBaiduMap.setMyLocationEnabled(false);                                 //关闭定位图层

上面通过一个实例来演示如何在百度地图上一定本身的任务。

 

实例 百度地图定位本人的地点

 

证实:该实例在本章实例06基础上开展改动。

在Android
Studio中创制Module,名称为“My
Location”。在该Module中落成本实例,具体步骤如下。

(1)打开主活动MainActivity,在该文件中声称所需成员变量,关键代码如下:

01     private MapView mMapView;                                   //百度地图组件
02     private BaiduMap mBaiduMap;                                 //定义百度地图对象
03     private boolean isFirstLoc = true;                          //定义第一次启动
04     private MyLocationConfiguration.LocationMode mCurrentMode;  //定义当前定位模式

(2)在MainActivity的onCreate()方法中,获取系统的LocationManager对象,关键代码如下:

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

(3)在onCreate()方法中,通过locationManager.requestLocationUpdates()方法与岗位监听器来设置每秒获取四次location消息,并将流行的永恒消息传送给创造的locationUpdates()方法中。关键代码如下:

01   //设置每秒获取一次location信息

02   locationManager.requestLocationUpdates(

03           LocationManager.GPS_PROVIDER,      //GPS定位提供者

04           1000,                              //更新数据时间为1秒

05           1,                                 //位置间隔为1米

06           //位置监听器

07           new LocationListener() {           //GPS定位信息发生改变时触发,用于更新位置信息

08               @Override

09               public void onLocationChanged(Location location) {

10                   //GPS信息发生改变时,更新位置

11                   locationUpdates(location);

12               }

13               @Override

14               //位置状态发生改变时触发

15               public void onStatusChanged(String provider, int status, Bundle extras) {

16               }

17               @Override

18               //定位提供者启动时触发

19               public void onProviderEnabled(String provider) {

20               }

21               @Override

22               //定位提供者关闭时触发

23               public void onProviderDisabled(String provider) {

24               }

25           });

26   //从GPS获取最新的定位信息

27   Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

28   locationUpdates(location);        //将最新的定位信息传递给创建的locationUpdates()方法中

证实:添加上的代码后,在代码的人间将出现金色浪线,此时按下〈Alt+Enter〉键,然后拔取Add
Permission
ACCESS_FINE_LOCATION选项,添加该权限消除石绿浪线难点。此时,Android
Studio将电动抬高以下权限检查的代码。

01   if (ActivityCompat.checkSelfPermission(this,

 Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED

   && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)

  != PackageManager.PERMISSION_GRANTED) {

02       return;

03   }

(4)在MainActivity中,创造locationUpdates()方法,用于获取当前的经纬度,并安装固定。当拿到的消息不为空时,首先设置第二回定位的中央点为目前地点,然后构造和装置固定数据,最终在地形图上出示定位图标。关键代码如下:

01   public void locationUpdates(Location location) {                      //获取指定的查询信息

02       //如果location不为空时

03       if (location != null) {

04           //获取用户当前经纬度

05           LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());

06          Log.i("Location","纬度:"+location.getLatitude()+" | 经度:"+location.getLongitude());

07           if (isFirstLoc) {  //如果是第一次定位,就定位到以自己为中心

08               MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);  //更新坐标位置

09               mBaiduMap.animateMapStatus(u);                             //设置地图位置

10               isFirstLoc = false;                                        //取消第一次定位

11           }

12           //构造定位数据

13           MyLocationData locData = new MyLocationData.Builder().

14                   accuracy(location.getAccuracy())                       //设置精度

15                   .direction(100)        // 此处设置开发者获取到的方向信息,顺时针0~360

16                   .latitude(location.getLatitude())                      //设置纬度坐标

17                   .longitude(location.getLongitude())                    //设置经度坐标

18                   .build();

19           //设置定位数据

20           mBaiduMap.setMyLocationData(locData);

21           //设置自定义定位图标

22           BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory

23                   .fromResource(R.drawable.icon_geo);

24           mCurrentMode = MyLocationConfiguration.LocationMode.NORMAL;    //设置定位模式

25           //位置构造方式,将定位模式,定义图标添加其中

26           MyLocationConfiguration config = new

 MyLocationConfiguration(mCurrentMode, true, mCurrentMarker);

27           mBaiduMap.setMyLocationConfigeration(config);                  //地图显示定位图标

28       } else {

29           //否则输出空信息

30           Log.i("Location","没有获取到GPS信息");

31       }

32   }

 

(5)重写Activity的onStart()方法和onStop()方法,在onStart()方法中启动地图定位,在onStop()方法中甘休地图定位。关键代码如下:

01   @Override

02   protected void onStart() {                 //启动地图定位

03       super.onStart();

04       mBaiduMap.setMyLocationEnabled(true);  //启动定位图层

05   }

06   @Override

07   protected void onStop() {                   //停止地图定位

08       super.onStop();

09       mBaiduMap.setMyLocationEnabled(false);  //关闭定位图层

10   }

 

(6)在AndroidManifest.xml文件中,添加以下代码设置访问LocationProvider的连带权限,具体代码如下:

01   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

02   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

 

(7)在工具栏中找到下拉列表框,拔取要运行的选择(那里为My
Location),再单击右边的按钮,运行效果如图14.24所示。

 ACCESS 1

图14.24 
在百度地图上展现作者的职位

表达:运行本实例须要在小叔子大中跻身
“设置”→“应用”→你的App应用名称→“权限”开启地方权限,即可开展固化。

 

本文摘自明天科学技术出版的《零基础学Android》,转发请评释出处!!!

 

相关文章