because you can't add polylne with different color in loop, but you can draw a same color line in one block, that is efficiency method.
// 畫軌跡private fun drawMapPolyLine(localDatas: List<AsmDataModel>) { mMap.clear() if (localDatas.isNotEmpty() && localDatas.size >= 2) { var rectOptions = PolylineOptions() var _rangeID = judgePolyLineColorRange(localDatas[0]) //取第一筆資料的顏色Range localDatas.forEachIndexed { index, asmDataModel -> if (index < localDatas.size - 1) { //因為設定經緯度會用下一筆,所以大小要限制好 val newRangeID = judgePolyLineColorRange(asmDataModel) //每次都判斷新值的顏色range if (_rangeID != newRangeID) { //如果不一樣 mMap.addPolyline(rectOptions.color(_rangeID)) //就要開始畫舊range的顏色 _rangeID = newRangeID //然後把舊range換掉 rectOptions = PolylineOptions() //Polyline實體重設 } //繼續疊加新的上去 rectOptions.add(LatLng(localDatas[index].latitude.toDouble(), localDatas[index].longitude.toDouble()), LatLng(localDatas[index + 1].latitude.toDouble(), localDatas[index + 1].longitude.toDouble())) if (index == localDatas.size - 2) { //最後一筆畫最後的區塊 mMap.addPolyline(rectOptions.color(_rangeID)) } } } }}
留言
張貼留言