首页 > 解决方案 > 如何将自定义 HTML 添加到 pyqtlet?

问题描述

我的实际问题要具体得多,但我认为更一般的答案将有助于我应对未来的需求。

我实际上需要为底层启用leaflet-extras插件。leafletpyqtlet

文档说:

下载 Leaflet-providers.js 并在包含 Leaflet 后将其包含在您的页面中,例如:

<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环境中。

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

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

欢迎任何提示。

标签: javascriptpyqtleafletpyqtlet

解决方案


A trivial solution is to read the .js and run it:

with open("/path/of/leaflet-providers.js") as f:
    self.map.runJavaScript(f.read())
    self.map.runJavaScript("L.tileLayer.provider('Stamen.Watercolor'). addTo(map)")

Another similar option is to use 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)"
    )

enter image description here


推荐阅读