map_launcher 0.12.2

Flutter Android iOS

Map Launcher is a flutter plugin to find available maps installed on a device and launch them with a marker or show directions.

Map Launcher #

pub package

Map Launcher is a flutter plugin to find available maps installed on a device and launch them with a marker or show directions.

MarkerNavigation
MarkerNavigation

Currently supported maps:
Google Maps
Apple Maps (iOS only)
Baidu Maps
Amap (Gaode Maps)
Waze
Yandex Maps
Yandex Navigator
Citymapper
Maps.me
OsmAnd
2GIS

Get started #

Add dependency #

dependencies:
  map_launcher: ^0.12.2

For iOS add url schemes in Info.plist file #

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>comgooglemaps</string>
    <string>baidumap</string>
    <string>iosamap</string>
    <string>waze</string>
    <string>yandexmaps</string>
    <string>yandexnavi</string>
    <string>citymapper</string>
    <string>mapsme</string>
    <string>osmandmaps</string>
    <string>dgis</string>
</array>

Usage #

Get list of installed maps and launch first #

import 'package:map_launcher/map_launcher.dart';

final availableMaps = await MapLauncher.installedMaps;
print(availableMaps); // [AvailableMap { mapName: Google Maps, mapType: google }, ...]

await availableMaps.first.showMarker(
  coords: Coords(37.759392, -122.5107336),
  title: "Ocean Beach",
);

Check if map is installed and launch it #

import 'package:map_launcher/map_launcher.dart';

if (await MapLauncher.isMapAvailable(MapType.google)) {
  await MapLauncher.showMarker(
    mapType: MapType.google,
    coords: coords,
    title: title,
    description: description,
  );
}

API #

Show Marker #

optiontyperequireddefault
mapTypeMapTypeyes-
coordsCoords(lat, long)yes-
titleStringno''
descriptionStringno''
zoomIntno16
Maps
mapTypecoordstitledescriptionzoom
.googleiOS only
see Known Issues section below
.apple
.amapAndroid only
.baidu
.waze
.yandexMaps
.yandexNavi
.citymapper
does not support marker
shows directions instead
.mapswithme
.osmandiOS onlyAndroid only
.doubleGis
android does not support marker
shows directions instead

Show Directions #

optiontyperequireddefault
mapTypeMapTypeyes-
destinationCoords(lat, long)yes-
destinationTitleStringno'Destination'
originCoords(lat, long)noCurrent Location
originTitleStringno'Origin'
directionsModeDirectionsModeno.driving
waypointsList<Coords(lat, long)>nonull
Maps
mapTypedestinationdestinationTitleoriginoriginTitledirectionsModewaypoints
.google
.apple
.amap
.baidu
.wazealways uses current location
.yandexMaps
.yandexNavi
.citymapper
.mapswithmeonly shows marker
.osmandiOS onlyalways uses current location
.doubleGis

Example #

Using with bottom sheet #

import 'package:flutter/material.dart';
import 'package:map_launcher/map_launcher.dart';

void main() => runApp(MapLauncherDemo());

class MapLauncherDemo extends StatelessWidget {
  openMapsSheet(context) async {
    try {
      final coords = Coords(37.759392, -122.5107336);
      final title = "Ocean Beach";
      final availableMaps = await MapLauncher.installedMaps;

      showModalBottomSheet(
        context: context,
        builder: (BuildContext context) {
          return SafeArea(
            child: SingleChildScrollView(
              child: Container(
                child: Wrap(
                  children: <Widget>[
                    for (var map in availableMaps)
                      ListTile(
                        onTap: () => map.showMarker(
                          coords: coords,
                          title: title,
                        ),
                        title: Text(map.mapName),
                        leading: Image(
                          image: map.icon,
                          height: 30.0,
                          width: 30.0,
                        ),
                      ),
                  ],
                ),
              ),
            ),
          );
        },
      );
    } catch (e) {
      print(e);
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Map Launcher Demo'),
        ),
        body: Center(child: Builder(
          builder: (context) {
            return MaterialButton(
              onPressed: () => openMapsSheet(context),
              child: Text('Show Maps'),
            );
          },
        )),
      ),
    );
  }
}

Known issues #

  • Google Maps for Android have a bug that setting label for a marker doesn't work. See more on Google Issue Tracker

Contributing #

Pull requests are welcome.

108
likes
90
pub points
95%
popularity

Publisher

fluttered.dev

Map Launcher is a flutter plugin to find available maps installed on a device and launch them with a marker or show directions.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, flutter_svg

More

Packages that depend on map_launcher