Актуализирайте маркерите на Openlayers 3 наведнъж на картата

Имам двадесет маркера за актуализиране на картата. Добавям маркерите и имам функция, наречена changeMarker(), която променя местоположението на маркера. Но тази функция се изпълнява двадесет пъти и така потребителският интерфейс се актуализира двадесет пъти. Мога ли да актуализирам потребителския интерфейс само веднъж с всичките двадесет маркера заедно?

Ето моят код:

function callChangeMarker()
{
     for(var i=0;i<20;i++)
     {
        //value of lat and long changes for all twenty markers
        changemarker(lat, long, markerColor, flag);
     }
}

function changemarker(lat, long, markerColor, flag) {

            var myFeature = vectorSource[flag].getFeatureById('greenMarkerFeature');

            myFeature.getGeometry().setCoordinates(ol.proj.transform([+long, +lat], 'EPSG:4326', 'EPSG:3857'));
}

Така че основно има двадесет такива маркера с различни географски ширини и дължини. Искам да актуализирам всичко наведнъж. Как да постигнете това?

Моля помогнете!!


person Akansha    schedule 11.09.2015    source източник


Отговори (1)


Вече правите всичките 20 модификации на функции без повторно изобразяване между тях.

OpenLayers не рендерира повторно в никакви методи за модифициране на данни. Точно като ol.Map#render, всичко, което се случва е, че ol3 знае, че ще е необходимо повторно изобразяване в следващия animationFrame.

person Alvin Lindstam    schedule 13.09.2015
comment
задаването на координатите за нова трансформация на проекцията не се изобразява повторно 20 пъти?? - person Akansha; 14.09.2015
comment
@Akansha Правилно. За да проверите, чуйте събитието maps postrender. - person Alvin Lindstam; 14.09.2015