如何在两个位置之间创建阴影折线?

How to create shadow polyline between two locations?

优步在两点之间有阴影。他们是如何做到这一点的?我唯一能想到的就是在不同的灰色不透明度下创建多条线,但结果并不相同。这是它的样子。

    for (int i = 0; i < 6; i++) {
        PolylineOptions testOptions = new PolylineOptions();
        testOptions.strokeWidth(ARC_STROKE_WIDTH - (i * 5));
        if (i == 0) {
            testOptions.strokeColor(Color.GRAY_80);
        } else if (i == 1) {
            testOptions.strokeColor(Color.GRAY_50);
        } else if (i == 2) {
            testOptions.strokeColor(Color.GRAY_40);
        } else if (i == 3) {
            testOptions.strokeColor(Color.GRAY_30);
        } else if (i == 4) {
            testOptions.strokeColor(Color.GRAY_20);
        } else if (i == 5) {
            testOptions.strokeColor(Color.GRAY_10);
        }
        // draw polyline to map
    }

这是优步的图片

老问题了,不过我想我还是会回答的。实现此目的的一种方法是获取屏幕上形成直线的两点的 "projected" 坐标。然后,使用这些值,您可以绘制任何叠加视图(在您的情况下为渐变阴影)。详细说明:

//First do this to get the projected points. 
Point p1 = mMap.getProjection().toScreenLocation(location1);
Point p2 = mMap.getProjection().toScreenLocation(location2);

您需要找到 p1 和 p2 之间的这条 "projected" 线与 x 轴之间的角度,然后使用如下方式旋转您的视图或绘图:

Programmatically rotate drawable or view

您还需要投影线的大小来缩放您的可绘制对象以恰好适合两点之间。

希望对您有所帮助!