0

我有一个嵌入了传单地图的网页。我设法为用户创建了一个下拉菜单,以从 Maptiler.com 中选择不同的地图类型。这可以很好地使用 maptile 地址作为视图中的上下文传递,然后在我的模板中指定如下:-

L.tileLayer('{{ context.maptileaddress }}', {attribution: '<a href="https://www.maptiler.com/copyright/" target="_blank">&copy; MapTiler</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">&copy; OpenStreetMap contributors</a>',}).addTo(map);

然后我决定我可能想使用其他 maptile 提供程序,例如 Stamen,这需要我传递整个 tilelayer 参数,如下所示:-

L.tileLayer('{{ context.maptilefullkey }}).addTo(map);

其中一个有效的“maptilefullkey”是:-

'https://stamen-tiles-{s}.a.ssl.fastly.net/toner/{z}/{x}/{y}.{ext}', {
            attribution: 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, <a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a> &mdash; Map data &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
            subdomains: 'abcd',
            minZoom: 1,
            maxZoom: 18,
            ext: 'png'
            }

当我将此文本逐字嵌入到 tileLayer 方法中时,maptile 显示得很好 - 请参阅我的打印。

当它被硬编码到 tileLayer() 方法中时,maptile 工作正常

还可以看到我已经成功传递 {{ context.maptilefullkey }}给模板,并且成功打印在了网页的底部。它显然与有效密钥完全匹配。

但是当我将它作为变量传递时L.tileLayer({{ context.maptilefullkey }}).addTo(map);,maptile 完全消失了。

为什么会发生这种情况,我该如何解决?

字符串以大括号结尾,然后在关闭上下文的双大括号之前是否会产生问题?或者是导致问题的归因?

非常感谢这个社区的帮助!

菲尔#anoobinneed

4

1 回答 1

0

我最终设法解决了这个问题。这都是我对这个相当陌生的一部分。

我需要将标签“安全”添加到从中获取完整密钥的位置:-

L.tileLayer({{ context.maptilefullkey | safe }}).addTo(map);

它在之前只传递 tileaddress 时工作,但显然 fullkey 有一个或多个“不安全”字符,我需要指示模板完全按原样传递字符串。

这在文档中得到了很好的解释:-

https://docs.djangoproject.com/en/3.0/howto/custom-template-tags/

我希望这可以帮助将来的人。

菲尔

于 2020-01-30T11:46:08.273 回答