Android 高德地图 动态绘制区域
2017-08-01 16:06
537 查看
目前存在的问题是绘制的过程中,地图也在跟着刷新,不知道怎么解决,如果有朋友知道留言告诉我,感激不尽
下面说一下我的步骤
1、在绘制的开始时候,设置地图不可移动
2、监听touchlistener
里面有两个注意的点,
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;
}
}
下面说一下我的步骤
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;
}
}
相关文章推荐
- Android可以动态控制图片显示区域的自定义ImageView
- Android游戏快速入门(二):绘制动态文字和图片
- Android实现扫一扫功能之绘制指定区域透明区域
- Android自定义控件 -Canvas绘制折线图(实现动态报表效果)
- Android地图轨迹抽稀、动态绘制
- Android开发:SurfaceView上新建线程绘制旋转图片 及 刷新特定区域(脏矩形)
- Android使用自定义View继承SurfaceView实现动态折线图的绘制
- android 动态绘制各种图形
- Android使用ichartjs在HTML5中动态绘制图表
- Android游戏快速入门(二):绘制动态文字和图片
- android UI——绘制动态柱状图
- Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整(原理:底层SurfaceView+上层绘制ImageView)
- Android拓展之使用MPAndroidChart绘制动态折线图
- [Android][细节][布局]View的getDrawingCache()方法不会在bitmap的透明区域绘制该View下方的View
- Android 绘制动态图
- Android Shape绘制实用圆圈,并动态改变圆点的颜色
- android 绘制折线图(AChartEngine)Linechart 动态更新横轴为获取的当前时间
- Android 在WindowManager添加View进行绘制时,限制在Window内部绘制和允许绘制到窗口之外区域的方法
- android 自定义View 动态绘制曲线图
- Android中实现绘制图片指定区域