Android 高德地图 动态绘制区域

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/androidwubo/article/details/76537449

目前存在的问题是绘制的过程中,地图也在跟着刷新,不知道怎么解决,如果有朋友知道留言告诉我,感激不尽

下面说一下我的步骤


1、在绘制的开始时候,设置地图不可移动

uiSettings.setScrollGesturesEnabled(false);

2、监听touchlistener

mAMap.setOnMapTouchListener(new AMap.OnMapTouchListener() {
    @Override
    public void onTouch(MotionEvent motionEvent) {
        if (!mAMap.getUiSettings().isScrollGesturesEnabled()) {//地图不能移动的时候再画线
            switch (motionEvent.getAction()) {
                case MotionEvent.ACTION_DOWN://start点,转换成坐标点
                    int x = (int) motionEvent.getX();
                    int y = (int) motionEvent.getY();
                    latLngStart = toGeoLocation(x, y);
                    trackLatlngList.add(latLngStart);
                    break;
                case MotionEvent.ACTION_MOVE:
                    mAMap.showMapText(false);
                    int x1 = (int) motionEvent.getX();
                    int y1 = (int) motionEvent.getY();
                    latlngMove = toGeoLocation(x1, y1);
                    trackLatlngList.add(latlngMove);
                    if (mDrawedLineList.size() > 1) {
                        mDrawedLineList.remove(0);
                    }
                    mDrawedLineList.add(latlngMove);
                    PolylineOptions polylineOptions = new PolylineOptions().color(Color.RED).addAll
                            (mDrawedLineList);
                    mAMap.addPolyline(polylineOptions);
                    Log.e("画线",mDrawedLineList.size() + "");
                    //画线
                    break;
                case MotionEvent.ACTION_UP:
                    mAMap.showMapText(true);
                    uiSettings.setScrollGesturesEnabled(true);
                    Toast.makeText(TrackActivity.this,"绘制完成",Toast.LENGTH_SHORT).show();
                    //自动收尾相连
                    trackLatlngList.add(latLngStart);
                    PolylineOptions polylineOptions1 = new PolylineOptions().color(Color.RED).addAll
                            (trackLatlngList);
                    mAMap.addPolyline(polylineOptions1);
                    break;
            }
        }
    }
});
里面有两个注意的点,

1.在move的时候,隐藏地图标识,showMapText(false),这也是因为地图跟着刷新,这样看着好一点

2.在绘制的时候保证两个点两个点的绘制

3.在绘制完成后,将第一个点添加到list里面,在up的时候自动连接上

4.忘记了一个,这个是屏幕坐标点和实际的转换,高德自带的api

private LatLng toGeoLocation(int x, int y) {
        if (AMapUtil.IsEmptyOrNullString(x + "") || AMapUtil.IsEmptyOrNullString(y + "")) {
            return null;
        } else {
            mPoint = new Point(x, y);
            LatLng mLatlng = mAMap.getProjection().fromScreenLocation(mPoint);
            if (mLatlng != null) {
                return mLatlng;
            }
            return null;
        }
    }


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页