【问题标题】:how to add multiple markers angular google maps?如何添加多个标记角度谷歌地图?
【发布时间】:2018-01-09 12:49:52
【问题描述】:

我使用了来自 npm install @agm/core 的 @agm/core 模块

这是我的代码

<agm-map [latitude]="lat" [longitude]="lng" >
<agm-marker *ngFor="let data of rooms"[latitude]="data.lat_long[0].lat" [longitude]="data.lat_long[0].long"></agm-marker>
</agm-map>

还有这个component.ts

export class ResultComponent implements OnInit {
  lat: number ;
  lng: number ;
  rooms = ROOMS;

  constructor() { }

  ngOnInit() {
    this.rooms = ROOMS;
    this.lat =  -6.914744;
    this.lng = 107.609810;

  }

}

但这只是显示一个标记如何使用*ngFor 添加多个标记?

【问题讨论】:

    标签: angular google-maps


    【解决方案1】:

    如果您在数组的每个项目中定义了纬度和经度

     <agm-map [latitude]="lat" [longitude]="long">
       <agm-marker  *ngFor="let data of rooms; let i = index" [latitude]="data.lat" [longitude]="data.long">
       </agm-marker>
     </agm-map>
    

    【讨论】:

    • 为什么 agm-marker 在 agm-marker 内的循环中?这是故意的还是您的意思是父元素中的 agm-map?
    【解决方案2】:

    您的所有标记都可能正确显示在地图上;但地图仅以其中之一为中心;尝试缩小并亲自查看。

    rxjs@6 开始,有一种方法可以自动在标记上居中/缩放地图AgmFitBounds

    <agm-map [latitude]="lat" [longitude]="lng" [fitBounds]="true">
      <agm-marker *ngFor="let data of rooms"
        [latitude]="data.lat_long[0].lat [longitude]="data.lat_long[0].long"
        [agmFitBounds]="true">
      </agm-marker>
    </agm-map>
    

    【讨论】:

    • 最佳答案,也是唯一有效的答案。谢谢!
    【解决方案3】:

    您为什么要引用 data.lat_long[0] 来表示您的经纬度?这让我怀疑你是否真的想要这个:

    <agm-marker  *ngFor="let data of rooms.lat_long" [latitude]="data.lat" [longitude]="data.long">
    

    或者这个

    <agm-marker  *ngFor="let data of rooms" [latitude]="data.lat_long.lat" [longitude]="data.lat_long.long">
    

    这完全取决于您的房间模型是如何设置的

    【讨论】:

    • 这是我的虚拟数据结构 ` { id_room : 1, name_room : 'Name1', rating_room : 3, price_room : 200000, lat_long : [{lat : -7.025253, long:107.519760}], 纬度:1122331123,经度:123123123123,城市:'City 1',国家:'Country 1'}`
    • hmm...好吧,您所拥有的一切看起来都正确,所以我能想到的唯一另一件事就是确认您的this.room 中有多个元素。因为你应该有类似[{ id_room : 2, name_room : 'Name2', price_room : 200000, lat_long : [{lat : -7.025253, long:107.519760}]}, { id_room : 2, name_room : 'Name2', price_room : 2000, lat_long : [{lat : -10, long:100}]}] 的东西,你的 lat_long 实际上是不同的点。
    【解决方案4】:

    component.html

    <agm-map [latitude]='lat' [longitude]='lng'>
        <agm-marker *ngFor='let loc of mylocations' [latitude]='loc.lat' [longitude]='loc.lng'></agm-marker>
    </agm-map>
    

    组件.ts

    private mylocations = [
        { lat: 7.423568, lng: 80.462287 },
        { lat: 7.532321, lng: 81.021187 },
        { lat: 6.117010, lng: 80.126269 }
    ];
    

    【讨论】:

    • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 2021-09-12
    • 2018-02-16
    • 2013-04-21
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多