Вы получаете только один маркер, потому что вы снова и снова добавляете и удаляете один и тот же маркер в своем коде:
for (int i = 0; i < drivers.size(); i++) {
if (driverMarker == null) {
driverMarker = map.addMarker(...);
} else {
driverMarker.remove();
...
}
}
Итак, вам нужно немного изменить код, добавив каждый маркер и сохранив его в списке. Примерно так:
private void addMarkers(List<Driver> drivers) {
List<Marker> markers = new ArrayList<>();
if (map != null && !drivers.isEmpty()) {
for (int i = 0; i < drivers.size(); i++) {
//Get driver model
Driver driver = drivers.get(i);
//Add marker
GeoPoint driverLocation = driver.getGeoPoint();
Marker driverMarker = map.addMarker(new MarkerOptions()
.title(driver.getCarNumber())
.position(new LatLng(driverLocation.getLatitude(), driverLocation.getLongitude())));
driverMarker.showInfoWindow();
// add to the list
markers.add(driverMarker);
}
}
return markers;
}
тогда вы можете использовать метод для получения списка маркеров:
// assumet drivers is list of Driver
List<Marker> markers = addMarkers(drivers);