Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 滚动后OsmDroid加载标记_Android_Osmdroid - Fatal编程技术网

Android 滚动后OsmDroid加载标记

Android 滚动后OsmDroid加载标记,android,osmdroid,Android,Osmdroid,我想在滚动后加载标记。在GoogleMaps中,我使用了OnCameraChange,在OsmDroid中我使用了OnScroll,但在我移动地图之前一直被调用。如何检测滚动何时结束为OnCameraChange 如果我理解你的意思是正确的,osmdroid(基本上是onScrollEnd)并不支持它。是这样吗?您想在滚动结束时显示一个事件吗 仅当地图处于平移过程中时,才会触发On Scroll。如果你正在经历不同的行为,这可能是一个错误。事实上,不久前也有类似的报道。它应该在osmdroid的

我想在滚动后加载标记。在GoogleMaps中,我使用了OnCameraChange,在OsmDroid中我使用了OnScroll,但在我移动地图之前一直被调用。如何检测滚动何时结束为OnCameraChange

如果我理解你的意思是正确的,osmdroid(基本上是onScrollEnd)并不支持它。是这样吗?您想在滚动结束时显示一个事件吗

仅当地图处于平移过程中时,才会触发On Scroll。如果你正在经历不同的行为,这可能是一个错误。事实上,不久前也有类似的报道。它应该在osmdroid的5.2或更新版本中修复

要在滚动完成后触发,我建议跟踪最后一个onScroll事件的时间,然后在后台线程中定期检查最后一个事件的时间戳

另一个选项是扩展org.osmdroid.views.overlay.DefaultOverlayManager并覆盖所需的任何按键或触摸事件

然后,可以使用此选项将自定义覆盖管理器附加到地图视图
mapView.setOverlyManager(yourManager)

如果您指的是滚动后的

  • 地图的当前可见部分已更改
  • 包括动画的滚动/缩放已完成
  • 在最后200毫秒内没有滚动/缩放
您可以尝试添加一个
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));
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 ));