Область маркера Google Map Clickable - PullRequest
9 голосов
/ 08 ноября 2011

Я использую этот пример: https://github.com/galex/android-mapviewballoons

Моя проблема в том, что активная область шире, чем сам маркер.Например, мой маркер Google Map имеет размер 25x25, тогда площадь кликабельности будет увеличена до 70x70.Это большая проблема для перекрывающихся маркеров. enter image description here

Когда я щелкаю кончик этой стрелки, активируется onTap, даже если область касания находится далеко от маркера.

ПожалуйстаПомоги мне.Спасибо.

Ответы [ 2 ]

1 голос
/ 08 ноября 2011

Это поведение по умолчанию ItemizedOverlay. 25x25 пикселей, как правило, не подходит для большинства человеческих пальцев.

Вам следует переопределить метод hitTest(), если вы хотите изменить способ проверки попадания наложенного элемента.

0 голосов
/ 08 ноября 2011

Для отладки:

Попробуйте использовать TouchDelegate для просмотра, вы можете указать Touch touch для подарка 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()

Посмотрите, находится ли данная точка попадания в пределах маркера предмета. Переопределить, чтобы изменить способ проверки предмета на предмет удара . Точка попадания относится к границам маркера. Реализация по умолчанию просто проверяет, находится ли точка попадания в пределах сенсорных границ маркера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...