在android中绘制不同颜色的折线

时间:2014-10-29 14:28:45

标签: android google-maps bitmap google-maps-android-api-2

我正在创建一个跟踪用户位置的应用,并在调用onLocationChange(位置位置)时绘制折线。折线颜色取决于加速度计。我知道如何使用折线,但PolyLineOptions对象只能是单色。 我读到它可以通过使用GroundOverlay来实现,但我不知道如何使用它以及如何在位图上绘制一条线时使用我的位置(不知道如何使用它&#39 ; s坐标)。有人可以帮助我,给出一些示例链接吗?请注意,当用户移动时,应该动态添加每条折线(或位图线)。我做过研究,但我发现Drawing multi color PolyLines on Maps V2并没有解释所有事情。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

  

"在每个locationChange上,它的颜色取决于加速度计   改变,我想实时做到这一点"

请注意,无论您是添加折线还是使用您想要的GroundOverlay方法,这都可能会使您的应用显得迟钝或悬空。

无论如何,在这里我将采用" GroundOverlay方法"

1。)创建代表每个速度范围的 n 图像。例如,红色图像为"慢" (0-1000),1001-2000的绿色图像等......)

2。)定义一个数组,该数组将按照您希望的方式保存这些图像的资源ID。例如:

int[] speedImageBucket = {R.drawable.slow,R.drawable.medium,R.drawable.fast};

3.)所以每次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));