सार्वजनिक जानकारी से बना चयन मार्गदर्शन। केवल संदर्भ हेतु।
map_controller एक Flutter पैकेज है जिसका उद्देश्य मार्कर, लाइन और बहुभुज जैसे मानचित्र तत्वों के प्रबंधन को सरल बनाना है। यह मानचित्र सामग्री के इंटरैक्शन, अपडेट और राज्य परिवर्तन को हैंडल करने के लिए एक केंद्रीय नियंत्रक प्रदान करता है, जिससे कोड की संगठन और प्रदर्शन में सुधार होता है। डायनामिक मानचित्र विज़ुअलाइज़ेशन की आवश्यकता वाले एप्लिकेशन के लिए आदर्श है, और यह Flutter के मानचित्र विजेट्स के साथ बिल्कुल एकीकृत है। पैकेज 'here' द्वारा बनाए रखा जाता है और pub.dev के माध्यम से उपलब्ध है। इसका स्रोत कोड GitHub पर खुला है, जिससे पारदर्शिता और समुदाय योगदान संभव होता है।
उपयोग
डायनामिक मार्कर प्रबंधन
रियल-टाइम रूट विज़ुअलाइज़ेशन
इंटरैक्टिव बहुभुज ओवरले
मानचित्र डेटा सिंक्रनाइज़ेशन
स्थान-आधारित यूआई घटक
मुख्य विशेषताएँ
केंद्रीकृत मानचित्र अवस्था नियंत्रण
चिन्हों, रेखाओं और बहुभुज के लिए समर्थन
कुशल अद्यतन तंत्र
Flutter मानचित्र के साथ आसान एकीकरण
ओपन-सोर्स और सक्रिय रूप से बनाए रखा जा रहा है
इनके लिए उपयुक्त
इंटरैक्टिव मानचित्र बना रहे डेवलपर्स
वास्तविक समय स्थान ट्रैकिंग वाले एप्लिकेशन
जटिल मानचित्र परतों की आवश्यकता वाले प्रोजेक्ट
साफ, बनाए रखने योग्य कोड प्राथमिकता देने वाली टीमें
जियोस्पेशियल डेटा के साथ Flutter ऐप्स
विचार योग्य बातें
संगत मानचित्र विंडो के लिए आवश्यक
सीमित प्लेटफॉर्म-विशिष्ट कस्टमाइज़ेशन
निर्मित मानचित्र रेंडरिंग नहीं (बाहरी मानचित्र विजेट पर निर्भर है)
उन्नत विशेषताओं के लिए अतिरिक्त निर्भरताएँ आवश्यक हो सकती हैं
दस्तावेज़ में अधिक विस्तार से शामिल करने की आवश्यकता है
मूल README
संबंधित सोर्स रिपॉज़िटरी के मूल README का स्नैपशॉट। नवीनतम सामग्री के लिए रिपॉज़िटरी देखें।
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();
}