Google 地图片段跟随蓝点
Google Maps fragment follow blue dot
我在我的应用程序中实现了一个 Google 地图片段,用户可以通过点击 'compass' 按钮(在右上角)查看他们的当前位置。
这很好用,但是如果用户移动了很远的距离,蓝点就会离开地图。要重新定位蓝点,用户必须再次按下 'compass' 按钮。
是否可以跟随蓝点,将其置于地图片段的中心?当用户移动时,相机也随之移动?
以下是用于显示和更新片段位置的代码;
//Maps
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
//Prompt user for permission
getLocationPermission();
//Setup map UI with blue dot etc
updateLocationUI();
// Get the current location of the device and set the position of the map.
getDeviceLocation();
}
private void getLocationPermission() {
if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
}
else {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}
}
private void updateLocationUI() {
if (mMap == null) {
return;
}
try {
if (mLocationPermissionGranted) {
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
} else {
mMap.setMyLocationEnabled(false);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
mLastKnownLocation = null;
getLocationPermission();
}
} catch (SecurityException e) {
Log.e("Exception: %s", e.getMessage());
}
}
您需要监听位置更新,如果用户移动了相当长的距离(取决于您的缩放级别)则移动摄像头
- 更大的缩放级别意味着,您需要移动相机以进行小幅移动,例如 10 米
- 较小的缩放级别意味着您需要较少移动相机,比如只需移动 100 米
- 在实施侦听位置时牢记电池消耗,并在实施前寻找最佳实践
我在我的应用程序中实现了一个 Google 地图片段,用户可以通过点击 'compass' 按钮(在右上角)查看他们的当前位置。
这很好用,但是如果用户移动了很远的距离,蓝点就会离开地图。要重新定位蓝点,用户必须再次按下 'compass' 按钮。
是否可以跟随蓝点,将其置于地图片段的中心?当用户移动时,相机也随之移动?
以下是用于显示和更新片段位置的代码;
//Maps
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
//Prompt user for permission
getLocationPermission();
//Setup map UI with blue dot etc
updateLocationUI();
// Get the current location of the device and set the position of the map.
getDeviceLocation();
}
private void getLocationPermission() {
if (ContextCompat.checkSelfPermission(this.getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
mLocationPermissionGranted = true;
}
else {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}
}
private void updateLocationUI() {
if (mMap == null) {
return;
}
try {
if (mLocationPermissionGranted) {
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
} else {
mMap.setMyLocationEnabled(false);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
mLastKnownLocation = null;
getLocationPermission();
}
} catch (SecurityException e) {
Log.e("Exception: %s", e.getMessage());
}
}
您需要监听位置更新,如果用户移动了相当长的距离(取决于您的缩放级别)则移动摄像头
- 更大的缩放级别意味着,您需要移动相机以进行小幅移动,例如 10 米
- 较小的缩放级别意味着您需要较少移动相机,比如只需移动 100 米
- 在实施侦听位置时牢记电池消耗,并在实施前寻找最佳实践