如何在 mapbox 上使用 ominvore 重新加载 csv 标记
How to reload csv marker using ominvore on mapbox
我是编码新手,我想问一下是否有一种方法可以使用 omnivore.csv
从 csv 文件重新加载 mapbox 标记
我从 mapbox.js here
中获取了这个例子
我试图将 omnivore.csv 包装在一个函数中并使用 setInterval 但这会导致标记相互堆叠。
我想 refresh/reload 每 4 分钟标记一次。
到目前为止我有这个:
<script src='https://api.mapbox.com/mapbox.js/v3.2.1/mapbox.js'></script>
<script src='https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js'></script>
<link href='https://api.mapbox.com/mapbox.js/v3.2.1/mapbox.css' rel='stylesheet' />
<div id='map' style="height: 680px; width: 100%"></div>
<script>
L.mapbox.accessToken = 'pk.eyJ1IjoiamhlcmVpcmEiLCJhIjoiY2p2aGxrajBqMDR5cDQzbzBrdTNqdmRteCJ9.tPKc_EYywojs5R-KEcKLGg'
map = L.mapbox.map('map')
map.setView([12.51602, -69.9719], 12);
L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11').addTo(map);
var geojsonLayer = L.geoJson().addTo(map);
omnivore.csv('nodes.csv', null, geojsonLayer)
.on('ready', function () {
this.eachLayer ( function (marker) {
if (marker.toGeoJSON().properties.status === 'Online') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#29A912',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Offline') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#be2626',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Warning') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#E7BA14',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Ranged') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#1487E7',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Bandwidth') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#8114E7',
'marker-size': 'small'
}));
}
else {
marker.setIcon(L.mapbox.marker.icon({}));
}
marker.bindPopup(marker.toGeoJSON().properties.title + ', ' +
marker.toGeoJSON().properties.status);
})
})
</script>
我的 csv 文件如下所示:
“纬度”,“经度”,“标题”,“状态”
“12.5218966025141”,“-70.0345627016134”,“MN BLUE CONDO”,“在线”
“12.5478471267241”,“-70.057234261884”,“MN OCEANIA”,“在线”
“12.47255415072”,“-69.960976765474”,“MN SB FCCA”,“在线”
“12.5347423282743”,“-70.0194866667518”,“MN SP FCCA”,“在线”
在重新加载标记之前清除 geojsonlayer。
var geojsonLayer = L.geoJson().addTo(map);
loadCSV();
setTimeout(function(){
loadCSV();
})
}, 4*60*100); //4min
function loadCSV(){
geojsonLayer.clearLayers()
omnivore.csv('nodes.csv', null, geojsonLayer)
.on('ready', function () {
this.eachLayer ( function (marker) {
if (marker.toGeoJSON().properties.status === 'Online') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#29A912',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Offline') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#be2626',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Warning') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#E7BA14',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Ranged') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#1487E7',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Bandwidth') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#8114E7',
'marker-size': 'small'
}));
}
else {
marker.setIcon(L.mapbox.marker.icon({}));
}
marker.bindPopup(marker.toGeoJSON().properties.title + ', ' +
marker.toGeoJSON().properties.status);
})
}
我是编码新手,我想问一下是否有一种方法可以使用 omnivore.csv
从 csv 文件重新加载 mapbox 标记我从 mapbox.js here
中获取了这个例子我试图将 omnivore.csv 包装在一个函数中并使用 setInterval 但这会导致标记相互堆叠。
我想 refresh/reload 每 4 分钟标记一次。 到目前为止我有这个:
<script src='https://api.mapbox.com/mapbox.js/v3.2.1/mapbox.js'></script>
<script src='https://api.mapbox.com/mapbox.js/plugins/leaflet-omnivore/v0.2.0/leaflet-omnivore.min.js'></script>
<link href='https://api.mapbox.com/mapbox.js/v3.2.1/mapbox.css' rel='stylesheet' />
<div id='map' style="height: 680px; width: 100%"></div>
<script>
L.mapbox.accessToken = 'pk.eyJ1IjoiamhlcmVpcmEiLCJhIjoiY2p2aGxrajBqMDR5cDQzbzBrdTNqdmRteCJ9.tPKc_EYywojs5R-KEcKLGg'
map = L.mapbox.map('map')
map.setView([12.51602, -69.9719], 12);
L.mapbox.styleLayer('mapbox://styles/mapbox/streets-v11').addTo(map);
var geojsonLayer = L.geoJson().addTo(map);
omnivore.csv('nodes.csv', null, geojsonLayer)
.on('ready', function () {
this.eachLayer ( function (marker) {
if (marker.toGeoJSON().properties.status === 'Online') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#29A912',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Offline') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#be2626',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Warning') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#E7BA14',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Ranged') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#1487E7',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Bandwidth') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#8114E7',
'marker-size': 'small'
}));
}
else {
marker.setIcon(L.mapbox.marker.icon({}));
}
marker.bindPopup(marker.toGeoJSON().properties.title + ', ' +
marker.toGeoJSON().properties.status);
})
})
</script>
我的 csv 文件如下所示:
“纬度”,“经度”,“标题”,“状态”
“12.5218966025141”,“-70.0345627016134”,“MN BLUE CONDO”,“在线”
“12.5478471267241”,“-70.057234261884”,“MN OCEANIA”,“在线”
“12.47255415072”,“-69.960976765474”,“MN SB FCCA”,“在线”
“12.5347423282743”,“-70.0194866667518”,“MN SP FCCA”,“在线”
在重新加载标记之前清除 geojsonlayer。
var geojsonLayer = L.geoJson().addTo(map);
loadCSV();
setTimeout(function(){
loadCSV();
})
}, 4*60*100); //4min
function loadCSV(){
geojsonLayer.clearLayers()
omnivore.csv('nodes.csv', null, geojsonLayer)
.on('ready', function () {
this.eachLayer ( function (marker) {
if (marker.toGeoJSON().properties.status === 'Online') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#29A912',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Offline') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#be2626',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Warning') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#E7BA14',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Ranged') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#1487E7',
'marker-size': 'small'
}));
}
else if (marker.toGeoJSON().properties.status === 'Bandwidth') {
marker.setIcon(L.mapbox.marker.icon({
'marker-color': '#8114E7',
'marker-size': 'small'
}));
}
else {
marker.setIcon(L.mapbox.marker.icon({}));
}
marker.bindPopup(marker.toGeoJSON().properties.title + ', ' +
marker.toGeoJSON().properties.status);
})
}