Делаю карту, на которой будет отображаться порядка 100 маркеров. При этом хочу, чтобы масштаб выбирался таким образом, чтобы было видно не менее 75% и не более 85% всех точек.
Делаю это следующим образом: вначале нахожу ограничивающий прямоугольник (brect), затем, если набирается более 85% точек, то brect уменьшается на 80%, иначе увеличивается на 110%. Вопрос сходимости алгоритма отдельный, сейчас его не рассматриваем. В результате работы алгоритма получается brect, удовлетворяющим указанным критериям.
Но если сделать map.setBounds(brect), то результат непредсказуем, поскольку aspect ratio у карты и у brect отличаются, и zoom у карты принимает только целые значения. И в результате могут показываться от 75% до 100% всех точек. Таким образом, для поиска оптимального brect я должен знать, каким будет brect если установить его карте. При этом вызовы map.setBounds(rect); rect = map.getBounds() делать нельзя, потому что а) карта ещё не инициализирована - для инициализации нужно знать центр и zoom, а я как раз их и вычисляю, и б) это медленно и вызовет подгрузку ненужных тайлов
Проблему решила бы функция util.bounds.getBoundsByCe
Что делать, как быть?