Клуб API Карт

Настройка ползунка масштаба (Zoom'а)

Пост в архиве.
neon86-spb
28 февраля 2009, 23:57
Как ограничить макс. и мин. увеличение на карте? От 5 до 9 например?
И еще интересно:
map.addControl(new YMaps.Zoom({noTips:true}))
noTips:true убивает всплывающие подсказки напрочь, а можно ли частично скрыть всплывающие подсказки рядом со шкалой масштаба? или для этого придется делать свой элемент управления?
8 комментариев
{minZoom:5, maxZoom:9}
webliveby,
благодарю, помогло =] ========================== 1. необходимо удалить стандартные типы карты; 2. задать их заново с требуемыми параметрами ({minZoom:5, maxZoom:9}); 3. присвоить один из новых типов карте при инициализации. ========================== Получилось у меня только так, может есть более красивый способ? =)
А по ходу дела нельзя. Если рыть мануал здесь, то заметить, что есть методы на получение минимального и максимального масштаба, а вот задать можно только через конструктор.
Частично показать подсказки нельзя, а зачем тебе это? :)
Просто по смыслу карты такие подсказки как "мир, страна" не нужны =) а вопрос задал т.к. пытаюсь понять насколько гибга вся система. Люблю мелочи =] Кстате при установке огреничений Zoom'a лишние подсказки исчезают - этого вполне достаточно =) Конечный код, если кому пригодится...
var typeControl = new YMaps.TypeControl(); // удаляем переключатели MapType typeControl.removeType(YMaps.MapType.MAP); typeControl.removeType(YMaps.MapType.SATELLITE); typeControl.removeType(YMaps.MapType.HYBRID); //задаем новые типы для стандартных MAP и HYBRID var myMap = new YMaps.MapType(YMaps.MapType.MAP.getLayers(), ' Карта ', {minZoom:9, maxZoom:17}); var myHyb = new YMaps.MapType(YMaps.MapType.HYBRID.getLayers(), ' Спутник ', {minZoom:9, maxZoom:17}); // добавляем новые переключатели для MAP и HYBRID typeControl.addType(myMap); typeControl.addType(myHyb); // присваеваем тип по умолчанию MAP map.setType(myMap); // еще + map.addControl(.......)
Можно даже проще. Конструктор YMaps.TypeControl принимает параметром массив типов карты. //задаем новые типы для стандартных MAP и HYBRID var myMap = new YMaps.MapType(YMaps.MapType.MAP.getLayers(), ' Карта ', {minZoom:9, maxZoom:17}); var myHyb = new YMaps.MapType(YMaps.MapType.HYBRID.getLayers(), ' Спутник ', {minZoom:9, maxZoom:17}); //создаем переключатель только с нужными типами var typeControl = new YMaps.TypeControl([myMap, myHub]); // присваеваем тип по умолчанию MAP map.setType(myMap);
У меня почему то не получается ограничить масштабирование ((.
Где я ошибся?
var map, geoResult;
window.onload = function ()
{
map = new YMaps.Map(document.getElementById("YMapsID"));
var typeControl = new YMaps.TypeControl();
typeControl.removeType(YMaps.MapType.MAP);
typeControl.removeType(YMaps.MapType.SATELLITE);
typeControl.removeType(YMaps.MapType.HYBRID);
var myMap = new YMaps.MapType(YMaps.MapType.MAP.getLayers(), 'Карта', {minZoom:6, maxZoom:6});
var mySat = new YMaps.MapType(YMaps.MapType.SATELLITE.getLayers(), 'Спутник', {minZoom:6, maxZoom:6});
var myHyb = new YMaps.MapType(YMaps.MapType.HYBRID.getLayers(), 'Гибрид', {minZoom:6, maxZoom:6});
typeControl.addType(myMap);
typeControl.addType(mySat);
typeControl.addType(myHyb);
map.setType(myMap);
map.addControl(typeControl);
map.addControl(new YMaps.ScaleLine());
map.addControl(new YMaps.Zoom());
map.addControl(new YMaps.ToolBar());
map.addControl(new YMaps.SearchControl());
var point = new YMaps.GeoPoint(56.14,57.91);
var point2 = new YMaps.GeoPoint(56.13,57.95);
map.setCenter(point2,6);
var ol = new YMaps.YMapsML('http://www.inform48.ru/tmp/test.xml');
map.addOverlay(ol);
map.enableScrollZoom();
YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {
var myHtml = ""+mEvent.getGeoPoint()+", масштаб " + map.getZoom();
map.openBalloon(mEvent.getGeoPoint(), myHtml);
});
}
Это ошибка в API. Будем исправлять. Спасибо.