2013-01-17 30 views
5

是否可以在osmdroid MapView Overlay中的繪製多邊形中設置EventListener?我想在疊加層上打印,並在觸摸它之後,我想要改變它的顏色或處理Polygon背後的數據。如何在MapView上繪製多邊形,填充它並在其上放置onTouch事件

例如:

POLY1:ID = 1337,P1(0,0),P2(1,0),......,PN(0,0)

POLY2: ID = 42,P1(10,7),P2(18,39),......,Pn(10,7)

在觸摸Poly1後我想知道aha ID 1337被按下。想要改變它的顏色。

我該如何實現這樣的行爲?

+0

您可以按照以下鏈接,繪製折線的地圖。 https://stackoverflow.com/questions/39454857/how-to-buffer-a-polyline-in-android-or-draw-a-polygon-around-a-polyline/42664925#42664925 –

回答

0

使用 this文檔,繪製多邊形

使用 this監聽地圖點擊

使用this,以確定是否觸摸裏面的一個多邊形

我不知道該幾何庫可以在android上運行,因此可以隨時更換第三個組件。

編輯

誤讀的問題,並與谷歌地圖相關聯的話,對不起。

+0

對不起,我正在與osmdroid,你可以使用Google API。我已經繪製了一個Polygon,並且我知道如何獲得OnTouch事件的位置。是唯一的方法來確定觸摸是否在使用幾何libarys多邊形?我希望畫布可能知道它的圖紙可以確定一個繪圖上的點擊:(不是這樣嗎? –

+0

哦,對不起......忽略了OSMDroid的東西。關鍵是地圖庫就是這樣,它們的範圍不包括幾何直接/作爲一個功能,所以是的,你必須自己提供它,它仍然值得檢查你的地圖庫的文檔 – Machinarius

+0

好吧,我會看看JTS,並用它來獲取被感動的多邊形。我想我會解決我的問題:)謝謝 –

0

下面是如何繪製和填充的多邊形(矩形示例):

ArrayList的bgRectPoints =新的ArrayList <>();

GeoPoint pt1 = new GeoPoint(-15.953548, 126.036911); 
    bgRectPoints.add(pt1); 
    GeoPoint pt2 = pt1.destinationPoint(10000, 0); 
    bgRectPoints.add(pt2); 
    GeoPoint pt3 = pt2.destinationPoint(10000, 90); 
    bgRectPoints.add(pt3); 
    GeoPoint pt4 = pt3.destinationPoint(10000, 180); 
    bgRectPoints.add(pt4); 
    bgRectPoints.add(pt1); 

    Polygon polygon = new Polygon(); 
    polygon.setPoints(bgRectPoints); 
    polygon.setFillColor(Color.BLACK); 

    mapView.getOverlays().add(polygon); 

要接收觸摸/點擊初始化多邊形是這樣的:

Polygon polygon = new Polygon(){ 
     @Override 
     public boolean onSingleTapConfirmed(MotionEvent event, MapView mapView) { 
      Toast.makeText(context, "Polygon clicked!",Toast.LENGTH_SHORT).show(); 
      return super.onSingleTapConfirmed(event, mapView); 
     } 
    }; 

更可以發現here

相關問題