无论我在地图上点击哪个元素,我的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
答案 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);
使用上面的代码,您将只有一个包含多个项目的叠加层。
问候。