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 實體重設 } // 繼續疊加新的上去 ...