【问题标题】:IONIC 2 Google Maps Marker Click EventIONIC 2 谷歌地图标记点击事件
【发布时间】:2017-04-27 06:07:35
【问题描述】:

我正在尝试使用此代码从数据库中获取所有标记。但问题是当我单击标记时,我总是从数据库中获取最后一项。当“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);
               });
          });       
}

【问题讨论】:

    标签: cordova google-maps ionic-framework ionic2


    【解决方案1】:

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

    Check here

        this.map.addMarker(markerOptions).then((marker: GoogleMapsMarker) => {
                 marker.addEventListener(GoogleMapsEvent.MARKER_CLICK)
                .subscribe(e => {
                  alert(e.get('title'));
    let rec = data1.filter(v=>v.title==e.get('title'));
    alert(rec[0].id);
                       });
                  });
    

    And here

    【讨论】:

      【解决方案2】:

      对于那些仍然有这个问题的人

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

      【讨论】:

        猜你喜欢
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-04
        • 2011-09-01
        • 2011-10-29
        • 2015-02-06
        • 1970-01-01
        相关资源
        最近更新 更多