2016-08-02 59 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

相关问题