viewof map = {
var container = html`<div style="height:800px;" style="width:800px;" id='map'></div>`
var content = html`
<div id="menu">
<input
id="streets-v11"
type="radio"
name="rtoggle"
value="streets"
checked="checked"
/>
<label for="streets">streets</label>
<input id="light-v10" type="radio" name="rtoggle" value="light" />
<label for="light">light</label>
<input id="dark-v10" type="radio" name="rtoggle" value="dark" />
<label for="dark">dark</label>
<input id="outdoors-v11" type="radio" name="rtoggle" value="outdoors" />
<label for="outdoors">outdoors</label>
<input id="satellite-v9" type="radio" name="rtoggle" value="satellite" />
<label for="satellite">satellite</label>
</div>
<div class='map-wrapper'>
${container}
<div class='map-overlay' id='features'>
Trajectory info
<div id='pd'>
<p>Tocca una traiettoria!</p>
</div>
</div>
</div>`;
yield content; // Give the container dimensions.
var map = container.value = new mapboxgl.Map({
container,
center: [10.294592, 43.597031],
zoom: 12,
style: "mapbox://styles/mapbox/streets-v10",
scrollZoom: true
});
var layerList = document.getElementById('menu');
var inputs = layerList.getElementsByTagName('input');
var traj_filter = ["all",["==", "uid", trajs_sel],["==", 'recettore', receptor_by], ["==", "evento", evento_by]];
function switchLayer(layer) {
var layerId = layer.target.id;
map.setStyle('mapbox://styles/mapbox/' + layerId);
}
for (var i = 0; i < inputs.length; i++) {
inputs[i].onclick = switchLayer;
}
invalidation.then(() => map.remove());
map.on('style.load', function (e) {
map.addSource('trajs', {
"type": "geojson",
"data": trj,
});
map.addSource('sources', {
"type": "geojson",
"data": trj2,
});
/*
map.addLayer({
"id": "circles1",
//"source": "markers",
"type": "circle",
"paint": {
"circle-radius": 10,
"circle-color": "#007cbf",
"circle-opacity": 0.5,
"circle-stroke-width": 0,
},
"filter": traj_filter,
});
*/
var marker = new mapboxgl.Marker()
.setLngLat([10.294592, 43.597031])
.addTo(map);
var center = turf.point([10.294592, 43.597031]);
var radius = 25;
var options = {
steps: 80,
units: 'meters'
};
/*
var circle = turf.circle(center, radius, options);
map.addLayer({
"id": "circle-fill",
"type": "fill",
"source": {
"type": "geojson",
"data": circle
},
"paint": {
"fill-color": "pink",
"fill-opacity": 0.5
}
});
map.addLayer({
"id": "circle-outline",
"type": "line",
"source": {
"type": "geojson",
"data": circle
},
"paint": {
"line-color": "blue",
"line-opacity": 0.5,
"line-width": 10,
"line-offset": 5
},
"layout": {
}
});
*/
// Create a popup, but don't add it to the map yet.
/*
//Prova per disegnare un cerchio sulla mappa
map.addSource("polygon", createGeoJSONCircle([10.3230767110429, 43.5853176841223], 0.5));
map.addLayer({
"id": "polygon",
"type": "fill",
"source": "polygon",
"layout": {},
"paint": {
"fill-color": "blue",
"fill-opacity": 0.6
}
});
*/
// Draws sources area
map.addLayer({
'id': 'trj2',
'type': 'fill',
'source': 'sources',
'layout': {},
'paint': {
'fill-color': '#acdd12',
'fill-opacity': 0.5
},
});
//Draw Trajectories
map.addLayer({
'id': 'trj',
'type': 'fill',
'source': 'trajs',
'layout': {},
'paint': {
'fill-color': '#ff4412',
'fill-opacity': 0.8
},
"filter": traj_filter// ["==", "uid", trajs_sel]
});
});
map.on('render', afterChangeComplete); // warning: this fires many times per second!
function afterChangeComplete () {
if (!map.loaded()) { return } // still not loaded; bail out.
// now that the map is loaded, it's safe to query the features:
map.off('render', afterChangeComplete); // remove this handler now that we're done.
}
map.on('mousemove', function(e) {
var states = map.queryRenderedFeatures(e.point, {
layers: ['trj']
})
var pd = document.getElementById('pd')
if (states.length > 0) {
var {end, evento, recettore, start, uid} = states[0].properties
//var {name, density} = states[0].properties
//pd.innerHTML = `<h3><strong>${name}</strong></h3><p><strong><em>${density}</strong> people per square
pd.innerHTML = `<strong>Recettore: ${recettore}<br> evento: ${evento}</strong><br>start at: ${start}<br>end at: ${end}<br> id: ${uid}</p>`
console.log(states[0].properties);
} else {
//document.getElementById('pd').innerHTML = `<p>Hover over a state!</p>`
}
})
}