map_controller 0.3.0 copy "map_controller: ^0.3.0" to clipboard
map_controller: ^0.3.0 copied to clipboard

outdated

A map controller for Flutter map. Manage markers, lines and polygons.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong/latlong.dart';
import 'package:map_controller/map_controller.dart';

class Place {
  Place(this.name, this.point);

  final String name;
  final LatLng point;
}

class _MapControllerPageState extends State<MapControllerPage> {
  MapController mapController;
  StatefulMapController statefulMapController;

  final List<Place> places = [
    Place("Notre-Dame", LatLng(48.853831, 2.348722)),
    Place("Montmartre", LatLng(48.886463, 2.341169)),
    Place("Champs-Elysées", LatLng(48.873932, 2.294821)),
    Place("Chinatown", LatLng(48.827393, 2.361897)),
    Place("Tour Eiffel", LatLng(48.85801, 2.294713))
  ];

  final _markersOnMap = <Place>[];
  bool ready = false;

  void addMarker(BuildContext context) {
    for (var place in places) {
      if (!_markersOnMap.contains(place)) {
        print("Adding marker ${place.name}");
        statefulMapController.addMarker(
            name: place.name,
            marker: Marker(
                point: place.point,
                builder: (BuildContext context) {
                  return const Icon(Icons.location_on);
                }));
        _markersOnMap.add(place);
        return;
      }
    }
  }

  @override
  void initState() {
    mapController = MapController();
    statefulMapController = StatefulMapController(mapController: mapController);
    statefulMapController.onReady.then((_) => setState(() => ready = true));
    statefulMapController.changeFeed.listen((change) => setState(() {}));
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: FlutterMap(
          mapController: mapController,
          options: MapOptions(
            center: LatLng(48.853831, 2.348722),
            zoom: 11.0,
          ),
          layers: [
            TileLayerOptions(
                urlTemplate:
                    "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
                subdomains: ['a', 'b', 'c']),
            MarkerLayerOptions(
              markers: statefulMapController.markers,
            ),
          ],
        ),
      ),
      floatingActionButton: ready
          ? FloatingActionButton(
              child: Icon(Icons.add),
              onPressed: () => addMarker(context),
            )
          : const Text(""),
    );
  }
}

class MapControllerPage extends StatefulWidget {
  @override
  _MapControllerPageState createState() => _MapControllerPageState();
}

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Map controller demo',
      home: MapControllerPage(),
    );
  }
}
26
likes
0
points
46
downloads

Publisher

unverified uploader

Weekly Downloads

A map controller for Flutter map. Manage markers, lines and polygons.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

cupertino_icons, flutter, flutter_map, latlong, pedantic, rxdart

More

Packages that depend on map_controller