Android百度地图当前位置获取功能

Android 的百度地图定位功能,是不少项目里常见又挺实用的一块功能。百度的 SDK 做得还不错,定位比较快,而且结合 GPS 和网络定位,准确度也蛮高的。如果你要在项目里加个“查看当前位置”的功能,这篇教程真的值得一看。

定位用的是百度地图 API,用之前你得去百度地图开放平台申一个API 密钥。注册、创建应用、拿到 key 之后,就可以开始搞了。记得在AndroidManifest.xml里加上ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION两个权限,要不然位置读不出来哦。

SDK 引入也蛮方便的,直接用Gradle拉下来就行:

dependencies {
  implementation 'com.baidu.mapapi:baidumapapi:5.2.0'
}

在布局文件里放一个MapView控件,这个是地图的核心:

Activity或者Fragment里初始化它,监听位置变化就能拿到当前坐标。位置一拿到,你就可以搞事情,比如在地图上打个点、更新 UI 什么的:

mapView = findViewById(R.id.bmapView);
BaiduMap baiduMap = mapView.getMap();
baiduMap.setOnMyLocationChangeListener(new BaiduMap.OnMyLocationChangeListener() {
  @Override
  public void onMyLocationChange(Location location) {
    if (location != null) {
      double latitude = location.getLatitude();
      double longitude = location.getLongitude();
      MyLocationData locData = new MyLocationData.Builder()
        .accuracy(location.getAccuracy())
        .direction(location.getBearing())
        .latitude(latitude)
        .longitude(longitude)
        .build();
      baiduMap.setMyLocationData(locData);
    }
  }
});

百度地图还支持显示指南针、比例尺这些小工具,增强用户体验也是加分项:

baiduMap.setCompassEnabled(true);
baiduMap.setScaleControlEnabled(true);
baiduMap.setMyLocationEnabled(true);

资源释放也别忘了,退出页面时要把MapView销毁:

@Override
protected void onDestroy() {
  super.onDestroy();
  mapView.onDestroy();
}

如果你想深入了解相关的定位功能,也可以去看看这些相关文章:

如果你项目里需要用到实时定位,又想用户体验流畅点,那这套方案你可以放心上。

zip 文件大小:1.79MB