Android MapActivity onTap索引始终返回0

时间:2012-11-12 15:19:38

标签: android android-mapview

无论我在地图上点击哪个元素,我的MapActivity中的onTap函数总是返回0。这是onTap函数:

@Override
protected boolean onTap(int i) {

    OverlayItem item = myOverlays.get(i);
    AlertDialog.Builder dialog = new AlertDialog.Builder(context);

    dialog.setTitle(item.getTitle());
    dialog.show();

    return true;
}

//myOverlays is a ArrayList<OverlayItem>

然而。每次函数运行时,索引( i )始终为0.我已使用断点和日志调试确认了这一点。这让我感到很困惑,因为在使用此功能时,我收到了正确的Dialog内容。

item.getTitle()为所点击的元素获取相应的标题,这意味着item-object是正确的,这意味着 myOverlays.get(i)以某种方式能够获取不同的对象,即使索引( i )始终为0.这是令人难以置信的。

有人关心开导我吗?您是否认为这可能是与“点击”在模拟器上执行相关的问题?

提前致谢。 Krys

1 个答案:

答案 0 :(得分:1)

这只是猜测,因为您没有显示创建叠加层和添加项目的代码。

可能您要为每个叠加层添加多个ItemizedOverlays和一个项目。类似的东西:

for(i=0; i<count; i++){
  MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(...);
  OverlayItem oi = new OverlayItem(...);
  itemizedOverlay.add(oi);
  mapView.getOverlays().add(itemizedOverlay);
}

使用上面的代码,您将有多个叠加层,每个叠加层在位置0中有一个项目。

为提高效率,您应该执行以下操作:

MyItemizedOverlay itemizedOverlay = new MyItemizedOverlay(...);
for(i=0; i<count; i++){
  OverlayItem oi = new OverlayItem(...);
  itemizedOverlay.add(oi);
}
mapView.getOverlays().add(itemizedOverlay);

使用上面的代码,您将只有一个包含多个项目的叠加层。

问候。