我正在使用谷歌地图 api 通过以下代码显示用户当前位置和周围提到的一些区域。
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude,longitude);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(true);
//call mentioned area to display
getLocation();
}
但问题是,当我通过拖动或放大/缩小来更改位置时,它会立即重置在上一个位置。
我想通过拖动和控制放大来移动到任何地方,缩小也随心所欲。就在我点击时 然后应该转到我当前的位置。
注意:当我关闭下面的代码时,需要几秒钟才能重置
//mMap.getUiSettings().setZoomControlsEnabled(true);
//mMap.setMyLocationEnabled(true);
提前谢谢。
您编写了代码以在 LocationChanged 覆盖方法中移动摄像机,以便在某个时间间隔内获取位置纬度和经度的变化(可能是微小的变化(。
为避免这种情况,请删除此代码
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(true);
从onLocationChanged
方法中编写它,并在必要时调用它(例如单击按钮(
但是,通过定义布尔标志来解决此问题
private boolean flag = true;
然后在移动相机之前检查它
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude,longitude);
if (flag) {
flag = false;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(true);
}
//call mentioned area to display
getLocation();
}