如何在IONIC2中添加标记点击监听器?

时间:2016-08-02 04:51:44

标签: javascript google-maps typescript ionic-framework ionic2

我正在使用IONIC2,我已经在地图上实现了地图和标记。 我可以获得地图点击监听器,但无法获得Marker点击监听器。

我也曾尝试使用addlistener,但无法获得标记的点击事件。

以下是我在地图上添加标记的代码:

<xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.stylusstudio.com/xquery">

如果有人知道IONIC2中的标记点击监听器,请帮帮我。

1 个答案:

答案 0 :(得分: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导入GoogleMapsEventionic-native

注意

在撰写本文时,我理论上已经向您展示了如何实现您想要的内容,但是在这一刻,这可能会给您以下错误

  

this._next不是函数

这是一个已知问题,据我所知,它可能会发生在您必须订阅的任何地图/标记事件上。可以在Ionic Native GitHub页面#206上跟踪该问题。