如何将自定义 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 环境中。

我试图以一种非常丑陋的方式应对:

确实有效,但我确信有更简洁的方法可以实现同样的效果。

欢迎任何提示。

一个简单的解决方案是阅读 .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)"
    )