Cordova 爱奥尼亚2谷歌地图标记点击事件

Cordova 爱奥尼亚2谷歌地图标记点击事件,cordova,google-maps,ionic-framework,ionic2,Cordova,Google Maps,Ionic Framework,Ionic2,我正试图用这段代码从数据库中获取所有标记。但问题是,当我单击标记时,我总是从数据库中获取最后一项。当“alert(record.id);”弹出时,它总是显示每个标记的最后一项。我想在单击每个标记时显示它们的id loadMarker(){ this.service.getMaps() .subscribe( data1 => { let loc = data1; for (var i = 0; i < data1.length;

我正试图用这段代码从数据库中获取所有标记。但问题是,当我单击标记时,我总是从数据库中获取最后一项。当“alert(record.id);”弹出时,它总是显示每个标记的最后一项。我想在单击每个标记时显示它们的id

loadMarker(){
this.service.getMaps()
      .subscribe( data1 => {
        let loc = data1;
             for (var i = 0; i < data1.length; i++) {
                 var record = data1[i];
        let latlng = new GoogleMapsLatLng(record.lat, record.lng);
        let markerOptions: GoogleMapsMarkerOptions = {
        'position': latlng,
        'title': record.title,
        'animation': GoogleMapsAnimation.DROP
        };


        this.map.addMarker(markerOptions).then((marker: GoogleMapsMarker) => {
         marker.addEventListener(GoogleMapsEvent.MARKER_CLICK)
        .subscribe(() => {
          alert(record.id);
               });
          });       
}
loadMarker(){
this.service.getMaps()
.订阅(数据1=>{
设loc=data1;
对于(变量i=0;i{
marker.addEventListener(GoogleMapsEvent.marker_单击)
.订阅(()=>{
警报(record.id);
});
});       
}

订阅事件是异步的。您将无法从for循环获取record.id。 但您可以在subscribe中访问markerOptions数据


对于仍有此问题的人

this.map
  .addMarker({
    title: title,
    index: index,
    icon: {
      size: {
        height: 48,
        width: 30

      },
      url: pinUri
    },
    position: {
      lat: latitude,
      lng: longuitud
    }
  })
  .then(marker => {

    marker
      .on(GoogleMapsEvent.MARKER_CLICK)
      .subscribe((selectedMarker: any) => {
        const mark = selectedMarker[1];
        this.showModal(mark.get('index'), true);
      });

  });
this.map
  .addMarker({
    title: title,
    index: index,
    icon: {
      size: {
        height: 48,
        width: 30

      },
      url: pinUri
    },
    position: {
      lat: latitude,
      lng: longuitud
    }
  })
  .then(marker => {

    marker
      .on(GoogleMapsEvent.MARKER_CLICK)
      .subscribe((selectedMarker: any) => {
        const mark = selectedMarker[1];
        this.showModal(mark.get('index'), true);
      });

  });