2016-08-02 105 views
2

我正在使用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標記點擊收聽,請幫助我。

回答

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...'); }); 
}); 

您將需要確保GoogleMapsMarkerGoogleMapsEvent已經從ionic-native進口。

注意

寫這篇文章我已經從理論上說明了如何實現你想要什麼,但在一分鐘這可能給你以下錯誤

this._next不函數

這是一個已知的問題,據我可以告訴它發生在任何地圖/標記事件,你必須訂閱。該問題可以在Ionic Native GitHub頁面#206上進行跟蹤。

+0

非常感謝,我從前兩天開始嘗試。 – BSavaliya

相關問題