2013-03-14 4 views
16

Я хочу отключить нажатие/нажатие на map markers. Я знаю, что вы можете установить map.setOnMarkerClickListener и вернуть true; Тем не менее, это по-прежнему занимает краном, щелкая по маркеру. Я хочу передать кран на onMapClickListener.Отключить onMarkerClickListener полностью в Maps API v2

В моем приложении нажатие на карту перемещает маркер, и если вы приближаетесь к тому месту, где находится маркер, он просто думает, что вы нажимаете на маркер! Вы бы подумали, что есть метод Marker.setClickable, но его нет.

+0

вы нашли решение? – Patrick

+0

@Patrick Нет, я этого не делал. – Flyview

+1

Я нашел решение в этой должности: http://stackoverflow.com/questions/14497734/dont-snap-to-marker-after-click-in-android-map-v2 в основном вернуть true и вызвать onMapClick на нем слушатель. Работает на меня. – Patrick

ответ

-1

map.setOnMarkerClickListener(null); попробовать это

+3

Не работает. Как будто вы не устанавливаете свой собственный слушатель вообще, и поведение по умолчанию берет верх. – Flyview

0

у меня есть два предложения:

если я понял правильно, вы хотите, чтобы предложить функциональные возможности размещать маркер на карте, правильно ?! Если вы не можете удалить setOnMarkerClickListener, вы пробовали draw на карте и «конвертировали» ваш рисунок в Marker в конце. (получите «LatLng» от рисования и создайте Marker).

Фактически второе предложение на самом деле не очень хорошее (в зависимости от того, можете ли вы увеличить или переместить карту). У меня была аналогичная задача, и мы использовали прозрачный оверлей над картой, который обрабатывал все входные данные пользователя и делегировал его. но у нас не было функциональности масштабирования и перемещения, что было бы болью в заднице ...

+1

Нет, я не пытаюсь помещать маркер на карту. Я пытаюсь отключить onMarkerClickListener google и передать кран onMapClickListener. – Flyview

-3

Не нужно внедрять OnMarkerClickListner. Просто попробуйте удалить это заявление

map.setOnMarkerClickListner(this) 

с вашего кода, и я надеюсь, что оно решит вашу проблему.

+0

Нет, это не работает. По умолчанию используется поведение onMarkerClick. – Flyview

+0

попробуйте переопределить этот метод и не называть супер, так что можно избежать метода по умолчанию –

+0

Я не называл супер. – Flyview

-1
class MyInfoWindowAdapter implements GoogleMap.InfoWindowAdapter 
{ 
    @Override 
    public View getInfoContents(Marker mar) 
    { 
     return null; 
    } 
    @Override 
    public View getInfoWindow(Marker mar) 
    { 
     return null; 
    } 
} 

gmap.setInfoWindowAdapter(new MyInfoWindowAdapter);

Попробуйте этот код, приведенный выше. Это установит значение infowindow равным нулю.

+0

Этот ответ неправильный. Установка пользовательского '' InfoWindowAdapter'' для возврата null означает, что используется '' InfoWindowAdapter'' по умолчанию. Это приводит к поведению запасов. – zyamys

9

Просто переопределить событие OnClick:

map.setOnMarkerClickListener(new OnMarkerClickListener() { 
    public boolean onMarkerClick(Marker arg0) { 
     return true; 
    } 
}); 
-1

Применить OnMarkerClickListener к вашей карте. Реализовать onMarkerClick() метод и вернуть false

googleMap.setOnMarkerClickListener(new OnMarkerClickListener() { 
    public boolean onMarkerClick(Marker marker) { 
     return true; 
    } 
}); 
+0

Лучше вернуть 'true', чтобы использовать событие и переопределить его. – sulai