我必须在mapview上显示多个(大约600个,所有可点击以显示有关它们的信息)覆盖项目。对于性能问题,我认为将它们分组到不同的ItemizedOverlay类是明智的,因为每个组都会显示关于它们的不同类型的信息。 (特别是项目是机场,VOR,NDB以及有关航空的事情)。
我的问题是,如果我把它们分成几个班并展示它们,那么表现就是超级。地图流畅。但是当我在第一层顶部添加第二层时,第一层上的项目变得不可点击。
当我经常阅读并使用Log.i方法调试时,我意识到每个图层都被点击,但只有OnTap(Geopoint point,MapView mapview)方法被调用。调用super.onTap(point,mapview)不起作用。我需要onTap(int index)方法来识别标记。 (我的课程中有两种方法(在我阅读了很多例子之后))。
那么,我该怎么办?有什么方法可以解决我的问题吗?我不想进入沉重的方法,例如将点击的坐标与所有叠加项坐标进行比较,以找到任何接近的东西。
提前致谢。
答案 0 :(得分:7)
onTop(以及任何其他触摸事件在android上工作)的方式是它将ping坐标处的任何和所有对象,直到其中一个onTaps(或任何其他触摸事件)返回真正。在这种情况下,您的onTap(Geopoint point,MapView mapview)方法返回true。这会消耗该触摸事件,并且不会将其传递给任何其他onTap事件。如果使onTap事件返回false,则其他onTap事件将被ping。我希望这会有所帮助。