如何将地图插入弹出框-引导程序

问题描述 投票:0回答:1

我需要一个可以在其体内显示地图的弹出框。我做了这个基本的例子:

    <!DOCTYPE html>
<html>

<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="" />
  <script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""></script>

  <link rel="stylesheet" href="css/style.css">
  <script src="script/script.js"></script>
</head>

<body>
  <div class="container">
    <h3>Popover Example</h3>
    <a href="#" data-toggle="popover">Toggle popover</a>
  </div>

  <script>
    let script = `
    <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);

    L.marker([51.5, -0.09]).addTo(map)
    .bindPopup('A pretty CSS3 popup.<br> Easily customizable.')
    .openPopup();
    <\/script>`;

    console.log(script);
    $(document).ready(function() {
      $('[data-toggle="popover"]').popover({
        title: 'A nice map inside a popover!',
        content: "<div id='map' style='background: gray;'></div>" + script,
        html: true
      });

    });
  </script>
</body>

</html>

它发送html内容,其中包含该传单地图的div和脚本。没用我不确定这种方法是否行得通,也许您知道单击表单元格或任何其他元素后可以拥有地图的更好方法。

javascript jquery bootstrap-4 leaflet
1个回答
0
投票

请检查以下代码段:

      $(document).ready(function() {
           $('[data-toggle="popover"]').popover({
             title: 'A nice map inside a popover!',
             content: "<div id='map' style='background: gray;'></div>",
             html: true
           });
           
           $("[data-toggle=popover]").on('shown.bs.popover', function () {
         
         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);
         
         L.marker([51.5, -0.09]).addTo(map)
         .bindPopup('A pretty CSS3 popup.<br> Easily customizable.')
         .openPopup();
         });
         
         });
 #map{
         height:300px;
         width:300px;
         }
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
      <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="" />
      <script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""></script>
  
      <div class="container">
         <h3>Popover Example</h3>
         <a href="#" data-toggle="popover">Toggle popover</a>
      </div>

希望这对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.