我正在使用MapView(谷歌)并在其上添加一些叠加层。 我使用自己的覆盖类,如下所示:
public class MyOverlay extends ItemizedOverlay<OverlayItem>
当我缩小并使我的所有物品位于同一位置并点按图像时,我只会在所有位于所处位置的物品中获得1个onTap事件。
我希望能够为我点击的地图上的位置下的每个项目获取onTap事件,或者能够向地图询问我按下的特定矩形的所有项目。< / p>
这是我的调试代码:
@Override
protected boolean onTap(int i)
{
super.onTap(i);
return false;
}
每个叠加层仅获得一次点按。
有可能吗?如何?
感谢。
答案 0 :(得分:0)
一种方法是:(注意这是伪代码)
// Over ride the onTouchEvent
@Override
public boolean onTouchEvent(MotionEvent event, final MapView mapView) {
final int action=event.getAction();
final int x = (int)event.getX();
final int y = (int)event.getY();
if (action == MotionEvent.ACTION_DOWN) {
// get the zoom level
zoomLevel = mapView.getZoomLevel();
if(zoomLevel > appropriateZoom)
{
if(items != null) {
for(int i = 0; i < items.size(); i++){
OverlayItem item = items.get(i);
Point mp = new Point(0,0);
mapView.getProjection().toPixels(item.getPoint(), mp);
xDragTouchOffset=x-mp.x;
yDragTouchOffset=y-mp.y;
if (hitTest(item, marker, x-(mp.x-(xDragImageOffset+xDragTouchOffset*2)), y-(mp.y-((yDragImageOffset/2)+yDragTouchOffset)))) {
// This item has been tapped. Do what you want here.
}
}
这只是一个让你入门的想法/提示。