在android中绘制不同颜色的多段线

在android中绘制不同颜色的多段线,android,google-maps,bitmap,google-maps-android-api-2,Android,Google Maps,Bitmap,Google Maps Android Api 2,我正在创建一个应用程序,它跟踪用户的位置,并在调用onLocationChangeLocation时绘制一条多段线。多段线颜色取决于加速计。我知道如何使用多段线,但多段线选项对象只能是一种颜色。 我读到它可以通过使用地面覆盖来实现,但是我不知道如何使用它,以及在位图上绘制直线时如何使用我的位置,我不知道如何使用它的坐标。有人能帮我,给我一些例子链接吗?请注意,当用户移动时,应动态添加每条多段线或位图线。我做过研究,但我发现这并不能解释一切。谢谢你的帮助 每个位置的变化和颜色取决于加速计 改变,我

我正在创建一个应用程序,它跟踪用户的位置,并在调用onLocationChangeLocation时绘制一条多段线。多段线颜色取决于加速计。我知道如何使用多段线,但多段线选项对象只能是一种颜色。 我读到它可以通过使用地面覆盖来实现,但是我不知道如何使用它,以及在位图上绘制直线时如何使用我的位置,我不知道如何使用它的坐标。有人能帮我,给我一些例子链接吗?请注意,当用户移动时,应动态添加每条多段线或位图线。我做过研究,但我发现这并不能解释一切。谢谢你的帮助

每个位置的变化和颜色取决于加速计 改变,我想实时改变

请注意,无论是添加多段线还是使用所需的GroundOverlay方法,这都可能会使应用程序显得迟缓或挂起

不管怎样,下面是我将如何使用GroundOverlay方法来实现它

一,。创建n个代表每个速度范围的图像。例如,红色图像表示慢速0-1000,绿色图像表示1001-2000,等等

二,。定义一个数组,该数组将保存这些图像的资源id,按照您希望的顺序排列。例如:

int[] speedImageBucket = {R.drawable.slow,R.drawable.medium,R.drawable.fast};
三,。因此,每次locationChange激发时,计算要添加的图像,并将其作为覆盖添加到地图中。例如:

....
float speed = loc.getSpeed(); // loc is the current location object passed in
int speedBucket = (int) (speed / 1000); // 1000 is the linear increment of your ranges for example

 //TODO: handle if speedBucket (array index) is out of range

 GoogleMap map = ...; // get a map.
 BitmapDescriptor image = BitmapDescriptorFactory.fromResource(speedImageBucket[speedBucket ]);; // get an image.

 // Adds a ground overlay with 50% transparency.
 GroundOverlay groundOverlay = map.addGroundOverlay(new GroundOverlayOptions()
 .image(image)
 .position(loc,1)
 .transparency(0.5));

当用户移动时,您是否可以创建一条新的多段线,其中包含一组可以平滑处理以最小化点的点,而不是附加到现有的点?这样,如果创建一条新的多段线,则可以指定颜色。onLocationChange大约每秒调用一次,因此我认为处理器将有很多多段线需要处理,而不是立即添加。首先收集这些点,例如,一旦计数达到1000个点或计时器,每5分钟,首先将其平滑以减少点,然后使用剩余的点添加新的多段线。如果你的用户以直线行驶,那么你的平滑算法应该只保留2个点。但这不是我想做的,因为我想在每个位置变化上画一条线,它的颜色取决于加速计的变化,我想在现实中这样做time@user1275995你能解决你的问题吗?我面临着类似的问题,但请告诉我如何估计线的起点和终点,它的宽度不能固定,它应该取决于加速度计数据,所以它必须灵活,我不能只添加静态图像。