2013-04-09 95 views
4

我在我的自定義Android應用程序中使用Osmdroid庫。如何獲取OSMdroid中的地圖範圍更改事件?

在每一個範圍的變化(&當地圖放大)我想查詢sqlite數據庫並獲得在該範圍內的記錄。爲此,我需要類似於地圖範圍更改事件的內容。

我在MapView類中找不到這樣的事件。我如何實現我想要做的事情?

UPDATE 我使用MapListner這樣的:

mapView.setMapListener(new MapListener() { 
    public boolean onZoom(ZoomEvent arg0) { 
     return false; 
    } 

    public boolean onScroll(ScrollEvent arg0) { 
     onExtentChange(); 
     return false; 
    } 
}); 

但onScrollEvnt爲地圖的每個盤進行幾次。我如何獲得最後或最終的scrollEvent?

+0

在您的編輯中,您爲自己提供了一個非常可以接受的答案,但您之後也改變了原始問題,而其他人提供了答案並獲得了相應的回報。 :smile: – mariotomo 2018-02-15 02:46:23

回答

12
setMapListener(new DelayedMapListener(new MapListener() { 
    public boolean onZoom(final ZoomEvent e) { 
     //do something 
     return true; 
    } 

    public boolean onScroll(final ScrollEvent e) { 
     Log.i("zoom", e.toString()); 
     return true; 
    } 
    }, 1000)); 
+0

http://code.google.com/p/osmdroid/source/browse/trunk/osmdroid-android/src/main/java/org/osmdroid/events/DelayedMapListener.java – manimaul 2013-05-08 00:04:27

+1

只是旁註:In實踐中,我最終將延遲設置爲100 ms而不是1000 – manimaul 2013-05-09 20:14:13