2015-07-18 3 views
3

Я просто следил за этим tutorial о Folium - библиотеке Python, которая делает веб-карты. В учебнике говорится, что веб-карта может быть создана только с этими тремя строками кода Python:Простая страница HTML/Javascript, созданная Python, отображается как пусто

import folium 
map_osm = folium.Map(location=[45.5236, -122.6750]) 
map_osm.create_map(path='osm.html') 

This это как osm.html должен выглядеть в соответствии с учебника.

Однако файл osm.html отображается в виде пустой веб-страницы в моих браузерах.

Вот исходный код моего файла osm.html, если это помогает:

<!DOCTYPE html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.css" /> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.3/leaflet.js"></script> 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"> 
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 

    <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> 

    <link rel="stylesheet" href="//rawgit.com/lvoogdt/Leaflet.awesome-markers/2.0/develop/dist/leaflet.awesome-markers.css"> 
    <script src="//rawgithub.com/lvoogdt/Leaflet.awesome-markers/2.0/develop/dist/leaflet.awesome-markers.js"></script> 


    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/0.4.0/MarkerCluster.Default.css"> 
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/0.4.0/MarkerCluster.css"> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/0.4.0/leaflet.markercluster-src.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/0.4.0/leaflet.markercluster.js"></script> 

    <link rel="stylesheet" href="//birdage.github.io/Leaflet.awesome-markers/dist/leaflet.awesome.rotate.css"> 






    <style> 

     html, body { 
     width: 100%; 
     height: 100%; 
     margin: 0; 
     padding: 0; 
     } 

     #map { 
     position:absolute; 
     top:0; 
     bottom:0; 
     right:0; 
     left:0; 
     } 

    </style> 
</head> 

<body> 

    <div class="folium-map" id="folium_62f4bc18e7a1444b908b0413335a38b1" style="width: 960px; height: 500px"></div> 

    <script> 



     var base_tile = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
      maxZoom: 18, 
      minZoom: 1, 
      attribution: 'Map data (c) <a href="http://openstreetmap.org">OpenStreetMap</a> contributors' 
     }); 

     var baseLayer = { 
     "Base Layer": base_tile 
     }; 

     /* 
     addition of the wms layers 
     */ 



     /* 
     addition of the tile layers 
     */ 


     /* 
     list of layers to be added 
     */ 
     var layer_list = { 

     }; 

     /* 
     Bounding box. 
     */ 
     var southWest = L.latLng(-90, -180), 
      northEast = L.latLng(90, 180), 
      bounds = L.latLngBounds(southWest, northEast); 

     /* 
     Creates the map and adds the selected layers 
     */ 
     var map = L.map('folium_62f4bc18e7a1444b908b0413335a38b1', { 
             center:[20, 40], 
             zoom: 10, 
             maxBounds: bounds, 
             layers: [base_tile] 
            }); 

     L.control.layers(baseLayer, layer_list).addTo(map); 

     //cluster group 
     var clusteredmarkers = L.markerClusterGroup(); 
     //section for adding clustered markers 

     //add the clustered markers to the group anyway 
     map.addLayer(clusteredmarkers); 













    </script> 

</body> 
+0

Я просто попробовал запустить код, и он отлично работал - по крайней мере, используя Safari 8.0.7. – aaplmath

+0

@aaplmath Я использую Firefox и Chrome. Вы пробовали HTML-код, который я разместил, или вы создали свой собственный HTML, запустив код Python? – multigoodverse

+0

Я пробовал HTML, который вы опубликовали. – aaplmath

ответ

2

В HTML вы в курсе, все <link> и <script> теги использовать protocol relative URLs.

Если браузер просматривает эту текущую страницу через HTTPS, он запрашивает этот актив с протоколом HTTPS, иначе он обычно запрашивает его с помощью HTTP.

Конечно, если вы просматриваете файл локально, он попытается запросить файл с протоколом file://.

Я думаю, что вы просматривали файл локально, поэтому браузер попытался найти несуществующие файлы сценариев/CSS на вашем компьютере. Просто добавьте http:, прежде чем все ссылки будут работать.

2

html-файлы, созданные folium, предназначены для просмотра через протокол http. Как ответил пользователь880772, они не будут работать, если вы откроете файл непосредственно в своем браузере (метод file://), если вы вручную не измените все относительные URL-адреса в URL-адресах, добавленных http://.

Чтобы продолжить просмотрев файл через HTTP (без необходимости редактирования HTML): в терминале, в каталог, содержащий файл HTML, выполните команду:

# Python 2.x 
python -m SimpleHTTPServer 

или

# Python 3.x 
python -m http.server 

Затем посетите http://localhost:8000/ в своем браузере и перейдите к html-файлу, созданному folium.

Для получения дополнительной информации см. https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally.

Смежные вопросы