Files
Fondex/lib/controllers/map_view_controller.dart

111 lines
3.2 KiB
Dart

import 'dart:typed_data';
import 'package:customer/constant/constant.dart';
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart' as flutterMap;
import 'package:get/get.dart' hide Trans;
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:latlong2/latlong.dart' as location;
import '../screen_ui/multi_vendor_service/restaurant_details_screen/restaurant_details_screen.dart';
import 'food_home_controller.dart';
class MapViewController extends GetxController {
GoogleMapController? mapController;
BitmapDescriptor? parkingMarker;
BitmapDescriptor? currentLocationMarker;
FoodHomeController homeController = Get.find<FoodHomeController>();
Image? departureOsmIcon; //OSM
RxList<flutterMap.Marker> osmMarker = <flutterMap.Marker>[].obs;
final flutterMap.MapController osmMapController = flutterMap.MapController();
@override
void onInit() {
// TODO: implement onInit
addMarkerSetup();
super.onInit();
}
Future<void> addMarkerSetup() async {
if (Constant.selectedMapType == "osm") {
departureOsmIcon = Image.asset(
"assets/images/map_selected.png",
width: 30,
height: 30,
); //OSM
for (var element in homeController.allNearestRestaurant) {
osmMarker.add(
flutterMap.Marker(
point: location.LatLng(
element.latitude ?? 0.0,
element.longitude ?? 0.0,
),
width: 40,
height: 40,
child: GestureDetector(
onTap: () {
Get.to(
RestaurantDetailsScreen(),
arguments: {"vendorModel": element},
);
},
child: departureOsmIcon,
),
),
);
}
} else {
final Uint8List parking = await Constant().getBytesFromAsset(
"assets/images/map_selected.png",
20,
);
parkingMarker = BitmapDescriptor.bytes(parking);
for (var element in homeController.allNearestRestaurant) {
addMarker(
latitude: element.latitude,
longitude: element.longitude,
id: element.id.toString(),
rotation: 0,
descriptor: parkingMarker!,
title: element.title.toString(),
);
}
}
}
RxMap<MarkerId, Marker> markers = <MarkerId, Marker>{}.obs;
void addMarker({
required double? latitude,
required double? longitude,
required String id,
required BitmapDescriptor descriptor,
required double? rotation,
required String title,
}) {
MarkerId markerId = MarkerId(id);
Marker marker = Marker(
markerId: markerId,
icon: descriptor,
infoWindow: InfoWindow(
title: title,
onTap: () {
int index = homeController.allNearestRestaurant.indexWhere(
(p0) => p0.id == id,
);
Get.to(
const RestaurantDetailsScreen(),
arguments: {
"vendorModel": homeController.allNearestRestaurant[index],
},
);
},
),
position: LatLng(latitude ?? 0.0, longitude ?? 0.0),
rotation: rotation ?? 0.0,
);
markers[markerId] = marker;
}
}