Клуб API Карт

adjustZoomOnTypeChange работает при народной карте?

iytin-ne
22 сентября 2013, 21:11

Здравствуйте. у меня есть проект в конструкторе карты указываю

 

myMap = new ymaps.Map('karta', {

        center: [55.76, 37.64], // Москва

        zoom: 13,

        behaviors: ["scrollZoom", "default"]

    }, {

        maxAnimationZoomDifference: 10,

        adjustZoomOnTypeChange: true//переключаться на возможный зум

});

 

 

так вроде все работает, но когда перехожу на режим  народная+спутник стают доступними и те маштабы на которых уже ничего не отображается. подскажите как сделать так, чтобы это исправить.

6 комментариев
Подписаться на комментарии к посту
Всеволод Шмыров
25 сентября 2013, 18:38
Добрый вечер! Прости за поздний ответ. Не совсем понял вопроса. У вас при инициализации на Москве с зумом 13 нет тайлов для народная+спутник. Или вы меняете масштаб на другой ? Или используется другое положение?

давай на примере Якутска, просто там проще не найти тайлы) 

как я понимаю adjustZoomOnTypeChange: true настраивает карту так чтобы пользователю не показывались зумы для которых нет тайлов (не такая детализация как например для москвы).

и вот у меня проблемма я строю полигон возле якутска с типом карты "схема" кликаю до максимально возможного зума - все норм, все тайлы доступны, и я перехожу на "народная+спутник" на которой еще пару зумов стает доступно точней среди них есть как отрисованная местность, так и те на которых пишеться что-то типа "извините но для этой местности нет такой детализации". 

А теперь вопрос)) : что нужно сделать чтобы вот таких сообщений на карте я не видел. 

Всеволод Шмыров
26 сентября 2013, 10:10
Опция проверяет наличия тайлов только при смене типа карты по текущему центру карты. На карте есть области с меньше детализацией, на которые можно попасть из областей с большей. Получить минимальный доступный масштаб для области нельзя.
Можно настроить опции minZoom|maxZoom - жесткие ограничения масштаба. (по умолчанию они равно 0 и 23. хотя доступные уровни масштаба обычно меньше).

да, как по мне жестко ограничивать не вариант, тогда наверное проще убрать эти "проблемные" типы карты. 

А что если переопределить setZoom и при каждом изменении зума искать максимальный зум для центра видимой области, и менять динамически maxZoom?

Всеволод Шмыров
26 сентября 2013, 11:24
Плохая идея, так как зум можно не только через setZoom менять. А еще через setGlobalPixelCenter, setBounds и другие методы. Поиск максимального зума асинхронная операция - будет множество обращений к серверу. Да и будет задержка - пока будет получен ответ от сервера карта на будет на предыдущем зуме. Можно что-то такое делать по событию "actionend", но не по каждому.

ок, понял. Значит пока оставлю все как есть.