MapViewport
=================

.. currentmodule:: axioma.render

.. class:: MapViewport

	Реализация интерфейса :class:`ViewportInterface` для карты.

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

		.. py:method:: MapViewport()

		Конструктор с пустыми значениями

		.. py:method:: MapViewport(deviceRect, sceneRect, cs)

			Конструктор с заданием параметров преобразования

			:param deviceRect: Область устройства рисования.
			:type deviceRect: :class:`~PyQt5.QtCore.QRectF`
			:param sceneRect: Область карты в координатах cs.
			:type sceneRect: :class:`~PyQt5.QtCore.QRectF`
			:param cs: Область карты в координатах cs.
			:type cs: :class:`~axioma.cs.CoordSystem`

		.. py:method:: MapViewport(deviceRect, georect)

			Конструктор с заданием параметров преобразования

			:param deviceRect: Область устройства рисования.
			:type deviceRect: :class:`~PyQt5.QtCore.QRectF`
			:param georect: Область карты в координатах cs и сама КС.
			:type georect: :class:`~axioma.core.dp.GeoRect`

		.. py:method:: zoom(unit)

			Ширина отображаемой области сцены в переданных единицах измерения расстояний текущей координатной системы

			:param unit: Единица измерения, в которой нам необходимо получить выходное значение.
			:type unit: :class:`~axioma.cs.LinearUnit`
			:return: Значение ширины
			:rtype: :class:`float`

		.. py:method:: setZoom(zoom)

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

			:param zoom: Новое значение ширины.
			:type zoom: :class:`float`

		.. py:method:: setZoom(zoom, unit)

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

			:param zoom: Новое значение ширины.
			:type zoom: :class:`float`
			:param unit: Единицы измерения, в который задается параметр.
			:type unit: :class:`~axioma.cs.LinearUnit`

		.. py:method:: scale(dpi)

			Вычисление масштаба исходя из значения переданного dpi контекста

			:param dpi: Количество точек на дюйм анализируемого контекста
			:type dpi: :class:`int`
			:return: Рассчитанное значение
			:rtype: :class:`float`

		.. py:method:: pseudoZoom()

			В отличие от честного масштаба эта функция зависит не от расстояния от левого до правого края карты, а от разности координат левого и правого края.

			:return: Рассчитанное значение
			:rtype: :class:`float`

		.. py:method:: pseudoScale(dpi)

			Расчет zoom, аналогично с pseudoZoom

			:param dpi: Количество точек на дюйм анализируемого контекста Context
			:type dpi: :class:`int`
			:return: Рассчитанное значение
			:rtype: :class:`float`

		.. py:method:: coordSystem()

			Текущая координатная система.

			:return: Ссылка на КС
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: setCoordSystem(cs)

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

			:param cs: Новое значение КС. Текущий rect карты при этом пересчитывается в новое значение
			:type cs: :class:`~axioma.cs.CoordSystem`

		.. py:method:: geoRect()

			Текущая координатная система вкупе с прямоугольником карты.

			:return: Ссылка на значение
			:rtype: :class:`~axioma.core.dp.GeoRect`

		.. py:method:: coeffYTransform(y)

			В случае, если текущая КС является КС типа Широта/Долгота, то при построении проекции на карте необходимо учитывать изменение цены градуса по широте.

			:param y: Рассматриваемая широта
			:type y: :class:`float`
			:return: Коэффициент изменения цены градуса по широте
			:rtype: :class:`float`

		.. py:method:: isLatLong()

			Проверка, является ли текущая КС типом Широта/Долгота

			:param y: Рассматриваемая широта
			:type y: :class:`float`
			:return: True, если да. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: setUsingPseudoZoom(val)

			Устанавливает режим, при котором метод zoom возвращает то же значение, что и метод pseudoZoom.
			Этот режим влияет на определение видимости слоев и подписей на карте и предназначен для использования при
			программной отрисовке карты с помощью :class:`axioma.render.ConcurrentMapRenderer`,
			чтобы избежать изменения видимости слоев при сдвиге области карты.

			:param val: Значение активности режима
			:type val: :class:`bool`
