Игнорировать onMarkerClick и сделать onMapClick программно в Android

У меня есть карта и маркер на нем. Мне нужно сделать так, чтобы когда пользователь нажимал на этот маркер или нажимал рядом с этим маркером, приложение выполнит «слушатель onMapClick» и вернет мне координаты клика вместо «onMarkerClick». Как-то можно игнорировать щелчок маркера для одного маркера и вместо этого сделать onMapClick?

Я пробовал это, но это ничего не делает:

mMap.setOnMarkerClickListener (новый OnMarkerClickListener () {

      @Override
      public boolean onMarkerClick(Marker arg0) {             
           if(arg0.getSnippet().equals("bad_marker")){

                   mMap.setOnMapClickListener(new OnMapClickListener() {        
                  @Override
                  public void onMapClick(LatLng latLng) {                             
                      mapClick(latLng); 
                  }       
             });
             }});

person Eddwhis    schedule 17.10.2013    source источник
comment
Ваш вопрос не ясен. Кроме того, я бы не стал устанавливать слушателя внутри другого слушателя, как это сделали вы. Вам нужно получить позицию маркера, которую вы только что щелкнули? Если да, то для этого есть метод: getPosition().   -  person fasteque    schedule 17.10.2013
comment
Я попробовал этот метод, но он возвращает координаты маркера щелчка, а мне нужны точные координаты щелчка. Поскольку щелчок может быть рядом с позицией маркера, но он все равно вызывает onMarkerClickListener()   -  person Eddwhis    schedule 17.10.2013
comment
У меня та же проблема: stackoverflow .com/questions/15401988/   -  person Flyview    schedule 20.11.2013


Ответы (1)


Сохраните свой маркер в переменной класса, чтобы у вас была ссылка на него.

Затем установите OnMarkerClickListener и проверьте, является ли arg0 вашим маркером: если да, сделайте то, что вы должны сделать, если пользователь нажмет на этот маркер.

Также установите setOnMapClickListener и проверьте, близка ли latLng, данная вам onMapClick, к положению вашего маркера. У вас есть маркер как переменная класса, поэтому вы можете получить его положение и сравнить его с положением на карте, где пользователь щелкнул.

person fasteque    schedule 17.10.2013
comment
Это не решает проблему, когда onMapClick никогда не вызывается, если вызывается OnMarkerClick. - person Flyview; 20.11.2013