Клуб API Карт

максимальный зум для конкретного местоположения

kingerus
22 января 2009, 20:45

Вот бывает такая ситуация когда у меня выходит "Для этого участка местности нет данных".

Я делаю границы с помощью YMaps.setBounds(bounds) (чтобы уместились все точки), затем добавляю точки.

Вопрос: а как мне автоматически определить максимальный зум, чтобы пользователю не приходилось его уменьшать, когда он видит серую область?

11 комментариев
Подписаться на комментарии к посту
В API на настоящий момент нет инструментов для определения максимально зума для заданного участка местности. Мы учтем Ваши пожелания. Следите за новостями в клубе. Масштаб Вам придется выставлять вручную. Если Вы приведете ссылку на страницу, то я постараюсь помочь найти решение.
Ну например вот: http://www.premierlist.ru/PropertyDetails.aspx?id=55747 По умолчанию ставится желаемый уровень, но хочется чтобы автоматически уменьшался зум, если желаемого нет.
Вам нужно вручную отслеживать для каких городов есть подробная карта, а для каких - нет. Составьте список и исходя из него выбирайте масштаб. Вам не подойдет такое временное решение?
Ладно подумаю, может пока фиксированный установлю, который всегда доступен. А когда примерно будет доступна вышеизложенная функциональность?
К сожалению точных сроков не могу сказать. Как выпустим новую версию - сделаем обязательно анонс в клубе.
А тогда вопрос - как правильно выставить зум/границы по результатам геокодера?
Для этого нужно использовать методы getBounds() и setBounds(). Взгляните на пример геокодирования, вот так в нем происходит задания центра и масштаба карты: map.setBounds(geoResult.getBounds());
Нет ли еще новостей по поводу этого вопроса?  (максимальный зум для конкретного местоположения)
Еще схематически можно как-то так:

setTimeout(function() {
  if($("#map .YMaps-tile-container img[src$='404.gif']").length > 0) {
    this.map.setZoom(this.map.getZoom() - 1);
  }
}, 3000);

- проверять нет ли среди картинок карты картинок с "Для этого участка местности нет данных" - 404.gif. И если они есть - изменять масштаб.

Я правда пока не нашел событие загрузки всех картинок карты, потому поставил по setTimeout.
Это решение не подходит, потому что через 3 секунды не факт, что подгрузятся все тайлы (если, например, соединение медленное). События, когда загрузились все тайлы, в API нет.