在Maps V2上绘制多色PolyLines

时间:2014-03-06 20:28:30

标签: android android-mapview android-maps-v2

我正在以下列方式在地图上绘制纯色PolyLine,效果很好:

PolylineOptions polyLine = new PolylineOptions();  
polyLine.width(5);  
polyLine.color(Color.RED);  
polyLine.geodesic(true);  
for (int i = 0; i < speed.length; i++) {  
    polyLine.add(new LatLng(lat, lng));
}

map.addPolyline(polyLine);

现在我想在不同点之间绘制不同颜色的折线,具体取决于这两点之间的速度。

似乎没有一种简单的方法。

我指的是这个问题:draw polylines with different colors on v2 maps,我可以一个接一个地添加多个PolylineOptions,但我认为这不是一个有效的方法,因为我有超过2000个点在一个简单的数据集中绘制。

有更好的做法吗?

理想的实施方式是Nike + app如何在地图上绘制线条:

Nike+ Screenshot from Google Play

非常感谢任何帮助。

提前致谢!

2 个答案:

答案 0 :(得分:3)

我只是想办法用OptionsLines来实现,实际上是两个OptionsLines。 我将此函数与gpx文件一起使用,这就是人物对象TRKPT的原因。

 int size = listPoints.size();
        PolylineOptions optline = new PolylineOptions();
        PolylineOptions optline2 = new PolylineOptions();
        optline.geodesic(true);
        optline.width(10);
        optline2.geodesic(true);
        optline2.width(10);
        for (int i = 0; i < size - 1; i++) {

            TRKPT pointD = listPoints.get(i);
            TRKPT pointA = listPoints.get(i + 1);
            int green = (int) ((float) 255 - (float) (i / (float) size) * (float) 255);
            int red = (int) ((float) 0 + (float) (i / (float) size) * (float) 255);

            optline.add(new LatLng(pointD.getLat(), pointD.getLon()), new LatLng(pointA.getLat(), pointA.getLon()));
            optline2.add(new LatLng(pointD.getLat(), pointD.getLon()), new LatLng(pointA.getLat(), pointA.getLon()));

            if(i%2 == 0){
                optline.color(Color.rgb(red, green, 0));
                mMap.addPolyline(optline);
                optline = new PolylineOptions();
                optline.geodesic(true);
                optline.width(10);
            }
            else{
                optline2.color(Color.rgb(red, green, 0));
                mMap.addPolyline(optline2);
                optline2 = new PolylineOptions();
                optline2.geodesic(true);
                optline2.width(10);
            }
        }

现在你有一条漂亮的线条,渐变从绿色到红色。

答案 1 :(得分:2)

您可以向Bitmap呈现您想要的任何内容,并使用GroundOverlayTileOverlay