Такое ощущение, что вы делаете преждевременную оптимизацию (пытаясь нарисовать все в одной ломаной линии) или наивно думаете о своей структуре данных (предполагая, что сегменты всегда коррелируют).Вы столкнетесь с проблемами, как только два сегмента не будут относительными, или как только два соответствующих сегмента будут иметь разные атрибуты, например, разные Traffic_Flow
.
Таким образом, канонический подход для минимально жизнеспособной программы будет состоять в том, чтобы нарисовать одинL.Polyline
за пару точек:
display_links.forEach(function (item, index) {
var origin = new L.LatLng(item.Lat1, item.Lng1);
var dest = new L.LatLng(item.Lat2, item.Lng2);
L.polyline([origin, dest]).addTo(map);
});
При желании можно использовать какой-либо другой атрибут из каждой строки для управления стилем L.Polyline
через его параметры , например:
display_links.forEach(function (item, index) {
var origin = new L.LatLng(item.Lat1, item.Lng1);
var dest = new L.LatLng(item.Lat2, item.Lng2);
var color:
if (item.TotalFlow > 100) {
color = 'red';
} else {
color = 'green';
}
L.polyline([origin, dest], { color: color }).addTo(map);
});
Или более короткая форма, такая как
L.polyline([origin, dest], { color: item.TotalFlow > 100 ? 'red' : 'green' }).addTo(map);
. Я бы рекомендовал вам , а не стремиться к эффективной обработке данных.С одной стороны, вы имеете дело только с 18 сегментами - с другой стороны, это потребует наличия данных в форме graph , а затем выполнит сжатие ребер на узлах, которые имеют только двасегменты, которые имеют все свои атрибуты.Вместо этого попросите исходные данные в формате, более подходящем для задачи, например, GeoJSON.