gpt4 book ai didi

android - OsmDroidBonusPack OnMarkerClickListener 未调用

转载 作者:行者123 更新时间:2023-11-29 20:06:18 26 4
gpt4 key购买 nike

我对 OsmBonusPack 中的 OnMarkerClickListener 有一个奇怪的问题。如果我在 OnCreate 中添加标记,则不会在单击时调用监听器。但是,如果我在所有初始设置之后添加标记,假设当用户与应用程序交互时,单击标记时将调用 OnMarkerClickListener。

为了说明,此代码添加的 OnMarkerClickListener 将不会响应:

@Override public void onCreate(Bundle savedInstanceState) {
MapView mapView = (MapView) findViewById(R.id.map);
mapView.setTileSource(TileSourceFactory.MAPNIK);

Marker marker = new Marker(mapView);
marker.setPosition(new GeoPoint(latitude, longitude));
marker.setOnMarkerClickListener(MyOnMarkerClickListener);
mapView.getOverlays().add(marker);
mapView.invalidate();
}

此代码添加的 OnMarkerClickListener 将响应(我什至使用相同的标记和 mapView 引用):

public void markerAddedbyUser() {
mapView.getOverlays().add(marker);
mapView.invalidate();
}

我想知道是否与 mapView.getOverlays() 方法在 UI 完全绘制之前没有完全准备好有关。但是,我尝试将第一个代码放在 onCreateOptionMenu 中,但它仍然不起作用。

最佳答案

在我发布这个问题后不久,我找到了解决方案。我使用以下方法列出了 MapView.getOverlays() 中的所有对象:

List<Overlay> overlays = mapView.getOverlays();
for(Overlay overlay : overlays) {
System.out.println(overlay.getClass());
}

我发现我在其他地方添加了一个 MapEventsOverlay,并且叠加层位于所有叠加层的顶部(列表的最后一项)。 MapEventsOverlay 避免 OnMarkerClickListeners 监听点击事件。我通过将 MapEventsOverlay 添加到列表的第一个来解决这个问题:

mapView.getOverlays().add(0, mMapEventsOverlay);

关于android - OsmDroidBonusPack OnMarkerClickListener 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35619258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com