4

我必须在 mapview 上显示多个(大约 600 个,全部可点击以显示有关它们的一些信息)叠加项目。对于性能问题,我认为将它们分组到不同的 ItemizedOverlay 类是明智的,因为每个组都会显示关于它们的不同类型的信息。(特别是机场、VOR、NDB 等关于航空的东西)。

我的问题是,如果我将它们分成类并展示它们,性能非常好。地图流畅。但是当我在第一层之上添加第二层时,第一层上的项目变得不可点击。

当我阅读大量内容并使用 Log.i 方法进行调试时,我意识到每个图层都被单击,但只有 OnTap(Geopoint point, MapView mapview) 方法被调用。调用 super.onTap(point, mapview) 不起作用。我需要 onTap(int index) 方法来识别标记。(我的课程中有两种方法(在我阅读了很多例子之后))。

所以我该怎么做?有什么方法可以解决我的问题吗?我不想采用繁重的方法,例如将单击的坐标与所有叠加项目坐标进行比较以找到任何接近的东西。

提前致谢。

4

1 回答 1

7

onTop(以及任何其他在 android 上工作的触摸事件)的方式是,它将 ping 坐标处的任何和所有对象,直到其中一个 onTaps(或任何其他触摸事件)返回 true。在这种情况下,您的 onTap(Geopoint point, MapView mapview) 方法返回 true。这会消耗该触摸事件,并且不会让它传递给任何其他 onTap 事件。如果您让 onTap 事件返回 false,其他 onTap 事件将被 ping 通。我希望这有帮助。

于 2012-05-30T00:40:38.443 回答