質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Leaflet

Leafletは、Web上で地図を作成するためのJavaScriptライブラリ。人気のあるJavaScript地図ライブラリのうちの一つでオープンソースです。軽量でインタラクティブな地図を手軽に表示することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3121閲覧

Leaflet タイルが左上しか表示更新されない

退会済みユーザー

退会済みユーザー

総合スコア0

Leaflet

Leafletは、Web上で地図を作成するためのJavaScriptライブラリ。人気のあるJavaScript地図ライブラリのうちの一つでオープンソースです。軽量でインタラクティブな地図を手軽に表示することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/01/23 06:51

編集2019/01/23 08:56

ボタンを押すとモーダルで地図画面がでてくるようにしたいのですが
左上のタイルしか表示されず
マップを移動しても左上の角のタイルしか追加されません

HTMLのサイズが認識されていないのかと思い #map に width height を設定しましたがかわりません
動的に出現したDOMの中に leaflet を表示させるにはどうすればいいのでしょうか

以下のコードは bootstrap3 のモーダルのサンプルコード
http://bootstrap3.cyberlab.info/javascript/modals.html
のなかに leaflet トップのサンプル
https://leafletjs.com/
をいれただけですが状況を再現できているかと思います

<html> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" /> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" /> <script src="https://code.jquery.com/jquery-2.1.4.min.js" data-turbolinks-eval=false></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js" data-turbolinks-eval=false></script> <script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script> <style> #map { width: 80vw; height: 60vh; overflow: hidden; } </style> </head> <body> <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#sampleModal"> モーダル・ダイアログ 呼び出し </button> <div class="modal fade" id="sampleModal" tabindex="-1"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span>&times;</span></button> <h4 class="modal-title">タイトル</h4> </div> <div class="modal-body"> <div id="map"></div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">閉じる</button> </div> </div> </div> </div> </body> <script> var map = L.map('map').setView([51.505, -0.09], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' }).addTo(map); </script> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/24 06:02 編集

できました invalidateSize() をよべばよかったのですね ありがとうございました 回答にかいていただければベストアンサーにしたいと思います
wwbQzhMkhhgEmhU

2019/01/24 09:36

よく分かっていないのでそれはパス致します。すみません。
guest

回答1

0

ベストアンサー

いただいたコメントで解決できました

https://stackoverflow.com/questions/20400713/leaflet-map-not-showing-properly-in-bootstrap-3-0-modal

にあるとおりサイズが決まってから
map.invalidateSize()
をよべばいいみたいで

$('.modal').on('shown.bs.modal', map.invalidateSize);

とかけば動きました

1つめの回答の 'show.bs.modal' だとモーダルアニメーション前に発火してしまうので
中途半端なサイズでレンダリングしてしまうのかも

'shown.bs.modal' をトリガーすればアニメーションが終わってサイズが決まってから invalidateSize をよべるみたいです

http://bootstrap3.cyberlab.info/javascript/modals-events.html

投稿2019/01/24 11:17

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問