Как отобразить движущуюся дорожку на устройстве 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);
дайте ему попробовать!