Пожалуйста, я знаю, если я использую текущее местоположение в то время, многие ответы, которые я видел.Но Мое местоположение приходит из службы, которая является главной проблемой.После обслуживания я получу все начальные и конечные точки.Теперь, как я могу оживить эту начальную точку до конечной точки?Я уже завершил перемещение индекса от 0 до 1 с анимацией, но остальное я не сделал.Теперь мне нужна помощь, чтобы решить эту проблему.
У меня есть местоположение, которое я получаю из своего сервиса, и я создаю карту маршрутов в Google Maps.Но теперь я хочу показать движущийся маркер или транспортное средство и анимировать его от начальной точки до конечной точки.
Как реализовать анимацию от начала до конца? Это мой метод, и я показываю начальную точку маршрута до концаточка с ломаной линией.
private void setMapMarker(GoogleMap googleMap) {
googleMap.clear();
MapsInitializer.initialize(Objects.requireNonNull(getActivity()).getApplicationContext());
api = ApiClient.getClient().create(ApiInterface.class);
LocationInfo locationInfo = new LocationInfo();
locationInfo.setMOV_DATE(fromDate.getText().toString());
locationInfo.setEMPLOYE_ID(employeeID);
locationInfo.setSTART_TIME(fromTime.getText().toString());
locationInfo.setEND_TIME(toTime.getText().toString());
Call<List<RouteList>> listCall = api.getLocation(locationInfo);
APIHelper.enqueueWithRetry(listCall, new Callback<List<RouteList>>() {
@Override
public void onResponse(Call<List<RouteList>> call, Response<List<RouteList>> response) {
try {
if (response.isSuccessful()) {
List<RouteList> list = response.body();
Map<String, List<RouteList>> map = getEmployeeList(list);
if (list == null || list.isEmpty() || list.equals(0)) {
googleMap.clear();
Toast.makeText(getActivity(), "No data found", Toast.LENGTH_SHORT).show();
} else {
for (Map.Entry<String, List<RouteList>> entry : map.entrySet()) {
String employee = entry.getKey();
List<RouteList> list1 = map.get(employee);
if (list1.size() > 0) {
List<LatLng> latlng = new ArrayList<>();
for (int i = 0; i < list1.size(); i++) {
double lat = Double.parseDouble(list1.get(i).getM_LATITUDE().trim());
double lng = Double.parseDouble(list1.get(i).getM_LONGITDE().trim());
String name = list1.get(i).getEMGIS_TIME();
latlng.add(new LatLng(lat, lng));
LatLng mLatlng = new LatLng(lat, lng);
if (googleMap != null) {
googleMap.addMarker(new MarkerOptions().position(mLatlng).title(name).snippet(""));
cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 12.0f);
googleMap.animateCamera(cameraUpdate);
}
PolylineOptions rectOptions = new PolylineOptions().addAll(latlng);
rectOptions.color(generator.getRandomColor());
Objects.requireNonNull(googleMap).addPolyline(rectOptions);
}
} catch (Exception e) {
Toast.makeText(getActivity(), "Error:" + e, Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
@Override
public void onFailure(Call<List<RouteList>> call, Throwable t) {
call.cancel();
Toast.makeText(getActivity(), t.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
уже показывает карту маршрута.