folium生成的地图,会连接到开源链接,有时候会出现地图空白、地图打开链接过慢等问题。
查找原因
分析一下folium生成的地图html文件的源码。
从源码里面能看到有不少外部链接,css和js文件,这些链接都是外网开源的。每次打开html文件都需要缓冲这些外部链接。
解决办法
1.下载css、js文件存放本地
2.生成html文件后,替换原链接
使用re包正则表达式替换原生成的html的链接到本地。
###更新地图,name是地图的地址路桥
def update_mymap(name):
### 'mapnew方案1.html'##文件名
import re
# 读取生成的HTML文件
with open(name, 'r',encoding='utf-8') as f:
html = f.read()
###替换链接,r禁止转义,
rep_dict = {
r'https://.+/leaflet.js': 'mymap/js/leaflet.js',
r'https://.+/jquery.+.min.js': 'mymap/js/jquery.min.js',
r'https://.+/bootstrap.min.js': 'mymap/js/bootstrap.bundle.min.js',
r'https://.+/bootstrap.bundle.min.js': 'mymap/js/bootstrap.bundle.min.js',
r'https://.+/leaflet.awesome-markers.js': 'mymap/js/leaflet.awesome-markers.js',
r'https://.+/leaflet.css': 'mymap/css/leaflet.css',
r'https://.+css/bootstrap.min.css': 'mymap/css/bootstrap.min.css',
r'https://.+all.min.css': 'css/all.min.css',
r'https://.+css/bootstrap-theme.min.css': 'mymap/css/bootstrap-theme.min.css',
r'https://.+css/font-awesome.min.css': 'mymap/css/fontawesome.min.css',
r'https://.+/leaflet.awesome-markers.css': 'mymap/css/leaflet.awesome-markers.css',
r'https://.+/leaflet.awesome.rotate.min.css': 'mymap/css/leaflet.awesome.rotate.css',
r'https://.+/leaflet.textpath.min.js': 'mymap/js/leaflet.textpath.min.js',
r'https://.+/leaflet-ant-path.min.js': 'mymap/js/leaflet-ant-path.min.js',
}
pattern=list(rep_dict.keys())
for i in range(len(pattern)):
html = re.sub(pattern[i],rep_dict[pattern[i]], html)
# 将修改后的HTML写入新文件
with open(name, 'w', encoding='utf-8') as f:#w是清空原文件,新的文件替换源文件
f.write(html)
3.查看新的html文件
链接已经替换到本地了,地图打开很顺利,