Ivan: в этом ведь и смысл! Ну и не в каждом, а только там, где это требуется. Разницв между тем, что вы запишите даннвй в некоторый скоуп или в какую-то фабрику по сути нет. Просто вместо обращения к скоупу вы будете вызывать метод фабрики. Чем для вас отличается инжект рутскоупа от инжекта вашей фабрики - не очень понятно. Вы же понимаете, что запрос нужно выполнить один раз в run модуле, и сохранить полученный результат внутри фабрики. В кажом контроллере останется только вызвать getter для этих данных
Да, вы правы насчет того что требуются только координаты. А какова цель теста? Может действительно стоит просто сдвинуть метку задав ей другие координаты? Так явно сработает.
Посмотрите внимательно на раздел пример. Вам нужно 1. создать коллекцию. 2. добавить туда ваши регионы. После этого, с помощью метода each(описан ближе к концу статьи) вам будут доступны ваши регионы.
Если вы ходите использовать стандартную коллекцию - то в методе each проверяйте, что данный объект регион. Но лучше всё таки воспользоваться тем методом, что я описал выше.
Я так понимаю, вам нужно АВЛ-дерево. Алгоритмов довольно много и ничего сложного в них нет. На английской wiki довольно подробно описан алгоритм построения такого дерева (https://en.wikipedia.org/wiki/AVL_tree).
Поставьте принт значения scrollTop в консоль. Когда вы двигаете элементы через "top" скролл как бы остается на одном месте. Как вариант - не привязываться к значению скролла и делать так: при событии скролла, если скролл был вниз - показываем следующий фрейм. Если вверх - предыдущий. Текущий фрейм и их количество храним в некоторой функции.