добавление маркеров из списка массивов - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь добавить маркеры для каждого драйвера в модели драйвера, которая загружается в список массивов. Когда я провозглашаю результат, я получаю все драйверы, но маркер показывает только один драйвер.

Пожалуйста, помогите мне получить маркеры для каждого драйвера в модуле.

//Add markers for all drivers retrieved
private void addMarkers(List<Driver> drivers) {
  if (map != null && !drivers.isEmpty()) {
    for (int i = 0; i < drivers.size(); i++) {
      //Get driver model
      Driver driver = drivers.get(i);

      Toast.makeText(this, driver.toString(), Toast.LENGTH_LONG).show();

      //Add marker
      GeoPoint driverLocation = driver.getGeoPoint();

      if (driverMarker == null) {
        driverMarker = map.addMarker(new MarkerOptions()
        .title(driver.getCarNumber())
        .position(new LatLng(driverLocation.getLatitude(), driverLocation.getLongitude()))
        );
        driverMarker.showInfoWindow();
      }
      else{
        driverMarker.remove();
        driverMarker = map.addMarker(new MarkerOptions()
        .title(driver.getCarNumber())
        .position(new LatLng(driverLocation.getLatitude(), driverLocation.getLongitude()))
        );
        driverMarker.showInfoWindow();
      }
    }
  }
}

1 Ответ

0 голосов
/ 28 апреля 2018

Вы получаете только один маркер, потому что вы снова и снова добавляете и удаляете один и тот же маркер в своем коде:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...