Just throwing an idea, maybe you could convert the mouse click or hover to 
coordinate on the Map::toCoordinate() and interpolate the coordinate to see 
with parameter to the line vector and then find the distance to that line 
parameter point or min/max point. This is not super fast but could be quick 
enough. Maybe doing the inverted converting the coordinate to point would make 
the computation easier.

http://mathworld.wolfram.com/Point-LineDistance2-Dimensional.html


-----Original Message-----
From: Interest <interest-boun...@qt-project.org> On Behalf Of maitai
Sent: March 7, 2019 12:33 PM
To: Interest@qt-project.org
Subject: [Interest] QtLocation MapPolyLine and MouseArea

Hi,

I need to trigger various actions whenever a MapPolyLine is hovered or pressed, 
such as displaying a tooltip, a menu, etc.

I have put a MouseArea on it with anchors.fills: parent, but the problem is 
that the mouse area does not represent the line, but the polygon made by the 
line. For instance if you have a L shape, entered event and so on is triggered 
when you enter the bounding rectangle of the line, not when you hover over the 
line itself.

On a QGraphicsScene we had the shape() protected method for that kinds of case, 
for instance with a QPainterPathStroker to give some thickness to the line's 
"mousearea".

I will probably end with a custom property that will carry the pixel distance 
between the line segments and the mouse coordinates, but this is going to be 
heavy to compute (I have potentially hundreds of complicated lines on the map).

Is there a better way or even better a standard way to do that?

Thanks
Philippe Lelong
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to