您的位置:首页 > 移动开发 > Android开发

Android 高德地图 动态绘制区域

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

下面说一下我的步骤



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;

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: