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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Leaflet

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

2346閲覧

LeafletでGoogleマップを表示したいが、表示されない。

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Leaflet

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

JavaScript

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/15 10:31

編集2020/04/17 05:38

前提・実現したいこと

地元の飲食店のテイクアウト情報について、Googleマップを使ったまとめサイトを作ろうとしています。
Googleマップと連携する際、django-leafletというものが使えるのではないかと思いました。
https://pypi.org/project/django-leaflet/

まずは、Djangoとの連携の前にLeafletの使い方を把握しようと思い、下記のQuickStartを参考にしてやってみようとしました。
https://leafletjs.com/examples/quick-start/

発生している問題・エラーメッセージ

実際に起動してみましたが、地図は表示されません。

ブラウザコンソールを見ると、下記のエラーが出ていました。(しかし、こちらのエラーは他のサイトを見ても出ていることに、後になって気づきました。本件の質問とは関係無さそうだと判断しました。そのため、申し訳ありませんが、質問のタイトルも修正させて頂きます。)

DevTools failed to parse SourceMap

エラーメッセージ

該当のソースコード

※ご回答を頂き、現在は修正しています(下記「ご回答を踏まえた修正」に記載)

html

1{% extends "base.html" %} 2{% load static %} 3{% load bootstrap4 %} 4{% block extrahead %} 5<link rel="stylesheet" type="text/css" href="{% static 'css/main.css' %}"> 6<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" 7 integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin=""/> 8<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js" 9 integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""> 10<script type="text/javascript"> 11var mymap = L.map('mapid').setView([51.505, -0.09], 13); 12</script> 13{% endblock %} 14{% block content %} 15<div id="mapid"></div> 16{% endblock %}

補足情報(FW/ツールのバージョンなど)

開発環境で作業をしており、
http://127.0.0.1:8000/
で起動しています。
何のエラーも出ておらず、Djangoの起動自体には問題ないと思います。
関係無いかもしれませんが、バージョンを記載します。
Django 3.0.5
django-bootstrap4 1.1.1
django-leaflet 0.26.0

ご回答を踏まえた修正

kei344さんから頂いたアドバイスに従って、JavaScriptのコードを読み込む位置を、<div id="mapid">の後ろに持って行きました。
また、

<div id="mapid" style="height: 150px"></div>

という形で、cssを追記しました。
修正後のコードは、下記の通りです。

html

1{% extends "base.html" %} 2{% load static %} 3{% load bootstrap4 %} 4{% block extrahead %} 5<link rel="stylesheet" type="text/css" href="{% static 'css/main.css' %}"> 6<link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" 7 integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin=""/> 8{% endblock %} 9{% block content %} 10<div id="mapid" style="height: 150px"></div> 11<script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js" 12 integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""> 13<script type="text/javascript"> 14var mymap = L.map('mapid').setView([51.505, -0.09], 13); 15</script> 16{% endblock %}

その結果、
Leafletの状況
という表示がなされるようになりました。
しかし、まだ、地図は表示されない状況です。

何か、お気づきの点がありましたら、ご教示頂ければ幸いです。よろしくお願い致します。

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

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

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

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

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

kei344

2020/04/17 03:59

回答が付いた質問の編集は慎重に行ってください。質問文のコードについて回答にて指摘があった場合は「追記」し、元のコードを編集する場合も「直したこと」がわかるようにしてください。後から見た人から見て、現在の回答が「無いコードに対しての指摘」になり、意味がわからなくなります。
退会済みユーザー

退会済みユーザー

2020/04/17 04:09

申し訳ありません。修正した箇所が分かるように記載します。
guest

回答1

0

L.map('mapid')をHTMLのロードを待つようにするか、そのscriptごと<div id="mapid"></div>の後ろに持っていってみてください。

js

1var mymap; 2document.addEventListener( 'DOMContentLoaded' , function( e ) { 3 mymap = L.map('mapid').setView([51.505, -0.09], 13); 4}, false ); // HTMLのロードを待つ

【Window: DOMContentLoaded イベント - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Window/DOMContentLoaded_event

HTML

1<div id="mapid"></div> 2<script> 3var mymap = L.map('mapid').setView([51.505, -0.09], 13); 4</script><!-- 後ろに持っていく -->

また、スタイルがあたっていない可能性もあります。その場合は下記のようにすれば表示されます。

HTML

1<div id="mapid" style="height: 150px"></div>

投稿2020/04/17 02:55

kei344

総合スコア69398

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

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

退会済みユーザー

退会済みユーザー

2020/04/17 03:44

ありがとうございます。 ご教示頂いた通りコードを直したら、 +- Leaflet と表示されるようになりました。 しかし、まだ地図は表示されないままです…
退会済みユーザー

退会済みユーザー

2020/04/17 03:45

現状の形で、質問を修正させて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問