MapReportItem
=================

.. currentmodule:: axioma.render

.. class:: MapReportItem

	Элемент отчета, основанный на созданной ранее карте. Т.е. перед созданием элемента отчета необходимо предварительно создать карту, на основе которой будет создан элемент отчета.

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

		.. py:method:: MapReportItem(map, viewPort, report)

			Конструктор

			:param map: Элемент типа карта, на основании которой создается элемент отчета. 
			:type map: :class:`~axioma.render.Map`
			:param viewPort: Задание MapViewport области видимости карты и ее размер в отчете. 
			:type viewPort: :class:`MapViewport`
			:param report: Отчет, к которому относится создаваемый элемент. 
			:type report: :class:`~axioma.render.Report`

		.. py:method:: scale()

			Текущее значение масштаба карты

			:return: Значение масштаба
			:rtype: :class:`float`

		.. py:method:: setScale(scale)

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

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

		.. py:method:: map()

			Элемент типа карта, на основании которой создается элемент отчета. 

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

		.. py:method:: rectMap()

			Ограничивающий прямоугольник карты

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

		.. py:method:: setCenter(pnt)

			Установка нового центра карты в координатах карты

			:param pnt: Новое значение центра
			:type pnt: :class:`~PyQt5.QtCore.QPointF`

		.. py:method:: coordSystem()

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

			:return: Координатная система
			:rtype: :class:`~axioma.cs.CoordSystem`

		.. py:method:: viewport()

			Установленное соотношение области карты и его размеров в отчете

			:return: Установленное значение MapViewport
			:rtype: :class:`MapViewport`

		.. py:method:: setViewport(vp)

			Установка нового значения MapViewport для элемента отчета

			:param vp: Новое значение
			:type vp: :class:`MapViewport`

		.. method:: viewportChanged(vp)

			[signal] Сигнал, возникающий при смене области видимости

			:param vp: Значение MapViewport
			:type vp: :class:`MapViewport`

Пример использования:

  .. code-block:: python
  
			# Создание элемента отчета типа карта. Берем первую из открытых
			# Так же возможно создать элемент отчета не на базе MapView, создав временную карту (см. renderer.py)
			def createMapItem(report):
			    print('Карта...')
			    if axioma.app.mainWindow.mapViewManager().mapViewCount():
			        try:
			            mapview =  axioma.app.mainWindow.mapViewManager().currentMapView() # Берем текущую открытую карту в системе
			            r_map = mapview.viewport().sceneRect()
			            w = 350;
			            r_item = QRectF(2, 150, w, w * r_map.height() / r_map.width())
			            viewport = MapViewport(r_item, r_map, mapview.viewport().coordSystem())

			            #находим слой
			            lay = mapview.map().rootLayerGroup().findChildByName("world")
			            if lay is not None:
			                props = lay.featureLayerProperties() #Свойства слоя
			                props.setLabelingAttributeName("Страна")   # устанавливаем выражение для метки
			                props.setShowLabels(True) # Показ меток
			                props.setCentroidsVisible(True) # Показ центроидов
			                # Сделаем так, чтобы метки не перекрывали друг друга
			                policy = props.labelPlacementPolicy()
			                policy.labelingType = LabelPlacementPolicy.DisallowOverlap
			                props.setLabelPlacementPolicy(policy)
			                lay.setProperties(props)

			            mapItem = MapReportItem(mapview.map(), viewport, report)
			            report.addItem(mapItem) # Добавляем в отчет
			            print('Масштабная линейка...')
			# Создание масштабной линейки
			            ws = 30
			            bar_rect = QRectF(r_item.right() - ws, r_item.bottom(), ws,15)
			            scaleBarReportItem = ScaleBarReportItem(mapview.map(), mapItem.viewport(), bar_rect, report)
			            report.addItem(scaleBarReportItem) # Добавляем в отчет
			        except Exception as ex:
			            print(ex)
