ionic2/angular 2 - *ng 不处理地图标记内容

ionic2/angular 2 - *ngfor not working on map markers content

我正在尝试在我的地图标记的信息窗口上打印数据。我设法在 console 中获取数据,但无法在信息窗口上打印。标记和信息窗口确实出现在地图上,只是无法检索数据。

该代码用于测试目的,所以我只从 JSON 对象数组中获取一个对象。

我在 maps.html 上对 *ngfor let listing of maps.data 进行了测试,数据确实出现了。

感谢任何帮助并提前致谢:)

用于获取存储在 googlemaps 提供程序中的位置和显示标记的函数

initMap(): Promise<any> {

this.mapInitialised = true;

return new Promise((resolve) => {

  this.geolocation.getCurrentPosition().then((position) => {

    // fixed position
    let latLng = new google.maps.LatLng(1.352100, 103.819800);

    let mapOptions = {
      center: latLng,
      zoom: 15,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    this.map = new google.maps.Map(this.mapElement, mapOptions);

      let marker = new google.maps.Marker({
      map: this.map,
      animation: google.maps.Animation.BOUNCE,
      position: this.map.getCenter(),
      disableDefaultUI: true,
    });

     let mapListings = this.load();
     let data = this.mapListings;
     console.log(this.data[0]);


     let content = '<ion-item *ngFor="let listing of this.data[0]">' + 
     '<h2 class="payment_color">{{ listing.ListingTitle }}</h2>' + 
     '<p>{{ listing.ListingDatePosted }}</p>' +
     '<p>{{ listing.ListingDescription }}</p>' +
     '</ion-item>';          

     this.addInfoWindow(marker, content);

    resolve(true);


  });

});

}

console.log(mapListings) 输出

t {__zone_symbol__state: true, __zone_symbol__value: Array(4)}
__zone_symbol__state: true
__zone_symbol__value: Array(4)
__proto__: Object

console.log(this.data[0]) 输出

Object {ListingTitle: "This is the Title", 
ListingDatePosted: "20-July-2017", 
ListingDescription: "Hello World"}

信息窗口上的输出

{{ listing.ListingTitle }}
{{ listing.ListingDatePosted }}
{{ listing.ListingDescription }}

试试这个。将let内容替换为以下代码

let content = `<ion-item *ngFor="let listing of this.data[0]">
     <h2 class="payment_color">{{ listing.ListingTitle }}</h2>
     <p>{{ listing.ListingDatePosted }}</p>
     <p>{{ listing.ListingDescription }}</p>
     </ion-item>`;       

保留上面的代码,然后在您的提供程序中或您调用 initMap() 的任何地方,试试这个。

import { NgZone  } from '@angular/core';

    constructor(public zone: NgZone) {
    }

     this.zone.run(() => {
     initMap();

  });

我试过使用另一种方法,它有效。不确定为什么 *NgFor 不工作。

for ( let listing of this.data){
 let content = '<ion-item>' + 
     '<h2 style="color:red;">' + listing.ListingTitle +'</h2>' + 
     '<p>' + listing.ListingDatePosted + '</p>' +
     '<p>' + listing.ListingSalary + '</p>' +
     '</ion-item>';  
}