Как добавить прослушиватель щелчков маркера в IONIC2?

Я работаю с IONIC2, у меня есть карта реализации и маркеры на карте. Я могу получить прослушиватель кликов карты, но не могу получить прослушиватель кликов маркера.

Я также пробовал addlistener, но не могу получить событие щелчка для маркера.

Вот мой код для добавления маркера на карту:

addMarkerOnMap(latLng1: GoogleMapsLatLng, depotsEntity: DepotsEntity) {
/**
 * To add marker in the map, need to initialize GoogleMapsMarkerOptions
 */
let options: GoogleMapsMarkerOptions = {
  icon: "www/img/location.png",
  title: depotsEntity.address,
  position: latLng1,
  animation: GoogleMapsAnimation.DROP
};
let marker = this.map.addMarker(options)
this.map.on(this.map.markerClicked, function () {
  console.log("markerClicked"); // This is not working yet

});

Пожалуйста, помогите мне, если кто-нибудь знает о прослушивателе щелчков маркера в IONIC2.


person BSavaliya    schedule 02.08.2016    source источник


Ответы (1)


Глядя на ваш код, я предполагаю, что вы используете cordova-plugin-googlemaps.

Есть пара вещей, которые вы делаете неправильно. Во-первых, map.addMarker() не возвращает маркер, вместо этого он возвращает обещание со значением типа GoogleMapsMarker, что делает эту строку некорректной.

let marker = this.map.addMarker(options)

Во-вторых, вы привязываете обработчик события к объекту-маркеру, а не к карте, а значит, этот бит тоже неверен

this.map.on(this.map.markerClicked, function () { });

Что вам нужно сделать, так это вызвать this.map.addMarker(), подождать, пока обещание будет разрешено, и добавить обработчик кликов к маркеру, возвращаемому обещанием.

Пример

this.map.addMarker(options).then((marker: GoogleMapsMarker) => {
        marker.addEventListener(GoogleMapsEvent.MARKER_CLICK).subscribe(() => { console.log('Marker clicked...'); });
});

Вам нужно будет убедиться, что GoogleMapsMarker и GoogleMapsEvent были импортированы из ionic-native.

Примечание

На момент написания этого я теоретически показал вам, как реализовать то, что вы хотите, но в данный момент это может привести к следующей ошибке.

this._next не является функцией

Это известная проблема, и, насколько я могу судить, она возникает при любом событии карты/маркера, на которое вы должны подписаться. Эту проблему можно отследить на странице Ionic Native GitHub #206.

person Will.Harris    schedule 02.08.2016