Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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地图禁止移动_Android_Google Maps - Fatal编程技术网

android地图禁止移动

android地图禁止移动,android,google-maps,Android,Google Maps,我想用手指在谷歌地图上画一个覆盖图。 我已经做到了这一点。。 但是地图也随着我的手指移动,所以我画得不好,因为当地图也移动时,我只能在我的手指周围画一个小圆圈 我如何才能禁用地图的移动(拖动),并且仍然能够用手指绘制和显示覆盖图 我当前的代码如下所示: public class OverlayMap extends Overlay { private List<MapGeoLine> geoLines = new ArrayList<MapGeoLine>();

我想用手指在谷歌地图上画一个覆盖图。 我已经做到了这一点。。 但是地图也随着我的手指移动,所以我画得不好,因为当地图也移动时,我只能在我的手指周围画一个小圆圈

我如何才能禁用地图的移动(拖动),并且仍然能够用手指绘制和显示覆盖图

我当前的代码如下所示:

public class OverlayMap extends Overlay {
    private List<MapGeoLine> geoLines = new ArrayList<MapGeoLine>();
    private List<GeoPoint> geoPoints;
    private boolean isTouched = false;

    @Override
    public boolean onTouchEvent(MotionEvent motionEvent, MapView mapView) {

        if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){ 
            geoPoints = new ArrayList<GeoPoint>();
            geoPoints.add(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY()));
            isTouched = true;
        }

        if(motionEvent.getAction() == MotionEvent.ACTION_MOVE){
            if(isTouched){
                geoPoints.add(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY()));
            }
        }

        if(motionEvent.getAction() == MotionEvent.ACTION_UP){
            if(isTouched){
                geoPoints.add(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY()));
            }           
            isTouched = false;
        }   

        return super.onTouchEvent(motionEvent, mapView);
    }

    @Override
    public void draw(Canvas canvas, MapView mapView, boolean shadow) {  

        if(geoPoints != null && geoPoints.size() > 1 && !isTouched){
            Paint mPaint = new Paint();
            mPaint.setStrokeWidth(2); 
            mPaint.setStyle(Paint.Style.STROKE);
            mPaint.setAntiAlias(true); 

            Projection projection = mapView.getProjection();

            Point from = new Point();   
            Point to = new Point();
            Path p = new Path();

            projection.toPixels(geoPoints.get(0), from);            

            for(int i = 1; i < geoPoints.size(); i++){          
                projection.toPixels(geoPoints.get(i), to);
                p.moveTo(from.x, from.y);
                p.lineTo(to.x, to.y);
                from.set(to.x, to.y);               
            }  

            canvas.drawPath(p, mPaint);
            mapView.invalidate();
        }

        super.draw(canvas, mapView, shadow);
    }

}
公共类覆盖映射扩展覆盖{
private List geoLines=new ArrayList();
私人列表地质点;
私有布尔值isTouched=false;
@凌驾
公共布尔onTouchEvent(MotionEvent、MapView和MapView){
如果(motionEvent.getAction()==motionEvent.ACTION_DOWN){
地理点=新的ArrayList();
添加(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY());
isTouched=true;
}
if(motionEvent.getAction()==motionEvent.ACTION\u MOVE){
如果(i触摸){
添加(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY());
}
}
if(motionEvent.getAction()==motionEvent.ACTION\u UP){
如果(i触摸){
添加(mapView.getProjection().fromPixels((int)motionEvent.getX(),(int)motionEvent.getY());
}           
isTouched=false;
}   
返回super.onTouchEvent(motionEvent,mapView);
}
@凌驾
公共空白绘制(画布、地图视图、地图视图、布尔阴影){
如果(地质点!=null&&geoPoints.size()>1&&!i已打开){
Paint mPaint=新油漆();
mPaint.设定行程宽度(2);
mPaint.setStyle(油漆、样式、笔划);
mPaint.setAntiAlias(true);
Projection=mapView.getProjection();
点源=新点();
指向=新点();
路径p=新路径();
投影.toPixels(geoPoints.get(0),from);
对于(int i=1;i
当处理
运动事件时,您需要从
onTouchEvent()
返回true,并且不希望其他任何人处理它

否则返回false,事件将由
MapView
处理,导致地图移动


注意。

这个问题与谷歌地图API V3无关。(标签被移除)它在我的情况下不起作用。你能帮我吗。