Я работаю над проектом, в этом проекте мне нужно отображать маркеры на карте из базы данных. В базе данных у меня есть около 6000+ данных о клиентах, и я хочу отобразить там информацию на картах, используя там широту и долготу. Проблема состоит в том, что, когда есть запись только 5-10 клиентов, приложение не замедляется, но когда я отображаю тысячи маркеров на карте, приложение начинает отставать. Есть ли лучший способ решить эту проблему?
код для отображения маркеров на карте
_onMapCreated() async {
// print(customerInfo);
for (var item in ud.customerInfo) {
if (item['customer_latitude'] == "" && item['customer_longitude'] == "") {
continue;
} else {
final MarkerId markerId = MarkerId((markers.length + 1).toString());
LatLng markerPos = LatLng(double.parse(item['customer_latitude']),
double.parse(item['customer_longitude']));
final Marker marker = Marker(
infoWindow: InfoWindow(
title: item['customer_name'],
snippet: item['customer_desc'],
),
// onTap: () => _onMarkerTapped(markerId),
icon: BitmapDescriptor.defaultMarkerWithHue(
item['customer_status'] == 'red'
? BitmapDescriptor.hueRed
: item['customer_status'] == 'yellow'
? BitmapDescriptor.hueYellow
: BitmapDescriptor.hueGreen),
markerId: markerId,
consumeTapEvents: true,
position: markerPos,
onTap: () {
Navigator.push(
context,
MaterialPageRoute<Null>(
builder: (BuildContext context) {
return CustomerDetail(
item['customer_id'],
item['customer_name'],
item['customer_email'],
item['customer_desc'],
item['customer_phone'],
item['customer_status']);
},
fullscreenDialog: true,
));
});
_markers = null;
markers[markerId] = marker;
}
}
setState(() {});
}
еще одна точка, данные уже получены из базы данных и сохранены в списке, поэтому во время l oop он просто получает данные из списка и отображает их на картах Google.