google_maps_utils 3.0.0 copy "google_maps_utils: ^3.0.0" to clipboard
google_maps_utils: ^3.0.0 copied to clipboard

SphericalUtils, MathUtils and PolyUtils ported from Google's android-maps-utils: distances, headings, bounds, polyline encode/decode and Douglas-Peucker simplification.

An Android Google Maps Utils original java project port for Flutter #

A Flutter/Dart project based on Android Google Maps Utils converted/ported to Dart/Flutter There are many packages that features Google Maps Utils, but none has the 3 main classes from the sources

Funding #

This package is proudly sponsored by bus2.me.

Status: 3 of 78 classes converted #

This is a project for converting all of the tools from Android Google Maps Utils partially. Initial commits from the 3 main Classes, MathUtils.java, PolyUtils.java and SphericalUtils.java The same rules for calculating bounds, distance between two Point points and other polyline features are the same as used on Android native Java/Kotlin logic. All of the methods of current classes available are ported You can request classes for me to port as an issue, the classes ported are what most people uses

Main project: https://github.com/googlemaps/android-maps-utils Main project questions: https://stackoverflow.com/questions/tagged/android-maps-utils Fluttert community request: https://github.com/flutter/flutter/issues/24689

Example *.dart #

    import 'package:google_maps_utils/google_maps_utils.dart';

    void main() {
        Point<double> from = Point(0.0, 0.0);
        Point<double> to = Point(10.0, 5.0);
        Point<double> randomPoint = Point(-23.54545, -23.898098);

        double distance = SphericalUtils.computeDistanceBetween(from, to);
        print('Distance: $distance meters');

        double heading = SphericalUtils.computeHeading(from, to);
        print('Heading: $heading degrees');

        double angle = SphericalUtils.computeAngleBetween(from, to);
        print('Angle: $angle degrees');

        double distanceToAB = PolyUtils.distanceToLine(randomPoint, from, to);
        print('Distance to Line: $distanceToAB meters');

        /// Distance: 1241932.5985192063
        /// Heading: 26.302486345342523
        /// Angle: 0.19493500057547358
        /// Distance to Line: 3675538.019968191

        /// See grid path on: https://developers.google.com/maps/documentation/utilities/polylinealgorithm

        List<Point<double>> path = PolyUtils.decode(
            'wjiaFz`hgQs}GmmBok@}vX|cOzKvvT`uNutJz|UgqAglAjr@ijBz]opA|Vor@}ViqEokCaiGu|@byAkjAvrMgjDj_A??ey@abD');

        print('path size length: ${path.length}');

        List<Point<double>> simplifiedPath = PolyUtils.simplify(path, 5000);
        String simplifiedPathEncoded = PolyUtils.encode(simplifiedPath);

        print('simplified path: $simplifiedPathEncoded');
        print('path size simplified length: ${simplifiedPath.length}');


        /// Example by: https://github.com/nicolascav
        Point<double> point = Point(-31.623060136389135, -60.68669021129609);

        /// Triangle
        List<Point<double>> polygon = [
            Point(-31.624115, -60.688734),
            Point(-31.624115, -60.684657),
            Point(-31.621594, -60.686717),
            Point(-31.624115, -60.688734),
        ];

        bool contains = PolyUtils.containsLocationPoly(point, polygon);
        print('point is inside polygon?: $contains');

        /// And Many more
    }

Result #

  • Distance: 1241932.5985192063 meters

  • Heading: 26.302486345342523 degrees

  • Angle: 0.19493500057547358 degrees

  • Distance to Line: 3675538.019968191 meters

  • path size length: 17

  • simplified path: wjiaFz`hgQcjIke\t{d@|aOutJz|UokC}xWomJdjM

  • path size simplified length: 6

  • point is inside polygon?: true

62
likes
160
points
256
downloads

Documentation

API reference

Publisher

verified publisheradriankohls.app

Weekly Downloads

SphericalUtils, MathUtils and PolyUtils ported from Google's android-maps-utils: distances, headings, bounds, polyline encode/decode and Douglas-Peucker simplification.

Homepage
Repository (GitHub)
View/report issues

Funding

Consider supporting this project:

bus2.me

License

Apache-2.0 (license)

More

Packages that depend on google_maps_utils