LeafLet マップがモーダルで正しくレンダリングされない

ニキータ・フジャコフ

私は大学のプロジェクトに取り組んでおり、JSコーディングは初めてで、問題に直面しました.w3ライブラリを使用してアプリケーションを実装しています.ユーザーがボタンをクリックしたときに表示されるモーダルウィンドウがあり、このモーダルにはリーフレットが含まれていますマップが適切にレンダリングされないため、Stackoverflow でこの問題の解決策を見つけました:リーフレット マップがブートストラップ 3.0 モーダルで適切に表示されないため、そのスレッドで提案されたソリューションを試して、これを JS コードに入れました:

$('#comparator_modal').on('show.w3.modal', function(){
    setTimeout(function() {
        mymap.invalidateSize();
    }, 400);
});

しかし、解決策が見つからない別の問題に直面しました。私のマップはまだうまく表示されませんが、ブラウザ ウィンドウのサイズを変更すると、正常に動作しているように見えます (マップ全体を再表示し、マップを適切に表示します)。モーダルの読み込みに時間がかかりすぎる可能性があるため、この問題は時間に関連している可能性があります。 map invalidateSize() はモーダルがロードされる前に実行され、さまざまなタイムアウト (4、40、400、4000) を使用しようとしましたが、これでは何も解決しません。モーダルボディ:

<div id="comparator_modal" class="  w3-modal">
                <div  class="w3-modal-content  w3-animate-left w3-card-4">
                    <header class="w3-container w3-blue">
                        <span onclick="document.getElementById('comparator_modal').style.display='none'"
                              class="w3-btn w3-red w3-round w3-display-topright" style="font-size:16px; text-shadow:2px 1px 0 #444;">&times;</span>
                        <h3 class="w3-center" style="text-shadow:2px 1px 0 #444;">Comparator</h3>
                    </header>
                    <body>
                        <div id="comparator_modal_body">
                            <div class=w3-row">
                                <div id="map01_comparator"></div>
                                <!--<div id=map01_comparator class="w3-half w3-text-black">Map#1</div>
                                <div id=map02_comparator class="w3-half w3-text-black">Map#2</div>-->
                                <div class="w3-row">
                                    <div class="w3-half w3-center w3-text-black">
                                        <div id="time_stamp1">Time_stamp</div>
                                    </div>
                                    <div class="w3-half w3-center w3-text-black">
                                        <div id = "time_stamp2">Time_stamp</div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </body>
                    <footer class="w3-container w3-light-grey">

                    </footer>
                </div>
            </div>

そして、マップをロードする私のJS:

<head>
    <!-- Load Leaflet from CDN-->
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" >
    <script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
    <!-- Load Esri Leaflet from CDN -->
    <script src="https://unpkg.com/[email protected]/dist/esri-leaflet.js"></script>

    <style>
        #basemaps-wrapper {
            position: absolute;
            top: 10px;
            right: 10px;
            z-index: 900;
            background: white;
            padding: 10px;
        }
        #basemaps {
            margin-bottom: 5px;
        }
    </style>
    </head>

    <script language="javascript" type="text/javascript">

    // initialize the map
    var mymap = L.map('map01_comparator').setView([42.35, -71.08], 13);
    // load a tile layer
    L.tileLayer('http://tiles.mapc.org/basemap/{z}/{x}/{y}.png',
        {
            attribution: 'Tiles by <a href="http://mapc.org">MAPC</a>, Data by <a href="http://mass.gov/mgis">MassGIS</a>',
            maxZoom: 17,
            minZoom: 9
        }).addTo(mymap);

    $('#comparator_modal').on('show.w3.modal', function(){
        setTimeout(function() {
            mymap.invalidateSize();
        }, 4000);
    });

</script>
iH8

W3CSS は CSS のみのフレームワークであるため、ブートストラップ モーダルのようなイベントはありません。モーダルを開くために使用している関数内でマップのサイズを無効にする必要があります。

document.getElementById("mybutton").onclick = function () {
    document.getElementById('mymodal').style.display = 'block';
    setTimeout(function() {
        mymap.invalidateSize();
    }, 100);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

BoostrapVueモーダルでVue2-leafletマップが正しく表示されない

分類Dev

Vue2-leaflet LMap / LTileLayerが正しくレンダリングされない

分類Dev

光沢のある/ Leafletマップがレンダリングされない

分類Dev

Mapbox / Leaflet .bottomコントロールは、マップの上にレンダリングされ、見えなくなります

分類Dev

Leafletマップに投影のないシェープファイルをレンダリングする

分類Dev

フィルタリングされたGeoJsonジオメトリがLeafletで正しく機能しない

分類Dev

Leaflet.js、マーカーはレンダリングされません

分類Dev

Leaflet.jsマップが描画アイテムで再レンダリングされるときに、マップで選択したレイヤーを削除する方法

分類Dev

角度2のngx-leafletが* ngifによって状態を変更した後にマップをレンダリングしない理由

分類Dev

ズームコントロールがマップ上で正しくレンダリングされない

分類Dev

Leaflet for Rでgdal2tilesを使用して作成されたカスタムマップタイルをレンダリングするにはどうすればよいですか?

分類Dev

Leafletタイルレイヤーをレンダリングできません

分類Dev

Leaflet MarkerCluster LayerSupport:モバイルブラウザでのパン中にマーカーが表示されない

分類Dev

react-leaflet内にマップボックスのベクタータイルをレンダリングしますか?

分類Dev

react-leaflet内にマップボックスのベクタータイルをレンダリングしますか?

分類Dev

Leaflet.jsマップにタイルが表示されない

分類Dev

シャイニーモーダルでhandsontableが正しくレンダリングされない

分類Dev

フォームがモーダルで正しくレンダリングされない

分類Dev

nouisliderのスライダーを使用してLeaflet.jsでクラスター化されたマーカーをフィルタリングする方法

分類Dev

Leaflet Draw 0.4.9 コントロールが Leaflet 1.1.0 で機能しない?

分類Dev

React-Leafletは開発環境でローカルタイルをレンダリングします

分類Dev

React-leafletを使用したTopoJSONのレンダリング

分類Dev

Backbone.jsで最初に表示した後、Googleマップが正しくレンダリングされない

分類Dev

React-Leafletポリゴンは再レンダリングされていません

分類Dev

Leaflet AwesomeMarkers-バルーンが表示されない

分類Dev

ページの読み込み時にMapboxマップが正しくレンダリングされない

分類Dev

ブートストラップ入力グループがjQueryUIダイアログ内で正しくレンダリングされない

分類Dev

ブートストラップ入力グループがjQueryUIダイアログ内で正しくレンダリングされない

分類Dev

Leafletマップコントロールレイヤーでマーカーを切り替える正しい方法は何ですか?

Related 関連記事

  1. 1

    BoostrapVueモーダルでVue2-leafletマップが正しく表示されない

  2. 2

    Vue2-leaflet LMap / LTileLayerが正しくレンダリングされない

  3. 3

    光沢のある/ Leafletマップがレンダリングされない

  4. 4

    Mapbox / Leaflet .bottomコントロールは、マップの上にレンダリングされ、見えなくなります

  5. 5

    Leafletマップに投影のないシェープファイルをレンダリングする

  6. 6

    フィルタリングされたGeoJsonジオメトリがLeafletで正しく機能しない

  7. 7

    Leaflet.js、マーカーはレンダリングされません

  8. 8

    Leaflet.jsマップが描画アイテムで再レンダリングされるときに、マップで選択したレイヤーを削除する方法

  9. 9

    角度2のngx-leafletが* ngifによって状態を変更した後にマップをレンダリングしない理由

  10. 10

    ズームコントロールがマップ上で正しくレンダリングされない

  11. 11

    Leaflet for Rでgdal2tilesを使用して作成されたカスタムマップタイルをレンダリングするにはどうすればよいですか?

  12. 12

    Leafletタイルレイヤーをレンダリングできません

  13. 13

    Leaflet MarkerCluster LayerSupport:モバイルブラウザでのパン中にマーカーが表示されない

  14. 14

    react-leaflet内にマップボックスのベクタータイルをレンダリングしますか?

  15. 15

    react-leaflet内にマップボックスのベクタータイルをレンダリングしますか?

  16. 16

    Leaflet.jsマップにタイルが表示されない

  17. 17

    シャイニーモーダルでhandsontableが正しくレンダリングされない

  18. 18

    フォームがモーダルで正しくレンダリングされない

  19. 19

    nouisliderのスライダーを使用してLeaflet.jsでクラスター化されたマーカーをフィルタリングする方法

  20. 20

    Leaflet Draw 0.4.9 コントロールが Leaflet 1.1.0 で機能しない?

  21. 21

    React-Leafletは開発環境でローカルタイルをレンダリングします

  22. 22

    React-leafletを使用したTopoJSONのレンダリング

  23. 23

    Backbone.jsで最初に表示した後、Googleマップが正しくレンダリングされない

  24. 24

    React-Leafletポリゴンは再レンダリングされていません

  25. 25

    Leaflet AwesomeMarkers-バルーンが表示されない

  26. 26

    ページの読み込み時にMapboxマップが正しくレンダリングされない

  27. 27

    ブートストラップ入力グループがjQueryUIダイアログ内で正しくレンダリングされない

  28. 28

    ブートストラップ入力グループがjQueryUIダイアログ内で正しくレンダリングされない

  29. 29

    Leafletマップコントロールレイヤーでマーカーを切り替える正しい方法は何ですか?

ホットタグ

アーカイブ