leaflet - 在 Clojurescipt 代码中部分加载 React-leaflet 映射
问题描述
我正在使用 react-leaflet、clojurescript 和 hx 在网页上绘制地图。但只是部分加载。我在一个命名空间中创建组件,但在另一个命名空间中调用它。我还尝试仅在初始化后才安装地图。
;; In the map name space
(hx/defnc draw-map [props]
(let [!ref (react/useRef nil)
[!map-view map-view-update-fn] (react/useState nil)]
(hooks/useEffect
(fn []
(when-not !map-view (let [m (-> js/L
(.map !ref.current)
(.setView #js [-26.718 30.384] 8))
tile1 (-> js/L
(.tileLayer tile-layer-url
#js{:maxZoom 13
:attribution "© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors"}))])
geo-json-data (-> js/L (.geoJSON (clj->js data/geojson))))
(.addTo tile1 m)
(.addTo geo-json-data m)
(.bindPopup geo-json-data get-loc-name)
(.invalidateSize m)
(.setView m #js[-26.718 30.384] 8)
(fn create-map-cleanup []
(.remove m)))
[!ref])
[:div {:ref !ref} "Map loading ..."]))
在一个单独的命名空间中,我创建了一个用于渲染地图的新 hx 组件。
(hx/defnc map-view [props]
[map/draw-map])
解决方案
在我的索引文件中添加 react-leaflet 样式表,我添加了:
[:link {:rel "stylesheet"
:href "https://unpkg.com/leaflet@1.5.1/dist/leaflet.css"
:integrity "sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
:crossorigin ""}]]
推荐阅读
- python - 获取字符串及其子字符串的所有组合
- c# - DBF dBase - Where 子句日期运算符/操作数类型不匹配错误
- sql - 即使某些节点不存在,也将所有 XML 导入 SQL 表
- html - 在另一个网站上使用 YouTube 视频 URL 是一种良好的网页设计实践吗?
- ios - Swift 4可解码解析数组中的json数据
- oracle - Oracle Apex - 如何在 Centos 7 上使用 APEXExport 18.1 导出所有应用程序
- android - 如果目录不存在,则 Firebase 错误消息
- arrays - Excel中计算两个数组相减的结果是否超过某个值
- ios - CoreAnimation:[EAGLContext renderbufferStorage:fromDrawable:] 是从非主线程调用的
- asp.net-mvc - razor actionLink 中的 asp.net mvc 可选参数