Камера Google Maps сбрасывает текущее положение через секунду
Я использую api карты Google, чтобы показать текущее местоположение пользователя и окружение некоторой упомянутой области с помощью кода ниже.
@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();
}
Но дело в том, что когда я меняю местоположение, перетаскивая ИЛИ zoomIn/zoomOut, оно сразу же сбрасывается в предыдущее положение.
Я хочу перемещаться куда угодно, перетаскивая и управляя zoomIn,zoomOut также по моему желанию. Когда я нажимаю кнопку MyLocation, я должен перейти к моей текущей позиции.
Примечание: когда я выключаю код ниже, для сброса требуется несколько секунд
//mMap.getUiSettings().setZoomControlsEnabled(true);
//mMap.setMyLocationEnabled(true);
Заранее спасибо.
2 ответа
Однако решите эту проблему, определив логический флаг
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();
}
Вы написали код для перемещения камеры в методе переопределения onLocationChanged, так что на некотором временном интервале он меняет широту и долготу местоположения (могут быть незначительные изменения).
Чтобы избежать этого, удалите этот код
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f));
mMap.getUiSettings().setZoomControlsEnabled(true);
mMap.setMyLocationEnabled(true);
из onLocationChanged
метод и напишите его во внешний метод и вызовите его, когда это необходимо (например, по нажатию кнопки)