【问题标题】:Getting the error of map container not found in leaflet map获取传单地图中未找到地图容器的错误
【发布时间】:2021-04-12 02:38:13
【问题描述】:

我的要求是在页面上显示多个传单地图(基于后端数据)。

ma​​p.component.ts

for (var i = 0; i < this.mapleaf.length; i++) {
    map[i] = L.map(this.mapleaf[i]).setView([12.9249, 80.1000], 12); 
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(map[i]);
}

ma​​p.component.html

<div class="col-xs-12 col-sm-8 col-lg-8" >
  <span *ngFor="let leaflet of mapleaf">      
    <div id ="{{mapleaf}}"></div>
  </span>   
</div>

我已将地图 ID 设置为 但是在执行时将错误显示为未找到地图容器。

我是这个传单地图的新手,谁能帮我解决这个问题。

【问题讨论】:

    标签: javascript leaflet openstreetmap angular-leaflet-directive leaflet.markercluster


    【解决方案1】:

    我强烈建议通过与https://stackblitz.com/ 共享您的代码来重现错误,因为可能存在不止一个问题。

    然而,乍一看似乎有问题的是:

    <span *ngFor="let leaflet of mapleaf">      
        <div id ="{{mapleaf}}"></div>
    </span> 
    

    您遍历数组,但每次都绑定整个数组,而不是其中的每一项。因此,地图容器与您在 .ts 文件中指向的容器不匹配。

    将其更改为以下内容:

    <span *ngFor="let leaflet of mapleaf">      
        <div id ="{{leaflet}}"></div>
    </span> 
    

    【讨论】:

    • 我已经尝试了您的建议,但再次显示相同的错误,请您帮我换一种工作方式
    • 请发布完整的代码,甚至更好,与我们分享一个堆栈闪电战以重现错误。
    • 它正在与服务器一起工作,因此在 stackblitz 中运行时无法重现错误,我的问题是根据后端数据动态创建多个传单地图
    • 1) 然后,我假设当每个地图被初始化时,它的传单容器(使用 *ngFor 创建)在 DOM 中已经不存在了。 2)尝试使用setTimeout / setInterval将地图的动态创建模仿成stackblitz。这对我们很有帮助。
    猜你喜欢
    • 2022-07-09
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    相关资源
    最近更新 更多