Maps toolkit - geo-measurements utils - area of polygon, distance between point, heading and offset between points (port of SphericalUtil, PolyUtil from `android-maps-utils`).
Package selection guidance compiled from public package information, community data, and project usage.
maps_toolkit is a Flutter/Dart package providing essential geospatial utilities for working with maps. It offers tools to calculate the area of polygons, compute distances between geographic points, and determine heading and offset between coordinates—mirroring functionality from the Android Maps Utils library. Designed for cross-platform use, it supports Android, iOS, Web, macOS, Windows, and Linux. The package simplifies complex geographic computations, making it ideal for location-based applications requiring precise measurements and spatial analysis.
Use cases
Calculating polygon areas on maps
Measuring distances between two coordinates
Determining directional heading between points
Computing coordinate offsets
Geospatial data visualization
Route planning and analysis
Key features
Polygon area calculation
Distance and bearing computation
Coordinate offset utilities
Cross-platform compatibility
Lightweight and easy to integrate
Port of Android Maps Utils
Suitable for
Map-based applications
Location-aware features
GIS-related projects
Navigation and routing tools
Real-time tracking systems
Spatial analytics
Considerations
Requires valid latitude/longitude inputs
No built-in map rendering
Depends on accurate geodetic calculations
Not suitable for large-scale terrain modeling
Best used with map widgets like google_maps_flutter
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
maps_toolkit
A library for area, distance, heading measurements (spherical_util.dart if port from android-maps-utils).
Getting Started
In your dart/flutter project add the dependency:
dependencies:...maps_toolkit:^3.0.0
A simple usage example:
import'package:maps_toolkit/maps_toolkit.dart';
main() {
val distanceBetweenPoints = SphericalUtil.computeDistanceBetween(
LatLng(51.5073509, -0.1277583),
LatLng(48.856614, 2.3522219)
);
final p1 = LatLng(45.153474463955796, 39.33852195739747);
final p2 = LatLng(45.153474463955796, 39.33972358703614);
final p3 = LatLng(45.15252112936569, 39.33972358703614);
final p4 = LatLng(45.1525022138355, 39.3385460972786);
val areaInSquareMeters = SphericalUtil.computeArea([p1, p2, p3, p4, p1]);
}
Usage with Google Maps package (specify a prefix for an import):
import'package:maps_toolkit/maps_toolkit.dart'as mp;
import'package:google_maps/google_maps.dart';
import'package:test/test.dart';
voidmain() {
final pointFromToolkit = mp.LatLng(90, 0);
final pointFromGoogleMap = LatLng(90, 0);
mp.SphericalUtil.computeAngleBetween(pointFromToolkit, pointFromToolkit);
}
List of functions
SphericalUtil.computeArea - calculate the area of a closed path on Earth.
SphericalUtil.computeDistanceBetween - calculate the distance between two points, in meters.
SphericalUtil.computeHeading - calculate the heading from one point to another point.
SphericalUtil.computeLength - calculate the length of the given path, in meters, on Earth.
SphericalUtil.computeOffset - calculate the point resulting from moving a distance from an origin in the specified heading (expressed in degrees clockwise from north).
SphericalUtil.computeOffsetOrigin - calculate the location of origin when provided with a point destination, meters travelled and original heading.
SphericalUtil.computeSignedArea - calculate the signed area of a closed path on Earth.
SphericalUtil.interpolate - calculate the point which lies the given fraction of the way between the origin and the destination.
PolygonUtil.containsLocation - computes whether the given point lies inside the specified polygon.
PolygonUtil.isLocationOnEdge - computes whether the given point lies on or near the edge of a polygon, within a specified tolerance in meters.
PolygonUtil.isLocationOnPath - computes whether the given point lies on or near a polyline, within a specified tolerance in meters.
PolygonUtil.locationIndexOnPath - computes whether (and where) a given point lies on or near a polyline, within a specified tolerance.
PolygonUtil.locationIndexOnEdgeOrPath - computes whether (and where) a given point lies on or near a polyline, within a specified tolerance.
PolygonUtil.simplify - simplifies the given poly (polyline or polygon) using the Douglas-Peucker decimation algorithm.
PolygonUtil.isClosedPolygon - returns true if the provided list of points is a closed polygon.
PolygonUtil.distanceToLine - computes the distance on the sphere between the point p and the line segment start to end.
PolygonUtil.decode - decodes an encoded path string into a sequence of LatLngs.
PolygonUtil.encode - encodes a sequence of LatLngs into an encoded path string.
Features and bugs
Please file feature requests and bugs at the issue tracker.