Маркеры Android Mapbox - кликабелен только первый маркер - PullRequest
0 голосов
/ 14 мая 2018

Я добавляю некоторое количество маркеров (может быть 5-20) к карте mapbox в цикле следующим образом:

Marker newMarker = mainMap.addMarker(new MarkerOptions()
                                        .position(new LatLng(lat, lng))
                                        .title(name)
                                        .icon(icon)
                                        .snippet("icon"));

Во время тестирования я знаю, что этот код выполняетсядля каждого маркера.

Я также добавляю onMarkerClickListener в функцию onMapReady следующим образом:

@Override
public void onMapReady(MapboxMap mapboxMap) {
    this.mainMap = mapboxMap;
    requestLocationPermissions();
    mainMap.setOnMarkerClickListener(this);
}

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

Однако я заметил, что если я сверну приложение и вернусь к нему, некоторые или иногда все значки (но только иногда) стануткликабельны.Когда приложение свернуто, на консоль запуска выводится следующее:

V/FA: Recording user engagement, ms: 43419
  Connecting to remote service
V/FA: Activity paused, time: 155301902
D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=43419, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=2134823340813427911}]
V/FA: Connection attempt already in progress
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 2

Кто-нибудь знает, почему это происходит?Я предполагаю, что это как-то связано с поведением onPause / onResume и тем, что запускается при возобновлении фрагмента, содержащего карту mapbox.Как мне исправить это поведение, чтобы все маркеры всегда были кликабельными?

1 Ответ

0 голосов
/ 16 мая 2018

Я попытался воспроизвести вашу ошибку с помощью этого кода и com.mapbox.mapboxsdk: mapbox-android-navigation-ui: 0.13.0:

public void onMapReady(MapboxMap mapboxMap) {
    // ...

    mapboxMap.setOnMarkerClickListener(this);

    for(int i = 0; i < 10; i++) {
        locations.add(new LatLng(10.683 + ((double) i/100), 53.874236));
        Log.d(TAG, "Add Marker: " + locations.get(locations.size() - 1));
        mapboxMap.addMarker(new MarkerOptions()
                .position(locations.get(locations.size() - 1))
                .title("Marker: " + i)
                .snippet("Snipped"));
    }

    LatLngBounds latLngBound = new LatLngBounds.Builder()
            .include(locations.get(0))
            .include(locations.get(locations.size()-1))
            .build();
    mapboxMap.easeCamera(CameraUpdateFactory.newLatLngBounds(latLngBound, 200), 1000);
}

@Override
public boolean onMarkerClick(@NonNull Marker marker) {
    Log.d(TAG, "onMarkerClick: " + marker.getTitle());
    return true;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...