AndroidOsmdroid地图多边形点击有意外延迟
创始人
2024-10-09 11:31:50
0
  1. 使用 onTap() 代替 onLongPress(): 虽然 onLongPress() 可以使多边形响应点击事件,但在一些设备上会有一定的延迟。相反,onTap() 相对更快捷响应,稍作修改即可:
@Override
public boolean onTap(final GeoPoint p, final MapView mapView){
    final Projection pj = mapView.getProjection();
    final Point pt = pj.toPixels(p, null);
    final Drawable d = getMarker(pj);
    mapView.getOverlayManager().remove(this);
    mapView.getOverlayManager().add(new MarkerWithPolyline(d, p));
    return true;
}
  1. 利用单机和双击响应事件方法,重写 onSingleTapConfirmed()onDoubleTap() 方法: 这种方法是以一个重载 Overlay 类的方式来实现。需要注意的是,虽然这种方法会比第一种响应更快,但由于需要判断单次点击和双击事件,读者需要全面考虑其适用性。代码如下:
public abstract class PolygonOverlay extends Overlay {
    private final Polygon polygon;
    private final Path path = new Path();
 
    public PolygonOverlay(final Polygon polygon) {
        this.polygon = polygon;
        for (final List polygonPoints : polygon.getPoints()) {
            final Path polyPath = new Path();
            for (int i = 0; i < polygonPoints.size(); i++) {
                final Point pt = new Point();
                final Projection pj = mapView.getProjection();
                pj.toPixels(polygonPoints.get(i), pt);
                if (i == 0) {
                    polyPath.moveTo(pt.x, pt.y);
                } else {
                    polyPath.lineTo(pt.x, pt.y);
                }
            }
            path.addPath(polyPath);
        }
    }
 
    @Override
    public boolean onSingleTapConfirmed(final MotionEvent event, final MapView mapView) {
        final Projection pj = mapView.getProjection();
        final Point pt = new Point();
        pt.x = (int) event.getX();
        pt.y = (int) event.getY();
        final GeoPoint clickedPoint = pj.fromPixels(pt.x, pt.y);
        final boolean pointIsInPolygon = polygon.contains(clickedPoint);
        if (pointIsInPolygon) {
            onPolygonTapped();
            return true;
        }
        return super.onSingleTapConfirmed(event, mapView);
    }
 
    @Override
    public boolean onDoubleTap(final MotionEvent event, final

相关内容

热门资讯

解密一下!广西优乐免费辅助,陕... 解密一下!广西优乐免费辅助,陕西奇迹打锅子破解,确实是真的有挂(哔哩哔哩)1、让任何用户在无需广西优...
科普一下!陕西三带辅助,新九天... 科普一下!陕西三带辅助,新九天辅助,总是存在有挂(哔哩哔哩)该软件可以轻松地帮助玩家将陕西三带辅助外...
揭幕一下!闲聚辅助器,八仙游戏... 揭幕一下!闲聚辅助器,八仙游戏辅助,都是是真的有挂(哔哩哔哩)1、进入游戏-大厅左侧-新手福利-激活...
详细一下!多乐够级辅助,浙江游... 详细一下!多乐够级辅助,浙江游戏大厅修改器,原来有挂(哔哩哔哩)多乐够级辅助透视方法中分为三种模型:...
解谜一下!小程序牵手跑得有外挂... 解谜一下!小程序牵手跑得有外挂吗,人海大厅脚本,原来是真的有挂(哔哩哔哩)1、进入到小程序牵手跑得有...
开挂一下!内蒙麻将外卦神器下载... 开挂一下!内蒙麻将外卦神器下载,上饶中至能操控吗,本来真的是有挂(哔哩哔哩)内蒙麻将外卦神器下载透视...
教你一下!点我达辅助,玄龙辅助... 教你一下!点我达辅助,玄龙辅助工具,原来有挂(哔哩哔哩)1、点我达辅助免费辅助多个强度级别选择2、点...
曝光一下!钱塘十三水透视,一起... 曝光一下!钱塘十三水透视,一起宁德钓蟹辅助器,竟然存在有挂(哔哩哔哩)1、钱塘十三水透视透视辅助软件...
解密一下!决战十三水辅助,吉祥... 解密一下!决战十三水辅助,吉祥填大坑技巧,确实是真的有挂(哔哩哔哩)1、完成决战十三水辅助有辅助插件...
了解一下!微信小程序微乐辅助器... 了解一下!微信小程序微乐辅助器破解版,葫芦娃七子降妖破解版内购,本来真的是有挂(哔哩哔哩)1、微信小...