map_navigation_utils 0.0.3
map_navigation_utils: ^0.0.3 copied to clipboard
A Flutter package that provides smooth Google Maps marker animation, polyline decoding, and distance/bearing calculation utilities for navigation apps.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:map_navigation_utils/map_navigation_utils.dart';
void main() => runApp(const ExampleApp());
class ExampleApp extends StatefulWidget {
const ExampleApp({Key? key}) : super(key: key);
@override
State<ExampleApp> createState() => _ExampleAppState();
}
class _ExampleAppState extends State<ExampleApp> {
GoogleMapController? mapController;
Marker marker = const Marker(markerId: MarkerId("car"), position: LatLng(26.9124, 75.7873));
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text("Map Navigation Utils Example")),
body: GoogleMap(
initialCameraPosition: const CameraPosition(
target: LatLng(26.9124, 75.7873),
zoom: 15,
),
markers: {marker},
onMapCreated: (c) => mapController = c,
),
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.directions),
onPressed: () async {
LatLng from = marker.position;
LatLng to = const LatLng(26.9226, 75.7873);
MarkerAnimator.animateMarker(from: from, to: to).listen((position) {
setState(() {
marker = marker.copyWith(positionParam: position);
});
});
double distance = GeoUtils.distanceInMeters(
from.latitude, from.longitude, to.latitude, to.longitude);
double angle = GeoUtils.bearing(
from.latitude, from.longitude, to.latitude, to.longitude);
print("Distance: $distance meters");
print("Bearing: $angle°");
},
),
),
);
}
}