2016-12-13 11 views
0

Я работаю над приложением, которое использует OSMbonuspacket. Я добавил маркеры с описаниями на карту. При нажатии на один из маркеров отображается окно описания.Как развернуть setOnMarkerClickListener маркера OSMbonuspacket без переопределения поведения по умолчанию?

Теперь я хочу вызвать другую функцию при нажатии маркера. Скажем, я хочу показать тост. Поэтому я добавил следующую setOnMarkerClickListener() функцию:

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

Это показывает Тост при нажатии на маркер. Однако окно описания больше не отображается. Я предполагаю, что я переопределяю поведение по умолчанию. с этой функцией. Я сделал приложение с интеграцией Google Maps один раз и сделал то же самое без каких-либо проблем.

Кто-нибудь знает, как это сделать с OSMbonuspacket?

+1

Попробуйте вернуть super.OnMarkerClick (маркер, MAPview) – spy

+0

@ шпион, спасибо за ваше предложение. Я попробовал возвратить 'super.onMarkerClick (marker, mapView);' вместо 'false' в моей' inMarkerClick (...) 'функции. Это то, что вы имели в виду? Но компилятор говорит, что этой функции не существует :( –

ответ

2

По умолчанию нажмите слушатель для маркеров в osmdroid выглядеть следующим образом:

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; 
    } 
});