Android Google Map 显示当前位置

17 Mar 2025 | 4 分钟阅读

在上一篇 Android Google Map 的教程中,我们仅仅显示了 MapsActivity.java 文件中设置的默认坐标(位置)。

在本教程中,我们将显示用户当前位置并在此处放置标记。为此,我们需要生成 Google Map API 密钥。生成 Google Map API 的过程在教程 Android Google Map 中进行了描述。

要显示用户当前位置,我们需要实现一些接口及其回调方法。

Google Map 中的回调方法

  1. OnMapRreadyCallback: 当 MapFragment 对象上设置了实例时,将调用此回调接口。当地图准备好使用时,将调用 OnMapReadyCallback 接口的 onMapReady(GoogleMap) 方法。在 onMapReady(GoogleMap) 方法中,我们可以添加标记、监听器和其他属性。
  2. LocationListener: 此接口用于在设备位置发生变化时接收通知。当位置发生变化时,将调用 LocationListener 的抽象方法 onLocationChanged(Location)。
  3. GoogleApiClient.ConnectionCallbacks: 此接口提供 onConnected(Bundle) 和 onConnectionSuspended(int) 的回调方法,这些方法在设备连接和断开连接时调用。
  4. GoogleApiClient.OnConnectionFailedListener: 此接口提供 onConnectionFailed(ConnectionResult) 的回调方法,当连接设备到服务时发生错误时调用。

GoogleMap 的 setMyLocationEnabled() 方法用于启用位置图层,该图层允许设备与当前位置进行交互。

Google Map 显示当前位置的示例

让我们看一个显示设备当前位置的 Google Map 示例。

activity_maps.xml

在 activity_maps.xml 文件中,将 SupportMapFragment 添加到 fragment 中。

build.gradel

build.gradle 文件中添加以下依赖项。

MapsActivity.java

在 MapsActivity.java 文件中添加以下代码。


请求运行时权限

运行 Android 6.0 (Marshmallow) 或更高版本的 Android 设备需要一些运行时权限才能访问设备功能。

在上面的 MapsActivity.java 文件中,我们添加了一个运行时权限 Manifest.permission.ACCESS_FINE_LOCATION,用于请求访问设备位置。运行时权限使用 checkSelfPermission() 方法检查,并返回 PackageManager.PERMISSION_GRANTED 或 PackageManager.PERMISSION_DENIED。如果授予权限,应用程序将继续执行操作。

AndroidManifest.xml 中所需的权限

在 AndroidManifest.xml 文件中添加以下用户权限。

AndroidManifest.xml

输出

android Current Location