Orientação gerada a partir de informações públicas. Apenas para referência.
map_controller é um pacote Flutter projetado para simplificar a gestão de elementos do mapa, como marcadores, linhas e polígonos. Ele fornece um controlador centralizado para lidar com interações, atualizações e mudanças de estado do conteúdo do mapa, melhorando a organização do código e o desempenho. Ideal para aplicações que exigem visualização dinâmica de mapas, integra-se perfeitamente aos widgets de mapa do Flutter. O pacote é mantido por 'here' e está disponível via pub.dev. Seu código-fonte é aberto no GitHub, permitindo transparência e contribuições da comunidade.
Casos de uso
Gerenciamento dinâmico de marcadores
Visualização em tempo real da rota
sobreposições poligonais interativas
Sincronização de dados do mapa
Componentes de interface do usuário baseados em localização
Principais recursos
Controle centralizado do estado do mapa
Suporte para marcadores, linhas e polígonos
Mecanismos eficientes de atualização
Integração fácil com mapas do Flutter
Open-source e ativamente mantido
Indicado para
Desenvolvedores construindo mapas interativos
Aplicações com rastreamento de localização em tempo real
Projetos que exigem sobreposição complexa de camadas de mapa
Equipes priorizando código limpo e sustentável
Aplicativos Flutter com dados geoespaciais
Considerações
Requer implementação compatível do widget de mapa
Personalização específica de plataforma limitada
Nenhuma renderização de mapa embutida (depende de widget de mapa externo)
Pode ser necessário dependências adicionais para recursos avançados
A documentação poderia ser mais detalhada
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Map controller
Stateful map controller for Flutter Map. Manage markers, lines and polygons.
import'dart:async';
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_MapPageStateextendsState<MapPage> {
MapController mapController;
StatefulMapController statefulMapController;
StreamSubscription<StatefulMapControllerStateChange> sub;
@overridevoidinitState() {
// intialize the controllers
mapController = MapController();
statefulMapController = StatefulMapController(mapController: mapController);
// wait for the controller to be ready before using it
statefulMapController.onReady.then((_) => print("The map controller is ready")));
/// [Important] listen to the changefeed to rebuild the map on changes:/// this will rebuild the map when for example addMarker or any method /// that mutates the map assets is called
sub = statefulMapController.changeFeed.listen((change) => setState(() {}));
super.initState();
}
@overrideWidgetbuild(BuildContext context) {
returnScaffold(
body: SafeArea(
child: Stack(children: <Widget>[
FlutterMap(
mapController: mapController,
options: MapOptions(center: LatLng(48.853831, 2.348722), zoom: 11.0),
layers: [
MarkerLayerOptions(markers: statefulMapController.markers),
PolylineLayerOptions(polylines: statefulMapController.lines),
PolygonLayerOptions(polygons: statefulMapController.polygons)
],
),
// ...
])),
);
}
@overridevoiddispose() {
sub.cancel();
super.dispose();
}
}
classMapPageextendsStatefulWidget{
@override_MapPageStatecreateState() => _MapPageState();
}