I tried to add flutter_map_animations, but with that plugin my app has latency with loading tiles. With default MapController everything is okay. Where i can have a problem?
class Variables {
static MapController mapC = MapController();
static final AnimatedMapController _animatedMapController =
AnimatedMapController(vsync: map.Map());
static AnimatedMapController get animatedMapController =>
_animatedMapController;
static LatLng initialPosition =
LatLng(49.062039830184474, 16.531229094389655);
static double initialZoom = 4.0;
static double zoomForAdding = 16.0;
}
void moveMap(double latitude, double longitude) {
LatLng coordinates = LatLng(latitude, longitude);
//Variables.mapC.move(coordinates, Variables.zoomForAdding);
Variables.animatedMapController.animateTo(dest: coordinates, zoom: Variables.zoomForAdding);
}
class MapLayer extends ConsumerStatefulWidget {
@override
Map createState() => Map();
}
class Map extends ConsumerState<MapLayer> with TickerProviderStateMixin {
@override
Ticker createTicker(TickerCallback onTick) {
return Ticker(onTick, debugLabel: 'vsync');
}
@override
Widget build(BuildContext context) {
final markersOnMapLocal = ref.watch(markersOnMap);
final List<LatLng> polylineCoordinatesLocal =
ref.watch(polylineCoordinates);
return map.FlutterMap(
mapController: Variables.animatedMapController.mapController,
options: map.MapOptions(
initialCenter: Variables.initialPosition,
maxZoom: 18.3,
initialZoom: Variables.initialZoom,
onTap: (tapPosition, point) {
if (ref.watch(addingCustomMarker)) {
int idMarker = UniqueKey().hashCode;
ref.read(customMarkers.notifier).add(
Marker(
key: ValueKey<int>(idMarker),
width: 120.0,
height: 120.0,
point: point,
builder: (ctx) => Icon(Icons.location_on),
),
);
ref.read(markersOnMap.notifier).add(
MarkerData(
id: ValueKey<int>(idMarker),
isCustomMarker: true,
latitude: point.latitude,
longitude: point.longitude,
color: Options.customMarkerColor,
),
);
ref.read(addingCustomMarker.notifier).state = false;
}
},
),
children: [
map.TileLayer(
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
userAgentPackageName: 'dev',
errorTileCallback: (tile, error, stackTrace) {
print(error);
print(stackTrace);
},
tileProvider: FMTC.instance('mapStore').getTileProvider(),
),
map.MarkerLayer(
markers: [
for (final marker in markersOnMapLocal)
map.Marker(
point: LatLng(marker.latitude!, marker.longitude!),
child: Icon(Icons.location_on, color: marker.color, size: 40.0),
),
],
),
map.PolylineLayer(
polylines: [
map.Polyline(
points: polylineCoordinatesLocal,
color: Colors.blue,
strokeWidth: 5,
),
],
)
],
);
}
}