Кроме того, для преобразования скорости в цвет вы можете использовать такой метод:
ою приложение для 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-я желтая полилиния. В результате линия через карту.
Рисунок:Скриншот
Одна идея заключалась в том, чтобы очистить массив желтой линии, когда я начну рисовать красную линию. Но есть ли другое, более эффективное решение?