【发布时间】:2020-06-14 15:02:31
【问题描述】:
我正在尝试结合传单找到进入 Svelte 的方法。我卡住的地方是如何正确地将传单组件拆分为文件。为了学习,我正在尝试用 svelte 构建官方的official leaflet quickstart。
这就是我的 app.svelte 的样子:
<script>
import L from 'leaflet';
import { onMount } from "svelte";
import { Circle } from "./components/Circle.svelte";
let map;
onMount(async () => {
map = L.map("map");
L.tileLayer("https://a.tile.openstreetmap.org/{z}/{x}/{y}.png ", {
attribution:
'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',
maxZoom: 18,
tileSize: 512,
zoomOffset: -1
}).addTo(map);
map.setView([51.505, -0.09], 13);
Circle.addTo(map);
});
</script>
<style>
html,body {
padding: 0;
margin: 0;
}
html, body, #map {
height: 100%;
width: 100vw;
}
</style>
<svelte:head>
<link
rel="stylesheet"
href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css"
integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
crossorigin="" />
</svelte:head>
<div id="map" />
和我的圈子组件:
<script context="module">
import L from 'leaflet';
export let map_obj;
export let Circle = L.circle([51.508, -0.11], {
color: "red",
fillColor: '#f03',
fillOpacity: 0.5,
radius: 500
});
</script>
虽然这有效,但我认为考虑每个组件并使用Circle.addTo(map); 将其添加到地图中并不有效。如何将地图对象传递给圆形组件,或者是否有更好的模式来构建包含多个组件的地图?
注意:我知道svelte/leaflet,但喜欢从头开始学习。
【问题讨论】: