ClojureScript の react-leaflet を使用しようとしていますが、タイルのレンダリング方法に問題があります。
- 一部のタイルが表示されない
- 異なる都市で隣り合わせに表示されるタイルがあります
ここに私が持っているコードがあります:
(ns carder-devcards.map
(:require [taoensso.timbre :as timbre]
[cljsjs.react-leaflet] ;; js/ReactLeaflet
)
(:require-macros [devcards.core :as dc :refer [defcard]]))
(defn build
([component props]
(build component props (array)))
([component props & children]
(.createElement js/React
component
(clj->js props)
(array children))))
(def tile-layer (partial build js/ReactLeaflet.TileLayer))
(def leaflet-map (partial build js/ReactLeaflet.Map))
(def marker (partial build js/ReactLeaflet.Marker))
(def popup (partial build js/ReactLeaflet.Popup))
(defcard simple-leaflet
(fn [state]
(let [{:keys [pos zoom] :as st} @state
tl (tile-layer {:url "http://{s}.tile.osm.org/{z}/{x}/{y}.png"
:attribution "© <a href=\"http://osm.org/copyright\">OpenStreetMap</a> contributors"})
mk (marker {:position pos})]
(leaflet-map {:center pos :zoom zoom}
tl
mk
)))
{:pos [51.505, -0.09]
:zoom 13}
{:header true})
そして、これが私がローカルで行った結果です。
注: ブラウザのサイズを変更すると効果があるように見えるので、これも css の問題である可能性があります (?)。私は効果なしで以下を含めようとしました:
.leaflet-container {
height: 400px;
width: 100%;
}