2014-10-29 60 views
0

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

+0

当用户移动时,你能那么就创建一组点(你能顺利进行,尽量减少点#),而不是附加到现有的一个新的折线?这样,如果你创建一个新的折线,那么你可以指定颜色。 – alpinescrambler 2014-10-29 15:52:40

+0

onLocationChange每秒调用一次,所以我认为会有很多多义线供处理器处理 – user1275995 2014-10-29 16:05:51

+0

请勿立即添加。首先收集它们,例如,一旦计数达到1000点(或计时器,每5分钟一次),先将其平滑(减少点数),然后用剩余的点数添加新的折线。如果用户沿直线行进,则平滑算法应只保留2个点。 – alpinescrambler 2014-10-29 16:50:05

回答

0

“每个locationChange和它的颜色取决于加速度计 变化,我想这样做实时”

注意,这将可能使您的应用程序出现迟缓或挂你是否”重新添加多段线或使用您想要的GroundOverlay方法。

总之,这里的我会怎样用“的GroundOverlay办法”

1)创建ñ的图像,将代表速度的每个范围做到这一点。例如“慢”(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)); 
+0

好的,但告诉我如何估计线条的开始和结束,它的宽度不能固定,它应该取决于加速度计数据,因此它必须灵活,我不能只添加静态图像。 – user1275995 2014-10-30 18:45:44

相关问题