2016-08-02 3 views
2

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

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

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

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.

ответ

2

Глядя на ваш код, я буду считать, что вы используете 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 не a

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

+0

Большое спасибо, я был судим за последние два дня. – BSavaliya

Смежные вопросы