25-11-18/1
This commit is contained in:
@@ -2,7 +2,10 @@ import 'dart:io';
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:bubble_head/bubble.dart';
|
||||
// import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
// import 'package:flutter_map/flutter_map.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
// import 'package:latlong2/latlong.dart' as latlng; // لإحداثيات العرض
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -32,14 +35,15 @@ import 'widget/left_menu_map_captain.dart';
|
||||
class HomeCaptain extends StatelessWidget {
|
||||
HomeCaptain({super.key});
|
||||
|
||||
final LocationController locationController = Get.put(LocationController());
|
||||
final LocationController locationController =
|
||||
Get.put(LocationController(), permanent: true);
|
||||
final HomeCaptainController homeCaptainController =
|
||||
Get.put(HomeCaptainController());
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// Initial calls remain the same.
|
||||
Get.put(HomeCaptainController());
|
||||
// Get.put(HomeCaptainController());
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
||||
closeOverlayIfFound();
|
||||
checkForUpdate(context);
|
||||
@@ -201,21 +205,19 @@ class _MapView extends StatelessWidget {
|
||||
// هذا الـ Builder يستمع إلى تحديثات الموقع
|
||||
return GetBuilder<LocationController>(
|
||||
builder: (locationController) {
|
||||
// --- هذا هو الكود الجديد ---
|
||||
// نقوم بتحريك الكاميرا يدوياً عند كل تحديث للموقع
|
||||
if (homeController.mapHomeCaptainController != null &&
|
||||
homeController.isActive) {
|
||||
homeController.mapHomeCaptainController!.animateCamera(
|
||||
CameraUpdate.newCameraPosition(
|
||||
CameraPosition(
|
||||
target: locationController.myLocation, // الموقع الجديد
|
||||
zoom: 17.5, // تقريب لمتابعة السائق
|
||||
tilt: 50.0, // زاوية رؤية 3D
|
||||
bearing: locationController.heading, // اتجاه السيارة
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
// if (homeController.mapHomeCaptainController != null &&
|
||||
// homeController.isActive) {
|
||||
// homeController.mapHomeCaptainController!.animateCamera(
|
||||
// CameraUpdate.newCameraPosition(
|
||||
// CameraPosition(
|
||||
// target: locationController.myLocation, // الموقع الجديد
|
||||
// zoom: 17.5, // تقريب لمتابعة السائق
|
||||
// tilt: 50.0, // زاوية رؤية 3D
|
||||
// bearing: locationController.heading, // اتجاه السيارة
|
||||
// ),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
// --- نهاية الكود الجديد ---
|
||||
|
||||
// إرجاع الخريطة
|
||||
@@ -248,6 +250,71 @@ class _MapView extends StatelessWidget {
|
||||
compassEnabled: false,
|
||||
zoomControlsEnabled: false,
|
||||
);
|
||||
// --- الكود الجديد ---
|
||||
|
||||
// // تحويل الإحداثيات من جوجل (إذا كنت لا تزال تستخدمها) إلى latlong2
|
||||
// final latlng.LatLng currentCarPosition = latlng.LatLng(
|
||||
// locationController.myLocation.latitude,
|
||||
// locationController.myLocation.longitude);
|
||||
|
||||
// return FlutterMap(
|
||||
// // 1. تمرير الـ Controller الذي أنشأناه في الخطوة 2
|
||||
// mapController: homeController.mapController,
|
||||
|
||||
// options: MapOptions(
|
||||
// // 2. هذا بديل initialCameraPosition
|
||||
// initialCenter: currentCarPosition,
|
||||
// initialZoom: 15,
|
||||
// // هذا بديل padding
|
||||
// // (ملاحظة: flutter_map لا يدعم padding مباشرة، قد تحتاج لتعديل الواجهة
|
||||
// // أو استخدام خاصية nonRotatedChildren لبدائل أخرى)
|
||||
|
||||
// // هذا بديل minMaxZoomPreference
|
||||
// minZoom: 12,
|
||||
// maxZoom: 16, onMapReady: homeController.onMapReady,
|
||||
// ),
|
||||
|
||||
// // 3. الخرائط في flutter_map عبارة عن "طبقات" (Layers)
|
||||
// children: [
|
||||
// // --- الطبقة الأولى: الخريطة الأساسية (OSM) ---
|
||||
// TileLayer(
|
||||
// urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
// userAgentPackageName:
|
||||
// 'com.your.app.name', // هام: ضع اسم تطبيقك هنا
|
||||
// ),
|
||||
|
||||
// // --- (اختياري) طبقة القمر الصناعي بناءً على MapType ---
|
||||
// if (controller.mapType) // إذا كنت لا تزال تستخدم mapType
|
||||
// // TileLayer(
|
||||
// // // ملاحظة: هذا الرابط يحتاج مفتاح API من MapTiler أو مزود آخر
|
||||
// // urlTemplate:
|
||||
// // 'https://api.maptiler.com/maps/satellite/{z}/{x}/{y}.jpg?key=YOUR_API_KEY',
|
||||
// // userAgentPackageName: 'com.your.app.name',
|
||||
// // ),
|
||||
|
||||
// // --- الطبقة الثانية: أيقونة السيارة (Marker) ---
|
||||
// MarkerLayer(
|
||||
// markers: [
|
||||
// Marker(
|
||||
// point: currentCarPosition, // الإحداثيات
|
||||
// width: 80,
|
||||
// height: 80,
|
||||
// child: Transform.rotate(
|
||||
// // 4. هذا بديل rotation
|
||||
// angle: locationController.heading *
|
||||
// (3.1415926535 / 180), // تحويل من درجات إلى راديان
|
||||
// // 5. هذا بديل carIcon (أصبح أسهل!)
|
||||
// child: Image.asset(
|
||||
// 'assets/images/car.png', // نفس المسار الذي استخدمته من قبل
|
||||
// width: 30, // الحجم الذي حددته في addCustomCarIcon
|
||||
// height: 35,
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ],
|
||||
// );
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user