2013-04-09 93 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