在Angular Google Map中应该有多个时只显示一个标记

时间:2017-08-12 17:54:02

标签: angular angular-google-maps

我正在使用来自https://angular-maps.com的Angular Google地图。我想在agm-marker元素上使用ngFor指令显示多个标记。虽然DOM显示所有标记都存在,但UI仅显示地图上的第一个标记。

这是HTML部分:

<agm-map [latitude]="lat" [longitude]="long" [zoom] = 16>
<agm-marker *ngFor="let m of latlongs; let i = index"
[latitude]="m.lat"
[longitude]="m.long"
[markerDraggable]="m.draggable"></agm-marker>

</agm-map> 

打字稿代码在这里:

 this.service.getData().subscribe(data => {
  let json: any[] = []; 
  json["data"] = data.json().map(it => {
    it["category"] = "location";
    it["gallery"] = ["../assets/img/area.png"];
    return it;
  });

  for(let i = 0; i < json["data"].length; i++){
    this.mapInfos.push({lat: +json["data"][i].lat, long: +json["data"][i].long});
  }

  this.latlongs = this.mapInfos;

});

我正在为我的项目使用角度4

2 个答案:

答案 0 :(得分:1)

我建议您关注此链接https://www.npmjs.com/package/@agm/js-marker-clusterer

然后在此代码部分中附加for循环:

&#13 ;
&#13;
<agm-marker [latitude]="51.673858" [longitude]="7.815982"></agm-marker>
&#13;
&#13;
&#13;

纬度] =&#34; 51.673858&#34; [经度] =&#34; 7.815982&#34;&GT;

答案 1 :(得分:0)

@Dasikely提供的答案的补充

我使用相同的js-marker-clusterer并使用下面的解决方案实现了多个标记。

在组件中,我声明了一系列标记。

markers: any[];

使用服务中的数据更新此标记。

private onData(data) {
    this.markers = [];
    for (const item of data) {
        this.markers.push({
            lat: item.latitude,
            lng: item.longitude
        });
    }
}

最后使用ngFor在视图中使用它们。

<agm-map [latitude]="initialLatitude" [longitude]="initialLongitude" [zoom]="zoom">
    <agm-marker-cluster *ngFor="let marker of markers" imagePath="https://raw.githubusercontent.com/googlemaps/v3-utility-library/master/markerclustererplus/images/m">
        <agm-marker [latitude]="marker.lat" [longitude]="marker.lng">
        </agm-marker>
    </agm-marker-cluster>
</agm-map>