diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 2a79e4e..2387030 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -49,6 +49,6 @@
android:name="flutterEmbedding"
android:value="2" />
+ android:value="AIzaSyDJpK9RVhlBejtJu9xSGfneuTN6HOfJgSM"/>
diff --git a/assets/images/pickup_marker.png b/assets/images/pickup_marker.png
index a8b0258..04c4e95 100644
Binary files a/assets/images/pickup_marker.png and b/assets/images/pickup_marker.png differ
diff --git a/lib/location_controller.dart b/lib/location_controller.dart
index 286d84f..b08040d 100644
--- a/lib/location_controller.dart
+++ b/lib/location_controller.dart
@@ -18,7 +18,7 @@ class LocationController extends GetxController {
/*final Rx locationPosition =
const LatLng(12.90618717, 77.5844983).obs;*/
final Rx locationPosition =
- const LatLng(17.491659, 78.391983).obs;
+ const LatLng(0, 0).obs;
bool locationServiceActive = true;
diff --git a/lib/order_tracking_page.dart b/lib/order_tracking_page.dart
index 2d41de8..f39fad2 100644
--- a/lib/order_tracking_page.dart
+++ b/lib/order_tracking_page.dart
@@ -1,10 +1,13 @@
import 'dart:async';
import 'dart:developer';
+import 'dart:math';
+
import 'package:flutter/material.dart';
import 'package:flutter_polyline_points/flutter_polyline_points.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
+import 'package:location/location.dart';
import 'location_controller.dart';
@@ -26,22 +29,16 @@ class OrderTrackingPageState extends State {
PolylinePoints polylinePoints = PolylinePoints();
double latitude=0;
double longitude=0;
+ LocationData? currentLocation;
- String googleAPiKey ="AIzaSyBOigf-qg4v_aD0Jrx2wFOMNzObxXrfDEM";
+ String googleAPiKey ="AIzaSyDJpK9RVhlBejtJu9xSGfneuTN6HOfJgSM";
Set markers = {};
Map polylines = {};
LatLng startLocation = const LatLng(17.416806,78.4521704);
-
-
LocationController locationController = Get.put(LocationController());
-
-
-
-
-
-
+ double distance = 0.0;
@override
void initState() {
@@ -52,7 +49,7 @@ class OrderTrackingPageState extends State {
ever(locationController.locationPosition, (value) {
if (value != null) {
- log("${value.latitude} ${value.longitude}");
+ // log("${value.latitude} ${value.longitude}");
var latitude = value.latitude;
var longitude = value.longitude;
startLocation = LatLng(latitude, longitude);
@@ -61,6 +58,7 @@ class OrderTrackingPageState extends State {
});
getDirections(endLocation); //fetch direction polylines from Google API
+
}
getDirections(endLocation) async {
@@ -100,8 +98,24 @@ class OrderTrackingPageState extends State {
polylineCoordinates.add(LatLng(point.latitude, point.longitude));
}
} else {
- log(result.errorMessage ?? "Something went wrong");
+ // log(result.errorMessage ?? "Something went wrong");
}
+
+//polulineCoordinates is the List of longitute and latidtude.
+ double totalDistance = 0;
+ for(var i = 0; i < polylineCoordinates.length-1; i++){
+ totalDistance += calculateDistance(
+ polylineCoordinates[i].latitude,
+ polylineCoordinates[i].longitude,
+ polylineCoordinates[i+1].latitude,
+ polylineCoordinates[i+1].longitude);
+ }
+ print(totalDistance);
+
+ setState(() {
+ distance = totalDistance;
+ });
+
addPolyLine(polylineCoordinates);
}
@@ -109,9 +123,9 @@ class OrderTrackingPageState extends State {
PolylineId id = const PolylineId("poly");
Polyline polyline = Polyline(
polylineId: id,
- color: Colors.red,
+ color: Colors.deepPurpleAccent,
points: polylineCoordinates,
- width: 4,
+ width: 8,
);
polylines[id] = polyline;
@@ -125,31 +139,69 @@ class OrderTrackingPageState extends State {
setState(() {});
}
+
+ double calculateDistance(lat1, lon1, lat2, lon2){
+ var p = 0.017453292519943295;
+ var a = 0.5 - cos((lat2 - lat1) * p)/2 +
+ cos(lat1 * p) * cos(lat2 * p) *
+ (1 - cos((lon2 - lon1) * p))/2;
+ return 12742 * asin(sqrt(a));
+ }
+
+
+
+
@override
Widget build(BuildContext context) {
return Scaffold(
- body: GoogleMap(
- //Map widget from google_maps_flutter package
- zoomGesturesEnabled: true,
- //enable Zoom in, out on map
- initialCameraPosition: CameraPosition(
- //innital position in map
- target: startLocation, //initial position
- zoom: 8.0, //initial zoom level
- ),
- markers: markers,
- //markers to show on map
- polylines: Set.of(polylines.values),
- //polylines
- mapType: MapType.normal,
- //map type
- onMapCreated: (controller) {
- //method called when map is created
- if (!mapController.isCompleted) {
- mapController.complete(controller);
- }
- },
- ),
+ body: Stack(
+ children: [
+ GoogleMap(
+ //Map widget from google_maps_flutter package
+ zoomGesturesEnabled: true,
+ //enable Zoom in, out on map
+ initialCameraPosition: CameraPosition(
+ //innital position in map
+ target: startLocation, //initial position
+ zoom: 8.0, //initial zoom level
+ ),
+
+ markers: markers,
+ //markers to show on map
+ polylines: Set.of(polylines.values),
+ //polylines
+ mapType: MapType.normal,
+ //map type
+ onMapCreated: (controller) {
+ //method called when map is created
+ if (!mapController.isCompleted) {
+ mapController.complete(controller);
+ }
+ },
+
+ ),
+
+ const SizedBox(
+ height: 95,
+ ),
+
+ Positioned(
+ bottom: 100,
+ left: 50,
+ child: Container(
+ child: Card(
+ child: Container(
+ padding: EdgeInsets.all(20),
+ child: Text("Total Distance: " + distance.toStringAsFixed(2) + " KM",
+ style: TextStyle(fontSize: 20, fontWeight:FontWeight.bold))
+ ),
+ )
+ )),
+ ],
+ )
+
+
);
+
}
}