【问题标题】:[Angular google-maps API]: Is there a way to change <agm-marker> atteributes from inside the typescript code?[Angular google-maps API]:有没有办法从打字稿代码中更改 <agm-marker> 属性?
【发布时间】:2019-07-03 18:56:42
【问题描述】:

我正在从数据库中读取一些标记,并使用&lt;agm-marker&gt; 标记将它们呈现在Google-maps 上。

这是我读取标记并将它们推入 markers 数组 (componentName.component.ts) 的代码部分:

 ngOnInit(): void {


this.markerService.fetchMarkers()

this.markerService.markersSubject.subscribe(markers => {

  markers.forEach(marker => {

    this.markers.push({
      lat: marker.latitude,
      lng: marker.longitude,
      title: marker.title,
      story: marker.story,
      path: marker.img_path
    })

  })

})

    } //onInit

以及渲染标记的 Html:

    <agm-map
    [latitude]="latitude"
    [longitude]="longitude"
    [zoom]="zoom"
    [disableDefaultUI]="false"
    [streetViewControl]="false"
    [zoomControl]="false"
    [mapTypeControl]="false"
    [mapTypeId]="'terrain'"
    > 

    <agm-marker id="display-markers"
     *ngFor="let m of markers; let i = index"
      (markerClick)="openModal('marker-content' + i)"
      [latitude]="m.lat"
      [longitude]="m.lng"
      [markerDraggable]="m.draggable"
      [iconUrl]="m.icon" 
      [visible]="true"
      [id]="i"
    </agm-marker>

   </agm-map>  

我需要让用户通过按下按钮来清除所有标记,这意味着&lt;agm-marker&gt;[visible] 属性应该为每个标记设置为False。如何从 component.ts 文件中访问标记并更改它?

还有其他方法可以在 Angular 中清除地图上的所有标记吗?

我在网上找不到任何东西:(

谢谢

【问题讨论】:

    标签: angular typescript google-maps-markers


    【解决方案1】:

    我没有完全理解这个问题,但我认为你需要这个:

    HTML 模板

    ...
    <agm-marker id="display-markers"
      ...
      [visible]="isMarkersVisible"
      ...
    </agm-marker>
    ...
    <button (click)="toggleMarkers()">{{isMarkersVisible ? "Hide" : "Show"}}</button>
    ...
    

    Ts 文件

    ...
    isMarkersVisible = true;
    ...
    ngOnInit(): void { ... }
    ...
    toggleMarkers(): void {
      this.isMarkersVisible = !this.isMarkersVisible;
    }
    ...
    

    希望对您有所帮助。

    【讨论】:

    • 谢谢。看来你真的有问题!但是有没有办法真正删除标记而不仅仅是改变它们的可见性?
    • 是的,就在toggleMarkers() 方法中,您需要清除一组标记,例如this.markers = []。但是,除非您再次从服务器下载它们,否则无法将它们返回。
    • 谢谢。有效。当答案如此简单明了时,我不敢相信我花了一整天的时间尝试许多复杂的解决方案。再次感谢
    • 没问题,我很高兴它有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2017-11-05
    • 2012-07-02
    • 2019-03-29
    • 2018-04-16
    • 2020-01-02
    相关资源
    最近更新 更多