Кроме того, для преобразования скорости в цвет вы можете использовать такой метод:

ою приложение для Android на основе определения местоположения и хочу нарисовать маршрут, который выбирает пользователь, исходя из его скорости. Например: 0-10 км / ч - желтая ломаная линия 10-20 км / ч - красная ломаная линия

Теперь я запускаю все в фоновом режиме и обновляю Map Activity;

Служба определения местоположения :

if (location.getSpeed() >0 && location.getSpeed < 10) {

           yellowPolyLineArray.add(new LatLng(location.getLatitude(), location.getLongitude()));
            polylineIntent.putParcelableArrayListExtra("yellow",yellowPolyLineArray);



 }else if (location.getSpeed() >10 && location.getSpeed < 20) {

           redPolyLineArray.add(new LatLng(location.getLatitude(), location.getLongitude()));
            polylineIntent.putParcelableArrayListExtra("red",redPolyLineArray);
}

Это все делается вonLocationChangedметод и я посылаю списки массивов для отображения активности каждый раз, когда пользователь перемещается, используя приемник Local Broadcast:

private BroadcastReceiver mDrawRouteRec = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {



            //Receiver array of yellowspeed polylines
            yellowPolyline = intent.getParcelableArrayListExtra("yellow");
            if(yellowPolyline != null){

                //Implement polyline options variable and draw as user moves
                PolylineOptions polylineOptions = new PolylineOptions();
                polylineOptions.addAll(yellowPolyLine);
                polylineOptions
                        .width(5)
                        .color(Color.YELLOW);
                mMap.addPolyline(polylineOptions);
            }


          //Receiver array of red speed polylines
            redPolyline = intent.getParcelableArrayListExtra("yellow");
            if(redPolyline != null){

                //Implement polyline options variable and draw as user moves
                PolylineOptions polylineOptions = new PolylineOptions();
                polylineOptions.addAll(redPolyLine);
                polylineOptions
                        .width(5)
                        .color(Color.RED);
                mMap.addPolyline(polylineOptions);
            }

Полилиния рисуется в реальном времени по мере движения пользователя

Теперь все работает нормально, если пользователь проезжает какое-то расстояние со скоростью 15 км / ч, а затем - 5 км / ч.

Но если пользователь едет со скоростью 15 км / ч (желтый), то на некотором расстоянии 5 км / ч (красный), а затем снова со скоростью 15 км / ч (желтый). Полилиния, где находится 2-й участок 15 км / ч, начинается не там, где закончилась зеленая полилиния, а начинается там, где закончилась 1-я желтая полилиния. В результате линия через карту.

Рисунок:Скриншот

Одна идея заключалась в том, чтобы очистить массив желтой линии, когда я начну рисовать красную линию. Но есть ли другое, более эффективное решение?

Ответы на вопрос(1)

Ваш ответ на вопрос