Масштабирование по выбранному объекту географической схемы

Опубликовал Николай Зимин (deutsch2008) в раздел Программирование - Практика программирования

В процессе работы с географической схемой может возникнуть необходимость приблизить какой-либо фрагмент для более детального рассмотрения.

Например, есть подобная схема:

Но пользователю хочется посмотреть только Ярославскую область и при этом подробнее.

Сделать это можно, если установить свойству ПоддержкаМасштаба поля географической схемы значение ЗаданнаяОбласть перечисления РежимОтображенияГеографическойСхемы и задать границы необходимого ограничивающего прямоугольника через свойство географической схемы ОтображаемаяОбласть.

Здесь уместно вспомнить, что каждый топологический объект географической схемы обладает свойством ОграничивающийПрямоугольник. Ограничивающий прямоугольник хранит координаты прямоугольника, в который вписан топологический объект.

Воспользовавшись тем, что у элемента управления ПолеГеографическойСхемы есть событие Выбор, которое возникает при двойном щелчке на объекте схемы, можно написать следующий код:

// Процедура вызывается как реакция на событие Выбор ПоляГеографическойСхемы.
// Событие возникает при двойном щелчке на топологическом объекте географической схемы
// Параметры:
//  Элемент              - элемент управления, который послал событие;
//  ОбъектКарты          - топологический объект географической схемы, по которому сделали двойной щелчок;
//  Серия                - серия данных географической схемы, если щелчок был сделан в области графика;
//  СтандартнаяОбработка - булево, признак выполнения стандартной (системной)  обработки  события начала выбора 
//для данного элемента формы документа.
//
Процедура ПолеГеографическойСхемыВыбор(Элемент, ОбъектКарты, Серия, СтандартнаяОбработка)
	ОграничивающийПрямоугольник = ОбъектКарты.ОграничивающийПрямоугольник;
	ОтображаемаяОбласть = ЭлементыФормы.ПолеГеографическойСхемы.ОтображаемаяОбласть;
	// Установим у схемы новые границы ограничивающего прямоугольника
	ОтображаемаяОбласть.ДолготаВосточнойГраницы = ОграничивающийПрямоугольник.ДолготаВосточнойГраницы;
	ОтображаемаяОбласть.ДолготаЗападнойГраницы = ОграничивающийПрямоугольник.ДолготаЗападнойГраницы;
	ОтображаемаяОбласть.ШиротаСевернойГраницы = ОграничивающийПрямоугольник.ШиротаСевернойГраницы;
	ОтображаемаяОбласть.ШиротаЮжнойГраницы = ОграничивающийПрямоугольник.ШиротаЮжнойГраницы;
	// Установим новый режим масштабирования - удерживание заданной области
	Схема.ПоддержкаМасштаба = РежимОтображенияГеографическойСхемы.ЗаданнаяОбласть
 КонецПроцедуры 

В результате при щелчке по объекту географической схемы получится результат, подобный этому:

См. также

В этой теме еще нет сообщений.