Я использую API-интерфейс для определения текущего местоположения пользователя и вычисления скорости, как показано ниже.
LocationCallback mLocationCallback = new LocationCallback(){
private Location lastLocation = null;
private double calculatedSpeed = 0;
@Override
public void onLocationResult(LocationResult locationResult) {
Location location = locationResult.getLastLocation();
if (lastLocation != null) {
double elapsedTime = (location.getTime() - lastLocation.getTime()) / 1_000; // Convert milliseconds to seconds
calculatedSpeed = lastLocation.distanceTo(location) / elapsedTime;
}
this.lastLocation = location;
double speed = location.hasSpeed() ? location.getSpeed() : calculatedSpeed;
}
};
Используя рассчитанную скорость, я хочу увеличить масштаб при низкой скорости и уменьшить при высокой скорости, как это происходит в приложении Google Maps.Это приложение для слежения за 4 колесами.
Будем весьма благодарны за любые предложения о том, как их достичь, спасибо!
Решение :
Решениедолжен был вручную установить уровни масштабирования на основе текущего полученного значения скорости.
float zoom;
if(speed < 5)
zoom = 18;
else if(speed < 10)
zoom = (float) 17.5;
else if(speed < 15)
zoom = 17;
else if(speed < 20)
zoom = (float) 16.5;
else if(speed < 25)
zoom = 16;
else
zoom = 15;
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(myLatLng)
.zoom(zoom)
.tilt(0)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));