根据Polyline文件;
https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polyline
折线可以具有z-index,该z-index会影响相对于其他形状的高度,但不会影响标记。标记显示的级别高于所有形状。因此,要在地图上的标记上方显示一条线,我是否必须完全抛弃Polyline,并将Canvas放在FrameLayout上并自行处理该线的绘制?或者有更简单的方法吗?
答案 0 :(得分:1)
对于其他任何尝试这样做的人,我创建了一个扩展FrameLayout并实现View.OnTouchListener的类。这是关键部分:
@Override
public void onDraw(Canvas canvas) {
Path path = null;
for (Point point : points) {
if(path == null){
path = new Path();
path.moveTo(point.x, point.y);
}
else {
path.lineTo(point.x,point.y);
}
}
if(path != null) {
canvas.drawPath(path, paint);
}
}
@Override
public boolean onTouch(View view, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
callback.complete(points,null);
return true;
}
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
points.add(point);
invalidate();
//Log.d(TAG, "point: " + point);
return true;
}
onTouch
捕获触摸事件,invalidate()
触发onDraw
绘制线。将其中一个添加到您的布局中(我在Java中完成),然后您可以在地图的标记上绘制。