我想在滚动后加载标记。在谷歌地图我用户OnCameraChange,在OsmDroid中我使用了OnScroll,但在我移动地图之前一直被调用。如何检测滚动结束时的OnCameraChange?
答案 0 :(得分:2)
如果您的意思是after scroll
您可以尝试添加DelayedMapListener
作为地图侦听器,在最后一次滚动/缩放后触发200毫秒
/** Fire if there is more than 200 millisecs no zoom/scroll update markers */
protected static final int DEFAULT_INACTIVITY_DELAY_IN_MILLISECS = 200;
// If there is more than 200 millisecs no zoom/scroll update markers
mMapView.setMapListener(new DelayedMapListener(new MapListener() {
@Override
public boolean onScroll(ScrollEvent event) {
reloadMarker();
return false;
}
@Override
public boolean onZoom(ZoomEvent event) {
reloadMarker();
return false;
}
}, DEFAULT_INACTIVITY_DELAY_IN_MILLISECS));
答案 1 :(得分:0)
如果我理解你是正确的,那么osmdroid本身不支持它(基本上是onScrollEnd)。是对的吗?你想在滚动结束时发生一个事件吗?
On Scroll仅在地图处于平移过程中时触发。如果您遇到不同的行为,那可能就是一个错误。事实上,很久以前就报道了类似的事情。它应该在5.2或更新的osmdroid中修复
要在滚动完成后触发,我建议跟踪最后一次onScroll事件的时间,然后在后台线程中定期检查上一次事件的时间戳。
另一个选项是扩展org.osmdroid.views.overlay.DefaultOverlayManager
并覆盖您想要的任何按键或触摸事件。
然后,您可以使用此功能将自定义叠加管理器附加到地图视图
mapView.setOverlayManager(yourManager);
答案 2 :(得分:0)
OSMmap.setMapListener(new DelayedMapListener(new MapListener() {
public boolean onZoom(final ZoomEvent e) {
reloadMarker();
return true;
}
public boolean onScroll(final ScrollEvent e) {
reloadMarker();
return true;
}
}, 1000 ));