В случае небольших размеров объекта необходимо пересчитать размер области в градусы (длина одного градуса меридиана = 111 километров, одного градуса параллели = 111 км * косинус широты) и воспользоваться методом map.setBounds()
Сам алгоритм я реализовал и он работает и для яндекса и для гугля.
Реализация похожа на то, что вы предложили.
Только я сначало забыл, что размер между соседними градусами долготы разный и зависит от широты. :)
И работает он на любых размерах. Но пока у меня самих объектов нету и я тестировал алгоритм на задаче синхронизации карт яндекса и гугля на одной странице. Т.е. изменяем масштаб карты яндекса, а на гугле масштаб подбирается наиболее близкий к яндексу. И наоборот. На всех масштабах алгоритм сработал правильно.
Я посчитал коофиценты для каждого масштаба = МетрНаПиксель
Для нужных размеров считаю аналогичный коофицент и беру тот масштаб, к которому полученный коофицент наиболее близок.
Вот это как раз проблематично. Сам код реализации занимает всего пару строк, но он "размазан" по коду другой функции, которая в свою очередь размазана по нескольким include-ам
Так что проще самому написать. Могу привести коофиценты МНП для всех масштабов яндекса и гугля.