import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

import '../../../../controller/functions/location_controller.dart';
import '../../../../controller/home/captin/map_driver_controller.dart';

class GoogleDriverMap extends StatelessWidget {
  const GoogleDriverMap({
    super.key,
    required this.locationController,
  });

  final LocationController locationController;

  @override
  Widget build(BuildContext context) {
    final MapDriverController controller = Get.put(MapDriverController());

    // New: تحديد قيمة الـ padding لتحريك مركز الخريطة للأعلى
    final double mapPaddingBottom = MediaQuery.of(context).size.height * 0.3;

    return GetBuilder<MapDriverController>(
      builder: (controller) => GoogleMap(
        onMapCreated: (mapController) {
          controller.onMapCreated(mapController);
          // New: تطبيق الـ padding بعد إنشاء الخريطة مباشرة
          mapController.setMapStyle('[]'); // يمكنك إضافة تصميم مخصص للخريطة هنا
          // يمكنك استخدام CameraUpdate.scrollBy لتحريك الكاميرا إذا رغبت بذلك:
          // controller.mapController!.animateCamera(CameraUpdate.scrollBy(0, mapPaddingBottom));
        },
        // New: إضافة padding لتحريك مركز الخريطة للأعلى، مما يجعل أيقونة السائق تظهر في الأسفل

        zoomControlsEnabled: false, // Changed: تم إخفاء أزرار الزوم الافتراضية
        initialCameraPosition: CameraPosition(
          target: locationController.myLocation,
          zoom: 17,
          bearing: locationController.heading, // استخدام اتجاه السائق
          tilt: 60, // زاوية ميل
        ),
        onCameraMove: (position) {
          CameraPosition(
            target: locationController.myLocation,
            zoom: 17.5,
            tilt: 50.0,
            bearing: locationController.heading,
          );
        },
        padding: EdgeInsets.only(bottom: 50, top: Get.height * 0.7),
        minMaxZoomPreference: const MinMaxZoomPreference(8, 18),
        myLocationEnabled: false, // Changed: تم الاعتماد على ماركر مخصص
        myLocationButtonEnabled: true,
        compassEnabled: true,
        mapType: MapType.terrain,
        trafficEnabled: true, // Changed: تفعيل عرض حركة المرور
        buildingsEnabled: true,
        polylines: {
          // Polyline(
          //   zIndex: 2,

          //   polylineId: const PolylineId('route1'),
          //   points: controller.polylineCoordinates,
          //   color: const Color.fromARGB(255, 163, 81, 246),
          //   width: 6, // Changed: زيادة عرض الخط
          //   startCap: Cap.roundCap,
          //   endCap: Cap.roundCap,
          // ),
          // Polyline(
          //   zIndex: 2,

          //   polylineId: const PolylineId('route'),
          //   points: controller.polylineCoordinatesDestination,
          //   color: const Color.fromARGB(255, 10, 29, 126),
          //   width: 6, // Changed: زيادة عرض الخط
          //   startCap: Cap.roundCap,
          //   endCap: Cap.roundCap,
          // ),
          Polyline(
            polylineId: const PolylineId('upcoming_route'),
            points: controller.upcomingPathPoints,
            color: Colors.blue, // أو أي لون آخر تختاره للمسار
            width: 8,
            zIndex: 2,
          ),
          // 2. الخط المقطوع (تحت)
          Polyline(
            polylineId: const PolylineId('traveled_route'),
            points: controller.traveledPathPoints,
            color: Colors.grey.withOpacity(0.8),
            width: 7,
            zIndex: 1,
          ),
        },
        markers: {
          Marker(
            markerId: MarkerId('MyLocation'.tr),
            position: locationController.myLocation,
            rotation: locationController.heading,
            flat: true,
            anchor: const Offset(0.5, 0.5),
            icon: controller.carIcon,
          ),
          Marker(
            markerId: MarkerId('start'.tr),
            position: controller.latLngPassengerLocation,
            icon: controller.startIcon,
          ),
          Marker(
            markerId: MarkerId('end'.tr),
            position: controller.latLngPassengerDestination,
            icon: controller.endIcon,
          ),
        },
      ),
    );
  }
}
