Files
gcs-nf/opmap/mapwidget/geoFenceitem.cpp
T
2022-05-12 15:36:29 +08:00

149 lines
3.1 KiB
C++

#include "geoFenceitem.h"
#include <QDateTime>
#include <QGraphicsSceneMouseEvent>
namespace mapcontrol {
geoFenceitem::geoFenceitem(int group, bool inclusion, int version, internals::PointLatLng const & coord, QBrush color, MapGraphicItem *map, bool dashed, int width) :
QGraphicsPolygonItem(map), number(0) , coord(coord), m_brush(color), m_map(map), dashed(dashed), lineWidth(width)
{
this->setZValue(3);
connect(map, SIGNAL(childRefreshPosition()), this, SLOT(RefreshPos()));
m_version = version;
m_inclusion = inclusion;
//m_Vertex = count;//1
m_group = group; //2
m_latitude = coord.Lat();//5
m_longitide = coord.Lng();//6
RefreshPos();
}
void geoFenceitem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
Q_UNUSED(option);
Q_UNUSED(widget);
painter->setOpacity(0.4);
QPen myPen = painter->pen();
myPen.setWidth(lineWidth);
myPen.setColor(m_brush.color());
painter->setPen(myPen);
if (dashed) {
QVector<qreal> dashes;
dashes << 4 << 8;
myPen.setDashPattern(dashes);
}
if(m_inclusion)
{
painter->setBrush(m_brush);
}
else
{
painter->setBrush(Qt::NoBrush);
}
painter->drawPoint(0, 0);
painter->drawPolygon(polygon());
}
int geoFenceitem::type() const
{
return Type;
}
void geoFenceitem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
}
}
void geoFenceitem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
isDragging = true;
}
QGraphicsItem::mousePressEvent(event);
update();
}
void geoFenceitem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
isDragging = false;
}
QGraphicsItem::mouseReleaseEvent(event);
update();
}
void geoFenceitem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (isDragging) {
//ElevationTrig();
emit localPositionChanged(this->pos(), this);
}
QGraphicsItem::mouseMoveEvent(event);
update();
}
void geoFenceitem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event)
update();
}
void geoFenceitem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event)
update();
}
void geoFenceitem::setPosSLOT()
{
//qDebug() << "virtual set pos";
QPolygonF polygon;
for(internals::PointLatLng LatLng:points)
{
QPointF pf;
pf.setX(m_map->FromLatLngToLocal(LatLng).X() - m_map->FromLatLngToLocal(this->coord).X());
pf.setY(m_map->FromLatLngToLocal(LatLng).Y() - m_map->FromLatLngToLocal(this->coord).Y());
polygon.append(pf);
}
setPolygon(polygon);
setPos(m_map->FromLatLngToLocal(this->coord).X(), m_map->FromLatLngToLocal(this->coord).Y());
emit localPositionChanged(this->pos(),this);
update();
}
void geoFenceitem::RefreshPos()
{
setPosSLOT();
}
void geoFenceitem::setPoints(QList<internals::PointLatLng> p)
{
points = p;
m_Vertex = p.size();
RefreshPos();
}
}