首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Angular 8中弹出的Leaflet.js (ngx-leaflet)地图切片加载不正确

在Angular 8中弹出的Leaflet.js (ngx-leaflet)地图切片加载不正确
EN

Stack Overflow用户
提问于 2020-05-25 18:22:36
回答 2查看 385关注 0票数 1

我正在使用ngx-leaflet与角度8来显示弹出窗口上的地图,但当我打开地图上的弹出窗口时,瓦片不能正确覆盖。我还使用了map.invalidateSize()。但是,它仍然不起作用。

显示弹出窗口的.html代码。

代码语言:javascript
复制
<div class="modal fade" id="collision1" role="dialog" aria-labelledby="toolenforces" aria-hidden="true">
    <div class="modal-dialog" role="document">
               <div class="row">
                 <div class="col-md-6" style="margin-top: 15px; margin-bottom: 15px;"> 
                    <div class="map1 records-map1" leaflet  [leafletOptions]="options4"
                   (leafletMapReady)="openCollision($event)"></div>
                 </div>
      </div>

.ts代码

代码语言:javascript
复制
  options4 = {
layers: [
  tileLayer('https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png', {
    attribution: '&copy; OpenStreetMap contributors'
  })
],
zoom: 7,
center: latLng([14.1111, 121.21111])};  

   openCollision(map : L.Map){
           setTimeout(function() {
             map.invalidateSize();
            }, 10);}
EN

回答 2

Stack Overflow用户

发布于 2020-05-25 23:07:16

将超时设置为更高的延迟:

代码语言:javascript
复制
openCollision(map : L.Map){
           setTimeout(function() {
             map.invalidateSize();
            }, 500);}
票数 0
EN

Stack Overflow用户

发布于 2021-07-23 19:21:15

这是我在这个问题上的诀窍:

代码语言:javascript
复制
async onMapReady(map: L.Map) {
  this.map = map;
  await this.delay(10);
  this.map.invalidateSize(false)
}

delay(ms: number) {
  return new Promise( resolve => setTimeout(resolve, ms) );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62000425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档