【问题标题】:How to create shadow polyline between two locations?如何在两个位置之间创建阴影折线?
【发布时间】:2017-09-15 19:09:07
【问题描述】:

Uber 在两点之间有阴影。他们是如何做到这一点的?我唯一能想到的是以不同的灰色不透明度创建多条线,但结果不一样。看起来是这样的。

    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
    }

这是 Uber 的外观图片

【问题讨论】:

  • @RahulGupta 该链接用于绘制曲线。我不是要求那个。我只想在两点之间画一个阴影。没有曲线。我能想到的唯一方法是在两个点之间以不同的不透明度和宽度绘制多条折线。但这并没有给我我想要的确切外观。
  • 你能创建一个你目前尝试过的代码的工作演示吗?

标签: android google-maps google-polyline


【解决方案1】:

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

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

您需要找到 p1 和 p2 之间的“投影”线与 x 轴之间的角度,然后使用以下方式旋转视图或可绘制对象:

Programmatically rotate drawable or view

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多