Google地图标记可点击区域

时间:2011-11-08 09:06:19

标签: android google-maps

我正在使用此示例:https://github.com/galex/android-mapviewballoons

我的问题是可点击区域比标记本身宽。例如,我的Google地图标记是25x25,然后可点击区域将扩展到70x70。对于重叠标记,这是一个很大的问题。enter image description here

当我点击该箭头的尖端时,即使点按区域远离标记,也会激活onTap。

请帮帮我。感谢。

2 个答案:

答案 0 :(得分:1)

这是ItemizedOverlay的默认行为。对于大多数人的手指,25x25像素通常不是一个适当的可触摸区域。

如果要修改测试叠加项目的方式,则应覆盖hitTest()方法。

答案 1 :(得分:-1)

用于调试:

尝试使用TouchDelegate作为视图,您可以为给定View

指定触摸矩形

显示如何使用TouchDelegate

的示例
public class TouchDelegateSample extends Activity { 
  Button mButton; 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.touch_delegate_view); 
    mButton = (Button)findViewById(R.id.delegated_button); 
    View parent = findViewById(R.id.touch_delegate_root); 
    // post a runnable to the parent view's message queue so its run 
after 
    // the view is drawn 
    parent.post(new Runnable() { 
      @Override 
      public void run() { 
        Rect delegateArea = new Rect(); 
        Button delegate = TouchDelegateSample.this.mButton; 
        delegate.getHitRect(delegateArea); 
        delegateArea.top -= 200; 
        TouchDelegate expandedArea = new TouchDelegate(delegateArea, 
delegate); 
        // give the delegate to an ancestor of the view we're 
delegating the 
        // area to 
        if (View.class.isInstance(delegate.getParent())) { 
          ((View)delegate.getParent()).setTouchDelegate(expandedArea); 
        } 
      } 
    }); 
  } 
} 

hitTest()

  

查看给定生命值是否在项目标记的范围内。 覆盖以修改项目受测试的方式。命中点是相对于标记的边界。默认实现只是检查命中点是否在标记的可触摸范围内。