Как отобразить движущуюся дорожку на устройстве Android
Я хочу построить свой трек с помощью GPS на устройстве Android.
у меня нет проблем с отображением завершенного маршрута, но мне трудно показать трек, Когда я двигаюсь.
до сих пор я нашел 2 разных способа сделать это, но ни один из них не является особенно удовлетворительным.
метод 1
PolylineOptions track = new PolylineOptions();
Polyline poly;
while (moving) {
    Latlng coord = new LatLng(lat,lng);    // from LocationListener
    track.add(coord);
    if (poly != null) {
        poly.remove();
    }
    poly = map.addPolyline(track);
}
ie создайте полилинию, удалив ее, прежде чем добавлять новые координаты, а затем добавлять ее обратно.
Это чудовищно медленный.
Метод 2
oldcoord = new LatLng(lat,lng);;
while (moving) {
    PolylineOptions track = new PolylineOptions();
    LatLng coord = new (LatLng(lat,lng);
    track.add(oldcoord);
    track.add(coord);
    map.addPolyline(track);
    oldcoord = coord;
}
ie построить серию одиночных полилиний.
хотя это делает намного быстрее, чем метод 1, он выглядит довольно неровным, особенно на более низких уровнях масштабирования, потому что каждая полилиния в квадрате, и это только углы, которые фактически касаются.
есть ли лучший способ и, если да, то что это?
1 ответов
существует простое решение с использованием 2.0 Maps API. Вы получите хорошую гладкую линию маршрута, используя три шага:
- 
создайте список точек LatLng, таких как: List<LatLng> routePoints;
- 
добавить точки маршрута в список (может/должно быть сделано в цикле): routePoints.add(mapPoint);
- 
создайте полилинию и передайте ей список точек LatLng как таковых: Polyline route = map.addPolyline(new PolylineOptions() .width(_strokeWidth) .color(_pathColor) .geodesic(true) .zIndex(z)); route.setPoints(routePoints);
дайте ему попробовать!
