Отобразить на карте маршрут из 5-ти точек GPS координат - Android

369
07 января 2017, 13:24

Отобразить на карте в планшете маршрут из 5-ти точек массива GPS координат используя Google Map API. (Маршрут рассчитывается сервером Google). массив координат:

new LatLng[] {
   new LatLng(49.9166, 36.4105),
   new LatLng(50.1006, 36.1301),
   new LatLng(50.0342, 36.174),
   new LatLng(50.0404, 36.3656),
   new LatLng(49.934, 36.4111)
}
Answer 1

Маршрут рисуется с помощью точек и линий. Вот документация и пример.

Построением маршрута занимается отдельный сервис - Direction. Если коротко, то нужно сформировать и выполнить HTTP-запрос. В ответ придет JSON с координатами, подсказками и прочими данными. Их надо показать на карте, см. выше.

Есть либа, которая формирует запрос, выполняет и парсит результат. Про саму либу ничего не скажу, но у нее есть пример, из которого в общем понятна суть происходящего.

Answer 2

Вот код отрисовки маршрута по точкам

@Override
public void drawDirect(List<LatLng> points) {
    googleMap.clear();
    PolylineOptions line = new PolylineOptions();
    line.width(8f).color(Color.RED);
    LatLngBounds.Builder latLngBuilder = new LatLngBounds.Builder();
    for (int i = 0; i < points.size(); i++) {
        if (i == points.size() - 1) {
            MarkerOptions endMarkerOptions = new MarkerOptions()
                    .position(points.get(i));
            googleMap.addMarker(endMarkerOptions);
        }
        line.add(points.get(i));
        latLngBuilder.include(points.get(i));
    }
    googleMap.addPolyline(line);
    int size = getResources().getDisplayMetrics().widthPixels;
    LatLngBounds latLngBounds = latLngBuilder.build();
    CameraUpdate track = CameraUpdateFactory.newLatLngBounds(latLngBounds, size, size, 25);
    googleMap.animateCamera(track);
}

По сути массив точек передаваемый в этот метод это ключевые точки маршрута. А если вам нужно получить эти ключевые точки, то смотрите что написал @tse

Ключевые точки можно получить с помощью такого запроса

@GET("maps/api/directions/json")
Call<Object> getDirect(
        @Query("origin") String position,
        @Query("destination") String destination,
        @Query("key") String key,
        @Query("mode") String mode);

по такому адресу

private final String url = "https://maps.googleapis.com/";
READ ALSO
Как можно удалить данные из БД по id из RecyclerView

Как можно удалить данные из БД по id из RecyclerView

Коллеги, спасите, дедлайн уже близкоРабота встала

438
Ошибка в PreparedStatement

Ошибка в PreparedStatement

Использую ajax, для поискаВвожу несколько символов

294
JOGL OpenGL java Поворот матриц и glPushMatrix

JOGL OpenGL java Поворот матриц и glPushMatrix

собственно код вот такой

415