Я следую этой брошюре учебник , чтобы применить управление слоями для набора данных CSV, используя omnivore.csv .Хотя мне удалось воспроизвести карту, которая ( выглядит следующим образом ), мне не повезло, добавив значки в качестве группы слоев для управления ей, как показано здесь .
Это то, что я пробовал до сих пор:
<!DOCTYPE html>
<html>
<head>
<title>leaflet-map-csv</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.0.3/dist/leaflet.css"/>
<script src="https://unpkg.com/leaflet@1.0.3/dist/leaflet.js"></script>
<script src='https://api.tiles.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.3.1/leaflet-omnivore.min.js'></script>
<style>
body { margin:0; padding:0; }
#map { position: absolute; top:0; bottom:0; right:0; left:0; }
</style>
</head>
<body>
<div id="map"></div>
<script>
var map = L.map('map', {
center: [41.77, -72.69],
zoom: 8,
scrollWheelZoom: true,
layers: [grayscale]
});
var grayscale = L.tileLayer('https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png', {
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>, © <a href="https://carto.com/attribution">CARTO</a>'}).addTo(map);
var baseMaps = {
"Grayscale": grayscale
};
var overlayMaps = {
"Cities": colleges
};
var customLayer = L.geoJson(null, {
onEachFeature: function(feature, layer) {
layer.bindPopup(feature.properties.Title);
}
});
var colleges = omnivore.csv('https://raw.githubusercontent.com/JackDougherty/leaflet-map-csv/master/data.csv', null, customLayer)
.on('ready', function() {
map.fitBounds(colleges.getBounds());
}).addTo(map);
var cities = L.layerGroup([customLayer]);
L.control.layers(baseMaps, overlayMaps).addTo(map);
</script>
</body>
</html>