Android Mapbox标记 - 只添加第一个标记是可点击的

时间:2018-05-13 23:05:55

标签: android mapbox

我在循环中向地图框地图添加了一些标记(不同,可能是5-20),如下所示:

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

通过我的测试,我知道上面的代码正在为每个标记运行。

我还在onMapReady函数中添加了onMarkerClickListener,如下所示:

@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 map的片段恢复时运行的任何内容。如何修复此行为,以便所有标记始终可以点击?

1 个答案:

答案 0 :(得分:3)

我尝试使用此代码和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;
}

如果我不通过旋转/缩放更改地图视图,我会确认您观察到的行为。 但放大后,我可以点击一个标记。 我想你应该发布这个问题here

相关问题