【问题标题】:Load a leaflet map from a link从链接加载传单地图
【发布时间】:2015-07-02 21:01:05
【问题描述】:

我正在尝试从链接加载传单地图。如果我点击第一个链接,地图会加载,然后如果我点击第二个链接,地图不会加载。两个链接调用相同的函数。我无法理解发生了什么。 提前致谢!

<!DOCTYPE html>
<html>
<head>
    <title>Simple Leaflet Map</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7/leaflet.css" />
</head>
<body>
    <a href="#" onclick="showMap('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png')">OpenStreetMap</a><br>
    <a href="#" onclick="showMap('http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png')">Thunderforest</a><hr>
    <div id="map" style="width: 600px; height: 400px"></div>

    <script src="http://cdn.leafletjs.com/leaflet-0.7/leaflet.js"> </script>
    <script>
        function showMap(url){
            var map = L.map('map').setView([-33.4387,-70.647], 14);
            var mapLink = '<a href="http://openstreetmap.org">OpenStreetMap</a>';           

            L.tileLayer(url, {
            attribution: 'Map data &copy; ' + mapLink,
            maxZoom: 18,
            }).addTo(map);
        }
    </script>
</body>
</html>

【问题讨论】:

    标签: javascript leaflet


    【解决方案1】:

    您收到错误消息,因为您正在尝试初始化地图容器一秒钟。以下是解决此问题的方法:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Simple Leaflet Map</title>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7/leaflet.css" />
    </head>
    <body>
        <a href="#" onclick="showMap('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png')">OpenStreetMap</a><br>
        <a href="#" onclick="showMap('http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png')">Thunderforest</a><hr>
        <div id="map" style="width: 600px; height: 400px"></div>
    
        <script src="http://cdn.leafletjs.com/leaflet-0.7/leaflet.js"> </script>
        <script>
    
           var map;
    
            function showMap(url){
                if(!map)
                {  
                   map = L.map('map').setView([-33.4387,-70.647], 14);
                }
    
                var mapLink = '<a href="http://openstreetmap.org">OpenStreetMap</a>';           
    
                L.tileLayer(url, {
                attribution: 'Map data &copy; ' + mapLink,
                maxZoom: 18,
                }).addTo(map);
            }
        </script>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2017-06-26
      • 1970-01-01
      • 2016-12-14
      • 2017-03-04
      • 1970-01-01
      • 2020-03-20
      • 2016-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多