2015-11-24 91 views
4

IsMouseOverMarker屬性檢測到點擊標記就好了,但試圖使用IsMouseOverPolygon屬性GMap控件檢測用戶是否點擊了多邊形線 - 它似乎並沒有工作。GMap - 無法檢測點擊多邊形

注意:PolygonEnabled控件的屬性GMap設置爲True。

OnPolygonClick事件,甚至不火:

private void gMap_OnPolygonClick(GMapPolygon item, MouseEventArgs e) { 
     double pLat = item.From.Value.Lat; 
} 

地圖Click事件不火,但「IsMouseOverPolygon`從來沒有得到真正的價值:

private void gMap_Click(object sender, EventArgs e) { 
    if (gMap.IsMouseOverMarker) { 
     MessageBox.Show("Clicked on marker and it works!"); 
    } 

    if (gMap.IsMouseOverPolygon) { 
     MessageBox.Show("clicked on line - never works"); 
    } 
} 

我不知道是否有什麼不對在某種程度上,我添加多邊形或是因爲在我的情況下它只是線條:

GMapOverlay polyOverlay = new GMapOverlay("polygons"); 
gMap.Overlays.Add(polyOverlay); 
List<PointLatLng> points = new List<PointLatLng>(); 
points.Add(start); 
points.Add(end); 
polygon = new GMapPolygon(points, "mypolygon"); 
polygon.Stroke = new Pen(Color.Blue, 5); 
polyOverlay.Polygons.Add(polygon); 

所以,問題是:我應該如何去檢測鼠標點擊這些線?

+0

對於沒有[mcve] –

+0

的人來說,這將會很困難。當然,我會嘗試在我的問題中添加一些代碼。感謝您的評論。 – InitK

回答

4

我可以在代碼中看到兩個問題。首先,你需要明確地定義多邊形爲HitTestVisible

polygon.IsHitTestVisible = true; 

第二,要建立一個多邊形添加未對齊至少有三個點,實際上產卵的區域。我發現點擊只會在實際區域發現,理論上多邊形可以由兩個點組成。

隨着提示gMap.IsMouseOverPolygon的檢查上面應該返回true

+0

我發現我的「線條」不是真正的多邊形這一事實很可能是問題所在。當我使用相同的座標來創建路線時,控制器能夠檢測到點擊(被點擊的路線),沒有任何問題。謝謝您的回答! – InitK