superonTapGeoPoint,Mapview始终返回false

问题描述

|| 因此,我想在用户单击覆盖项时记录一条消息,并在用户单击屏幕上任何其他位置时记录一个对话框。我在网上阅读到,最好的方法调用super(onTap(GeoPoint,Mapview))。如果返回true,我将记录日志,否则显示对话框。但是,我检查了超级调用输出,无论用户单击何处,它似乎都返回false。谁能解释为什么或可能的解决方案?     

解决方法

        您还必须处理叠加层本身中的onTap(并在那里返回true)。我认为没有任何叠加层可以自己处理onTap-您必须从基类派生并重写叠加层本身的onTap()方法。他们中的一些人进行了一些计算以查看您点击的位置,但他们不处理它。 例如,如果您从ItemizedOverlay派生,则可以在子类中重写一个附加方法:
@Override
protected boolean onTap(final int index) {
   Log.d(...);
   return true;
}
ItemizedOverlay已经计算出您点击的位置,并且如果您在其中一项内进行了点击,则新的onTap(int)方法会被调用,并带有已点击项目的索引。如果从此方法返回true,则在调用super()时onTap(GeoPoint,MapView)将变为true。
@Override
protected boolean onTap(GeoPoint p,MapView m) {
   if (!super.onTap(p,m)) {
      // show dialog here ....
   }
}