Android谷歌地图 - 显示标记上方的行

时间:2015-09-30 17:10:07

标签: android google-maps

根据Polyline文件;

https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polyline

折线可以具有z-index,该z-index会影响相对于其他形状的高度,但不会影响标记。标记显示的级别高于所有形状。因此,要在地图上的标记上方显示一条线,我是否必须完全抛弃Polyline,并将Canvas放在FrameLayout上并自行处理该线的绘制?或者有更简单的方法吗?

1 个答案:

答案 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中完成),然后您可以在地图的标记上绘制。