前提・実現したいこと
やりたいことは、
①地図上のマーカーをクリック後、地図の横に縮小した画像を表示させる。
②画像クリックでlightbox plusでポップアップする。
①はできています。
②はポップアップせず、新しいページに飛んで画像が表示されてしまいます。
ポップアップもされていません。
画像をポップアップで表示させた後に、画像を再拡大させたいため、
lightboxではなく、lightbox plusを使おうと考えています。
ご教示よろしくお願い致します。
ページ補足情報
以下がlightbox plusのダウンロード元になります。
この中のresourceフォルダを全て入れています。
http://serennz.sakura.ne.jp/toybox/lightbox/?ja
該当のソースコード
html
1<!--index.html--> 2{% load static %} 3<!DOCTYPE html> 4<html lang="en"> 5<head> 6 7 <meta charset="utf-8" /> 8 <title>GeoDjango Hands-on</title> 9 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 10 11 <script 12 src="https://code.jquery.com/jquery-3.3.1.min.js" 13 integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" 14 crossorigin="anonymous"></script> 15 16 <link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" 17 integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" 18 crossorigin=""/> 19 20 <script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js" 21 integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" 22 crossorigin=""></script> 23 24<!--lightbox plus--> 25 <link rel="stylesheet" type="text/css" href="{% static 'main/resource/lightbox.css' %}" media="screen,tv" /> 26 <script type="text/javascript" charset="UTF-8" src="{% static 'main/resource/lightbox_plus.js' %}"></script> 27<!--lightbox plus--> 28 29</head> 30<body> 31 <div id="map" ><!--style="width: 100%; height: 600px">--></div> 32 <script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script> 33 34 <div id="aaa"></div> 35 36 <link rel="stylesheet" href="{% static 'main/css/app.css' %}"> 37 <script type="text/javascript" src="{% static 'main/js/app.js' %}"></script> 38 39</body> 40</html>
javascript
1// app.js 2// 地理院地図 標準地図 3var std = L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', 4 {id: 'stdmap', attribution: "<a href='http://portal.cyberjapan.jp/help/termsofuse.html' target='_blank'>国土地理院</a>"}) 5// OSM 6var osm = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', 7 { id: 'osmmap', attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors' }); 8 9var baseMaps = { 10 "地理院地図 標準地図" : std, 11 "OSM" : osm, 12}; 13 14var map = L.map('map', {layers: [osm]}); 15map.setView([34.706187, 135.208398], 12); 16 17// コントロール 18L.control.layers(baseMaps, null, {collapsed:true}).addTo(map); 19 20//スケールコントロール 21L.control.scale({imperial: false}).addTo(map); 22 23var marker = L.marker([34.706187, 135.208398]).addTo(map); 24// img_showへ 25marker.on("click",function(){img_show();});
javascript
1// img.js 2function img_show(){ 3 var li=["img1.jpeg","img2.jpeg"]; 4 5 var target = document.getElementById('aaa'); 6 // 一旦 空にしておく 7 target.innerHTML=""; 8 9 // 拡張子を除去 10 for(var i in li){ 11 var title = li[i].split(".",1); 12 // id=aaaの後にinsert 13 var h= 14 '<p>'+title+'</p>' 15 +'<a rel="lightbox1" href="/media/image/'+li[i]+'" title='+ title +'>' 16 +'<img src="/media/image/'+li[i]+'" width="80%"></a></br>'; 17 target.insertAdjacentHTML("beforeend",h); 18 }; 19};
試したこと
index.htmlの</body>の手前に
<script type="text/javascript" src="{% static 'main/js/img.js' %}"></script>を追加してimg.jsを呼び出す。img.jsの中はfunction img_show()を削除する。
つまり、マーカークリックで縮小画像を表示させるのではなく、html読み込み時に地図と一緒に縮小画像も表示させる。
そうするとlightbox plusが機能し、画像がポップアップされます。
最初から表示させるのとinsertするのでは何か違うのでしょうか?
javascript
1// img.js 2var li=["img1.jpeg","img2.jpeg"]; 3 4var target = document.getElementById('aaa'); 5// 一旦 空にしておく 6target.innerHTML=""; 7 8// 拡張子を除去 9for(var i in li){ 10 var title = li[i].split(".",1); 11 // id=aaaの後にinsert 12 var h= 13 '<p>'+title+'</p>' 14 +'<a rel="lightbox1" href="/media/image/'+li[i]+'" title='+ title +'>' 15 +'<img src="/media/image/'+li[i]+'" width="80%"></a></br>'; 16 target.insertAdjacentHTML("beforeend",h); 17};
補足情報(FW/ツールのバージョンなど)
macOS catalina 10.15.4
django 3.0.7
回答1件
あなたの回答
tips
プレビュー