如何在不覆盖默认行为的情况下展开OSMbonuspacket Marker的setOnMarkerClickListener?

时间:2016-12-13 00:21:45

标签: android onclicklistener openstreetmap osmdroid

我正在开发一个使用 OSMbonuspacket 的应用。我在地图上添加了带描述的标记。单击其中一个标记时,将显示说明框。

现在我想在点击标记时调用另一个函数。假设我要展示一个Toast。所以我添加了以下setOnMarkerClickListener()函数:

marker.setOnMarkerClickListener(new Marker.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker, MapView mapView) {
        Toast.makeText(context, "Hallo", Toast.LENGTH_LONG).show();
        return false;
    }
});

单击标记时显示Toast。但是,不再显示说明框。我想我会覆盖默认行为。有了这个功能。我制作了一个带有Google Maps集成的应用程序,并做了同样的事情,没有任何问题。

有没有人知道如何使用OSMbonuspacket完成此任务?

1 个答案:

答案 0 :(得分:2)

osmdroid中Marker的默认点击监听器如下所示:

protected boolean onMarkerClickDefault(Marker marker, MapView mapView) {
    marker.showInfoWindow();
    if(marker.mPanToView) {
        mapView.getController().animateTo(marker.getPosition());
    }

    return true;
}

所以,你可以像这样覆盖你的监听器:

marker.setOnMarkerClickListener(new Marker.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker, MapView mapView) {
        marker.showInfoWindow();
        mapView.getController().animateTo(marker.getPosition());
        Toast.makeText(context, "Hallo", Toast.LENGTH_LONG).show();
        return true;
    }
});