我正在以下列方式在地图上绘制纯色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如何在地图上绘制线条:
非常感谢任何帮助。
提前致谢!
答案 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
呈现您想要的任何内容,并使用GroundOverlay
或TileOverlay
。