MapView
=================

.. currentmodule:: axioma.gui

.. class:: MapView

	Класс-окно просмотра карты

	Унаследован от: :class:`ScrollItemView`

		.. py:method:: MapView(map, parent=None)
		
			Конструктор

			:param map: Отображаемая карта
			:type map: :class:`~axioma.render.Map`
			:param parent: Родительский объект
			:type parent: :class:`~PyQt5.QtCore.QObject` или :any:`None`

			Конструктор

		.. py:method:: MapView(map, mapRect, parent=None)

			:param map: Отображаемая карта
			:type map: :class:`~axioma.render.Map`
			:param mapRect: Участок карты для показа
			:type mapRect: :class:`~axioma.core.dp.GeoRect`
			:param parent: Родительский объект
			:type parent: :class:`~PyQt5.QtCore.QObject` или :any:`None`

		.. py:method:: showAll()

			Показ всех данных исходя из существующего контента карты

		.. py:method:: map()

			Отображаемая карта

			:return: Карта
			:rtype: :class:`~axioma.render.Map`

		.. py:method:: viewport()

			Область видимости карты; возвращает копию

			:return: MapViewport
			:rtype: :class:`~axioma.render.MapViewport`

		.. py:method:: setViewport(viewport, preserveY=True, saveHistory=True)

			Смена области видимости

			:param viewport: Новое значение MapViewport
			:type viewport: :class:`~axioma.render.MapViewport`
			:param preserveY: Не менять цену градуса по широте для СК Широта/Долгота
			:type preserveY: :class:`bool`
			:param saveHistory: Сохранить в истории данную операцию
			:type saveHistory: :class:`bool`

		.. py:method:: rootLayerGroup()

			Корневая группа слоев карты.

			:return: Группа слоев
			:rtype: :class:`~axioma.render.RootLayerGroup`

		.. py:method:: editableLayer()

			Редактируемый слой

			:return: Слой или :any:`None` в случае, если редактируемого слоя нет
			:rtype: :class:`~axioma.render.Layer`
			
		.. py:method:: cosmeticLayer()

			Косметический слой

			:return: Слой или :any:`None` в случае, если косметический слой отсутствует
			:rtype: :class:`~axioma.render.TableLayer`

		.. py:method:: scaleWithCenter(zoomCoef, center)

			Масштабирование и смена центра карты

			:param  zoomCoef: Коэффициент масштабирования
			:type zoomCoef: :class:`float`
			:param center: Новый центр карты
			:type center: :class:`~PyQt5.QtCore.QPointF`

		.. py:method:: setViewportByRect(rect)

			Установка новой области видимости по прямоугольнику

			:param  rect: Прямоугольник
			:type rect: :class:`~PyQt5.QtCore.QRectF`

		.. py:method:: coordinateUnit()

			Единицы измерения координат в окне карты

			:return: Единицы измерения
			:rtype: :class:`~axioma.cs.LinearUnit`

		.. py:method:: setCoordinateUnit(coordinateUnit)

			Установка нового значения единиц измерения координат в окне карты

			:param coordinateUnit: Новое значение
			:type coordinateUnit: :class:`~axioma.cs.LinearUnit`

		.. py:method:: distanceUnit()

			Единицы измерения расстояний в окне карты

			:return: Единицы измерения
			:rtype: :class:`~axioma.cs.LinearUnit`

		.. py:method:: setDistanceUnit(distanceUnit)

			Установка нового значения единиц измерения расстояний в окне карты

			:param distanceUnit: Новое значение единиц измерений
			:type distanceUnit: :class:`~axioma.cs.LinearUnit`

		.. py:method:: areaUnit()

			Единицы измерения площадей в окне карты

			:return: Единицы измерения
			:rtype: :class:`~axioma.cs.LinearUnit`

		.. py:method:: setAreaUnit(areaUnit)

			Установка нового значения единиц измерения площадей в окне карты

			:param areaUnit: Новое значение единиц измерений
			:type areaUnit: :class:`~axioma.cs.LinearUnit`

		.. py:method:: mapUnits()

			Возвращает контейнер с установленными единицами измерения карты

			:rtype: :class:`~axioma.cs.MapUnits`

		.. py:method:: setMapUnits(mapUnits)

			Переустанавливает контейнер с единицами измерения для карты

			:param mapUnits: Переопределяемое значение контейнера
			:type mapUnits: :class:`~axioma.cs.MapUnits`

		.. py:method:: followSelection()

			Производится ли автофокусировка на карте при выделении соответствующего значения в списке. Т.е. выбранная область располагается в центре окна карты

			:return: True, если да. В противном случае False
			:rtype: bool

		.. py:method:: setFollowSelection(val)

			Установка необходимости проведения автофокусировки в окне карты

			:param val: Новое значение
			:type val: :class:`bool`

		.. py:method:: addLegend(group)

			Добавление новой легенды

			:param  group: Контейнер с легендой
			:type group: :class:`~axioma.render.LegendItemGroup`

		.. py:method:: legendManager()

			Менеджер легенд, привязанный к текущему окну

			:return: Менеджер легенд
			:rtype: :class:`~axioma.gui.LegendManager`

		.. py:method:: allTableLayers()

			Список всех векторных слоев

			:return: Список слоев
			:rtype: :class:`list` [:class:`~axioma.render.TableLayer`]

		.. py:method:: allTableLayersWithoutCosmetic()

			Список всех векторных слоев за исключением косметического

			:return: Список слоев
			:rtype: :class:`list` [:class:`~axioma.render.TableLayer`]

		.. py:method:: allLayersWithSelection()

			Список всех векторных слоев, имеющих на данный момент выделение

			:return: Список слоев
			:rtype: :class:`list` [:class:`~axioma.render.TableLayer`]

		.. py:method:: allLayersWithTarget()

			Список всех векторных слоев, имеющих на данный момент выделение

			:return: Список слоев
			:rtype: :class:`list` [:class:`~axioma.render.TableLayer`]

		.. py:method:: hasTarget()

			Имеется ли на карте изменяемый объект

			:return: True, если да. В противном случае False
			:rtype: :class:`bool`
			
		.. py:method:: hasSelection()

			Имеется ли на карте выбранные объекты

			:return: True, если да. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: hasVisibleSelection()

			Имеется ли на карте выбранные объекты, попадающие в текущий момент в область видимости

			:return: True, если да. В противном случае False
			:rtype: :class:`bool`

		.. py:method::hidden: name()	static QList<LinearUnit> validCoordinateUnits(const std::shared_ptr<CoordSystem> &cs);
		.. py:method::hidden: name()	QList<LinearUnit> validCoordinateUnits() const;
		.. py:method::hidden: name()	MapViewport scaleViewport(const MapViewport& vp, bool adjust = false);
		.. py:method::hidden: name()	int numStandardLayers() const;

		.. py:method:: selectionAsCursor()

			Возвращает выделенное в окне в виде итератора

			:return: Итератор
			:rtype: :class:`~axioma.core.dp.Cursor`

		.. py:method:: name()

			Наименование окна

			:return: Наименование
			:rtype: :class:`str`

		.. py:method:: setName(newName)

			Установка нового наименования для окна

			:param  newName: Новое наименование
			:type newName: :class:`str`

		.. py:method:: itemFromFeature(layer, feature)

			Получение элемента окна по записи таблицы слоя

			:param layer: Слой, где будет произведен поиск записи
			:type layer: :class:`~axioma.render.Layer`
			:param feature: Запись в таблице
			:type feature: :class:`~axioma.core.dp.Feature`
			:return: Результирующий элемент
			:rtype: :class:`~axioma.gui.Item`

		.. method:: mouseMoved(mousePosition)

			[signal] Сигнал испускается при изменении текущего положения курсора в окне
			
			:param  mousePosition: Положение курсора
			:type mousePosition: :class:`~PyQt5.QtCore.QPointF`
			
		.. method:: zoomChanged(zoom)

			[signal] Сигнал испускается после смены масштаба

			:param zoom: Масштаб
			:type zoom: :class:`float`

		.. method:: scaleChanged(scale)

			[signal] Сигнал испускается после смены ширины карты

			:param scale: Новая ширина
			:type scale: :class:`float`

		.. method:: sceneChanged(sceneRectWidth)

			[signal] Сигнал испускается после смены ширины карты

			:param sceneRectWidth: Новая ширина прямоугольника проекции карты
			:type sceneRectWidth: :class:`float`
			
		.. method:: editableLayerChanged()

			[signal] Сигнал испускается при смене редактируемого слоя

		.. method:: unitsChanged()

			[signal] Сигнал испускается при смене единиц измерения 

		.. method:: coordSystemChanged()

			[signal] Сигнал испускается при смене координатной системы карты

		.. method:: tableDataChanged()

			[signal] Сигнал испускается при изменении данных в таблицах, на базе которых созданы слои

		.. py:method:: showSelection()

			[slot] Если есть выборка, карта позиционируется на нее

		.. py:method:: setCoordSystem(new_cs)

			Задать координатную систему
			
			:param new_cs: Новая координатная система
			:type new_cs: :class:`axioma.cs.CoordSystem`
			
			.. seealso::
			
				:class:`axioma.gui.ChooseCoordSystemDialog`

		.. py:method:: setPreviousViewport()

			[slot] Если есть история показа, переход к предыдущему состоянию

		.. py:method:: clearCosmeticLayer()

			[slot] Очистить косметический слой
			
		
		
