百度地图SDK安卓开发

作为移动开发的特点,地图功能绝对是不可或缺的。接下来我们就来通过一个小项目来达到入门的水平。

首先当然是申请密钥了,然后配置到项目了,我用的开发工具是Android Studio,以上的项目如果有不懂得需要自行百度。接下来我们就开始动手创建自己的项目,

我们首先在布局文件里添加一个TextView控件,用于使用文字显示自己的详细地理位置,这个没有难点。然后就需要我们在活动里面大展手脚了,如何开启定位服务呢?

我们需要通过实例化一个LocationClient对象,这里我们需要传入Context,可以写this,也可以写

getApplicationContext()
,然后调用它的
registerLocationListener(new MyLocationListener())
括号里面是我们注册的监听器,这个监听器实现了
BDLocationListener借口,我们需要在监听器里面的
onReceiveLocation()方法里面写一些逻辑代码,注意括号里面我们需要加上BDLocationListener
对象 ,实际上DLocationnListener对象所带的数据就是开启定位功能后返回的数据,当然目前的数据我们
并看不懂,所以要再

onReceiveLocation()方法里面写一些逻辑代码,目的是变成我们看的懂得信息。
********
接下来我们就需要在
mLocationClient = new LocationClient(getApplicationContext());
mLocationClient.registerLocationListener(new MyLocationListener());
注册一个监听器
后面添加
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
List<String> permissionList = new ArrayList<>();
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
    permissionList.add(Manifest.permission.READ_PHONE_STATE);
}
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (!permissionList.isEmpty()) {
    String [] permissions = permissionList.toArray(new String[permissionList.size()]);
    ActivityCompat.requestPermissions(MainActivity.this, permissions, 1);
} else {
    requestLocation();//如果所有权限都同意了的话,开始进行
 
 
requestLocation()方法里面的逻辑
} // 申请权限 , 运行手机是 6.0 ,引进了运行时权限

private void requestLocation() {
}
在这个方法里面我们需要开始我们的第一次定位了,定位的话我们一定需要
LocationClientOption对象的一个实例,在这个对象的基础上设置一些参数
private void requestLocation() {
    LocationClientOption option = new LocationClientOption();
        option.setCoorType("bd09ll");
        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
        option.setScanSpan(5000);
        option.setIsNeedAddress(true);
        //表示我们需要当前位置的详细信息
        option.setOpenGps(true);
        option.setNeedDeviceDirect(true);
        mLocationClient.setLocOption(option);//最后一定要有这个方法,用来保证前面设置的一些参数可以实现
        //创建一个LocationClientOption对象,并且进行初始化设置,记好最后一定要在
        //onDestory()方法中进行销毁,防止费电
    }
配置完成之后,我们并没有开启定位,我们只是设置了定位的模式,接下来,我们在这个方法里面
在加入
baiduMap.setMyLocationEnabled(true);//默认开启定位
mLocationClient.start();
//开启定位,定位的结果放回到我们之前注册的监听器里面
好了,目前定位 就开启了。
定位的结果自然而然的就返回到了我们之前注册的监听器里面

然后 我们就需要在监听器里面实现自己的内容了
public class MyLocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            StringBuilder currentPosition = new StringBuilder();
            currentPosition.append("纬度:").append(location.getLatitude()).append("\n");
            currentPosition.append("经线:").append(location.getLongitude()).append("\n");
            currentPosition.append("国家:").append(location.getCountry()).append("\n");
           currentPosition.append("省:").append(location.getProvince()).append("\n");            currentPosition.append("市:").append(location.getCity()).append("\n");
           currentPosition.append("区:").append(location.getDistrict()).append("\n");
            currentPosition.append("街道:").append(location.getStreet()).append("\n");
            currentPosition.append("定位方式:");
           if (location.getLocType() == BDLocation.TypeGpsLocation) {
               currentPosition.append("GPS");           } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
              currentPosition.append("网络")}
            positionText.setText(currentPosition);
            
            
        }

    }
在这里,我们把
 
 
 
 
BDLocation对象带的数据通过
 
 
 
 
getProvince()或者
 
 
 
 
getLongitude()等等方法来换成我们可以看得懂得信息。
时,我们已经把主要定位功能完成了,不过我们要记得定位是一件很费电的工作,所以我们一定要在程序退出
是关闭定位。
@Override
protected void onDestroy() {
    super.onDestroy();
    mLocationClient.stop();
    //停止定位
    
    
}

文件是根据郭霖老师的著作,自己理解打出来的,也在自己手机上实现了效果,或许还会有文章写百度地图SDK,
如果有一起学习的童鞋。Please






发布了37 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/OneLinee/article/details/78279815