2017-03-27 244 views
0

我正在使用GMaps.net的WPF版本。某些功能如多邊形選擇並不那麼明顯。多邊形選擇

我需要做的是在地圖上檢測多邊形單擊,然後更改多邊形的屬性(不透明度等)以顯示它已被選中。實現這一目的的一種自定義方式是通過鼠標點擊事件獲得鼠標座標,並使用一些向量數學進行多邊形相交測試,但是我確定必須有內置方法來執行此操作?

爲了清楚起見,我這是怎麼創建我的多邊形:

 GMapPolygon polygon = new GMapPolygon(polyPointList); 
     polygon.RegenerateShape(gMapControl1); 
     (polygon.Shape as Path).Stroke = Brushes.DarkBlue; 
     (polygon.Shape as Path).Opacity = 0.5; 
     gMapControl1.Markers.Add(polygon); 

回答

0

我相信你是對的,多邊形的WPF版本不提供正確的開箱。

認爲您可以使用點擊的PointLatLng並檢查它是否在多邊形的範圍內。以the WinForms version of it並適應它。最後,這只是數學缺乏的一點。

+0

看到我的答案在下面,請不要說如果你不完全知道不提供。 –

-1

將IsHitTestVisible屬性設置爲true。

(polygon.Shape as Path).IsHitTestVisible = true; 
    (polygon.Shape as Path).MouseLeftButtonUp += new MouseButtonEventHandler(PolygonShapeMouseLeftButtonUp); 

    void PolygonShapeMouseLeftButtonUp(object sender, MouseEventArgs e) 
    { 
     // Do whatever you want to do here on mouse click over the polygon. 
    } 
+0

請重新評估您的答案。 OP正在請求「WPF」的信息。 [此版本](https://github.com/radioman/greatmaps/blob/96bcb11a201ec38ef3bf6ca37d9a36f1edfea738/GMap.NET.WindowsPresentation/GMap.NET.WindowsPresentation/GMapPolygon.cs)不提供「IsHitTestVisible」屬性。 – rdoubleui