как вызвать событие onclick маркера в google maps v2 для android?

<p>есть ли способ вызвать событие onclick определенного маркера вручную (без физического нажатия на маркер)?</p>

<p>нет, <strong>но вы можете смоделировать событие onclick</strong>. при нажатии на маркер происходит 2 вещи:</p><ol> <li>отображается информационное окно для соответствующего кликаемого маркера.</li> <li>камера показывает маркер.</li> </ol><p>выше можно достичь с помощью 2 строк кода:</p><pre><code>marker.showinfowindow(); map.animatecamera(cameraupdatefactory.newlatlng(marker.getposition()), 250, null); </code></pre>

<p>попробуй это ,</p><p>реализовать приемник щелчков маркером в классе карты</p><pre><code>public class mapview extends fragmentactivity implements onmarkerclicklistener{} </code></pre><p>он переопределит onmarkerclickevent следующим образом:</p><pre><code>@override public boolean onmarkerclick(final marker marker) {} </code></pre>

<p>ответ - нет. вы не можете установить <code>onclick</code> определенного маркера отдельно.</p><p>однако, используя <code>map.setonmarkerclicklistener(\_)</code>, вы можете установить прослушиватель для всех таких событий. вы должны быть в состоянии получить объект <code>marker</code> в слушателе, вызываемом всякий раз, когда нажимается любой маркер. вы можете использовать некоторую идентификацию, чтобы увидеть, является ли это конкретный маркер, который вы хотите, и действовать соответственно. идентификацией может быть любое из свойств, характерных для этого маркера, <code>title</code> является очевидным выбором. однако вы можете фильтровать маркеры, используя любое желаемое свойство.</p>

<p>я просто наткнулся на это и мне не помогли ответы. так что для будущих читателей - если вы добавляете <code>map.setonmarkerclicklistener(yourclickhandler)</code>, то это довольно просто.</p><p>абстрагируйте логику от <code>yourclickhandler</code> и сохраните ссылку на все маркеры ... т.е.</p><pre><code>private val markers = arraylistof<marker>() </code></pre><p>везде, где вы добавляете свои маркеры на карту, также добавляйте их в свой массив <code>markers</code>. то есть что-то вроде</p><pre><code>val marker = markeroptions().position(...)....... markers.add(map.addmarker(marker)) </code></pre><p>и <code>yourclickhandler</code> будет выглядеть примерно так</p><pre><code>val yourclickhandler = googlemap.onmarkerclicklistener { markerclickhandler(marker = it) return@onmarkerclicklistener false } </code></pre><p>теперь, когда вы нажимаете маркер на карте, <code>yourclickhandler</code> будет вызывать <code>markerclickhandler()</code>, и все, что вы там делаете, произойдет. кроме того, когда вы не хотите нажимать маркер программно, просто передайте этот маркер <code>markerclickhandler</code>.</p>

<p>вы можете симулировать щелчок маркером. создайте свой класс mymarkermanager, выходящий из класса markermanager.</p><p>в классе есть функция onmarkerclick (), которую вы можете вызвать вручную для имитации события.</p><p>для более подробной информации обратитесь по этой ссылке. <a href="https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/markermanager.java">https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/markermanager.java</a> </p>