RUS  ENG 

Изменение масштаба и координат центра карты

Страницы: 1
RSS
Изменение масштаба и координат центра карты
 
Добрый день! Кодом выделяю группу объектов (Selection.AddElem), объекты могут находиться в разных частях карты и хотелось бы чтобы вся группа отразилась на экране (карта сменила масштаб и координаты центра)... Возможно ли это сделать стандартными методами? Спасибо!
 
Если используете MapCtrl, то http://www.politerm.com.ru/zulu5doc/zuluax/MapCtrl_DrawInSelectionExtents.htm
 
Спасибо, это то что нужно!!!
 
Добрый день, возник ещё один вопросик по маштабированию карты - есть ли возможность отключить изменение масштаба карты при помощи скрола мышки?
 
Нет. Можно только вообще отключить масштабированите: IMapView.ChangeScaleEnabled
 
Возможно ли в коде ограничить изменение масштаба карты (задать Min и Max значения)?
 
Сейчас явно ограничить нельзя. Можем добавить.
 
Если можно, то буду премного благодарен!
 
И если не трудно можно еще ограничить смещение карты, (для работы используется карта небольшого размера и пользователи, периодически, теряются, кнопочка "Вся карта" не удобна тем, что меняется масштаб) если, конечно, такая возможность уже не реализована...
 
1. Обработку вращения колеса мышки можно отключить MapDoc.EventEnable(eEventEnableMouseWheel, false)
2. Добавили методы и свойства IMapView.MaxScale, IMapView.MinScale, IMapView.SetCenterClipRectangle, IMapView.CancelCenterClipping

Напимер, чтобы не убегало далеко от краев карты:
MapCtrl1.Map.Views.Active.SetCenterClipRectangle (MapCtrl1.Map.GetBoundsRectangle)
 
Большое спасибо! Ограничение масштаба и смещения карты (в перделах размеров самой карты) работает отлично...
Не подскажите как можно ограничить перемещение по карте не размерами карты, а определенной(при помощи координат) областью...
Пробовал сделать так:
var
oZR: ZRectangle;
begin
oZR.SetRectangle(1642,-1916,-1253,2825);
oZm.Map.Views.Active.SetCenterClipRectangle(ZR);
end;
Координаты XYmin и XYmax брал как нижнюю правую и верхнюю левую точки соответственно... Но что то не работает...
 
Посмотри внимательно: http://www.politerm.com.ru/zulu5doc/zuluax/ZRectangle_SetRectangle.htm
Там SetRectangle(Xmin, Ymin, Xmax, Ymax)
У тебя 1642 > -1253
 
Перечитал, сделал: ZR.SetRectangle(-2014,-1785,2475,1556), да вот только эффекта нет, карта двигается без всяких ограничений....
 
Перед использованием объекта oZR, его нужно не только объявить, но сперва создать:

oZR:=CoZrectangle.Create();
А потом уже
oZR.SetRectangle(-2014,-1785,2475,1556)
 
Добавил строчку
oZR:=CoZrectangle.Create();
теперь карта просто не двигается...
 
Если числа 1642,-1916,-1253,2825 - это метры, то у нас все в сантиметрах. Нужно по два нолика приписывать.
 
УРА!!! Спасибо, просветили неуча....
 
Возможно ли разделить метод DrawInSelectionExtents на два метода изменение масштаба и изменение центра отображения, таким образом, чтобы в окно карты поместились все выделенные объекты указанного слоя?
 
метод DrawInSelectionExtents и так меняет масштаб и центр, чтобы "в окно карты поместились все выделенные объекты указанного слоя"
 
Это я знаю :) Просьба заключалась в том чтобы сделать два метода: один меняет только масштаб, а другой только центр...
 
Что касается центра, всегда можно взять GetBounsRectangle от Selection и установить центр в центре прямоугольника. А что касается масштаба, не очень ясно, чему он должен соответствовать.
 
Спасибо! При помоши "GetBounsRectangle от Selection" все получилось...
Страницы: 1