Skip to content

Marcus-Software/google_maps_utils

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Status: 3 of 78 classes converted

How it works

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

Feature links for reasearch

Main project: https://github.com/googlemaps/android-maps-utils

Main project questions: https://stackoverflow.com/questions/tagged/android-maps-utils

Fluttert community request: flutter/flutter#24689

Example *.dart

import 'package:google_maps_utils/google_maps_utils.dart';

void main() {
    Point from = Point(0.0, 0.0);
    Point to = Point(10.0, 5.0);
    Point 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.6430813475
    /// Heading: 26.302486345342523
    /// Angle: 0.19493500057547358
    /// Distance to Line: 3675538.1518512294

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

    List<Point> 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> 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 point = Point(-31.623060136389135, -60.68669021129609);

    /// Triangle
    List<Point> 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.6430813475 meters
Heading: 26.302486345342523 degrees
Angle: 0.19493500057547358 degrees
Distance to Line: 3675538.1518512294 meters
path size length: 17
simplified path: wjiaFz`hgQcjIke\t{d@|aOutJz|UokC}xWomJdjM
path size simplified length: 6
point is inside polygon?: true

About

google_maps_utils dart package for flutter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 100.0%