如何将自定义 HTML 添加到 pyqtlet?
How can I add custom HTML to pyqtlet?
我的实际问题要具体得多,但我认为更笼统的答案将帮助我应对未来的需求。
我实际上需要为 leaflet
底层 pyqtlet
启用 leaflet-extras
插件。
文档说:
Download leaflet-providers.js and include it in your page after including Leaflet, e.g.:
<head>
...
<script src="http://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
<script src="js/leaflet-providers.js"></script>
</head>
然后:
// add Stamen Watercolor to map.
L.tileLayer.provider('Stamen.Watercolor').addTo(map);
当然,所有这些都是假设您正在编写一个 JavaScript 应用程序,而我在 pyqtlet
环境中。
我试图以一种非常丑陋的方式应对:
- 已将
leaflet-providers.js
下载到我的 venv/lib/python3.8/site-packages/pyqtlet/web/modules
- 将行
<script src="modules/leaflet-providers.js"></script>
添加到我的 venv/lib/python3.8/site-packages/pyqtlet/web/map.html
- 已使用
self.map.runJavaScript("L.tileLayer.provider('Stamen.Watercolor'). addTo(map)")
激活所需的 tileLayer
这确实有效,但我确信有更简洁的方法可以实现同样的效果。
欢迎任何提示。
一个简单的解决方案是阅读 .js 和 运行 它:
with open("/path/of/leaflet-providers.js") as f:
self.map.runJavaScript(f.read())
self.map.runJavaScript("L.tileLayer.provider('Stamen.Watercolor'). addTo(map)")
另一个类似的选项是使用 document.createElement:
with open("/path/of/leaflet-providers.js") as f:
code = f.read()
SCRIPT = """
const script = document.createElement('script');
script.type = 'text/javascript';
document.head.appendChild(script);
script.text = `%s`;
""" % (
code,
)
self.map.runJavaScript(SCRIPT)
self.map.runJavaScript(
"L.tileLayer.provider('Stamen.Watercolor'). addTo(map)"
)
我的实际问题要具体得多,但我认为更笼统的答案将帮助我应对未来的需求。
我实际上需要为 leaflet
底层 pyqtlet
启用 leaflet-extras
插件。
文档说:
Download leaflet-providers.js and include it in your page after including Leaflet, e.g.:
<head>
...
<script src="http://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
<script src="js/leaflet-providers.js"></script>
</head>
然后:
// add Stamen Watercolor to map.
L.tileLayer.provider('Stamen.Watercolor').addTo(map);
当然,所有这些都是假设您正在编写一个 JavaScript 应用程序,而我在 pyqtlet
环境中。
我试图以一种非常丑陋的方式应对:
- 已将
leaflet-providers.js
下载到我的venv/lib/python3.8/site-packages/pyqtlet/web/modules
- 将行
<script src="modules/leaflet-providers.js"></script>
添加到我的venv/lib/python3.8/site-packages/pyqtlet/web/map.html
- 已使用
self.map.runJavaScript("L.tileLayer.provider('Stamen.Watercolor'). addTo(map)")
激活所需的tileLayer
这确实有效,但我确信有更简洁的方法可以实现同样的效果。
欢迎任何提示。
一个简单的解决方案是阅读 .js 和 运行 它:
with open("/path/of/leaflet-providers.js") as f:
self.map.runJavaScript(f.read())
self.map.runJavaScript("L.tileLayer.provider('Stamen.Watercolor'). addTo(map)")
另一个类似的选项是使用 document.createElement:
with open("/path/of/leaflet-providers.js") as f:
code = f.read()
SCRIPT = """
const script = document.createElement('script');
script.type = 'text/javascript';
document.head.appendChild(script);
script.text = `%s`;
""" % (
code,
)
self.map.runJavaScript(SCRIPT)
self.map.runJavaScript(
"L.tileLayer.provider('Stamen.Watercolor'). addTo(map)"
)