Skip to main content

Layer highlight

When the mouse moves into the point layer, the layer is highlighted

show
<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8" />
<title>Highlight layer</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
<style>
body {
margin: 0;
padding: 0;
}

#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
</style>
<script src="https://delivery.mapmost.com/cdn/sdk/webgl/v9.16.0/mapmost-webgl-min.js"></script>
</head>

<body>
<div id="map"></div>
<script>
let map = new mapmost.Map({
container: 'map',
style: "<your style url>",
center: [120.7090846643357,31.32785575356732],
zoom: 14.62676686804516,
pitch: 56.487251121569024,
bearing: -49.30626584095007,
userId: '***', // Authorization code
});

map.on('load', function () {
map.addSource('roadCross', {
"type": "geojson",
data: "../example_data/road_cross.geojson"
})
map.addLayer({
"id": "roadCross",
"type": "circle",
"source": "roadCross",
"layout": {},
"paint": {
"circle-color": "#00eeff",
"circle-radius": 10
}
})
//Create a new highlight layer for highlighting
map.addLayer({
"id": "roadCrossHighlight",
"type": "circle",
"source": "roadCross",
"layout": {},
"paint": {
"circle-color": "#f2ff03",
"circle-radius": 10,
},
"filter": ['==', 'rc_id', '']
})
// Click on roadCross to highlight
map.on('mouseenter', 'roadCross', function (e) {
// When clicking roadCross, modify the filter of the highlight layer so that the highlight layer can be displayed
// 1. Get rs_id
let { rc_id } = e.features[0].properties;
// 2. Set filter attribute
map.setFilter("roadCrossHighlight", ['==', 'rc_id', rc_id])
map.getCanvas().style.cursor = 'pointer'
})
map.on('mouseleave','roadCross',function(e){
// 2. Set filter attribute
map.setFilter("roadCrossHighlight", ['==', 'rc_id', ''])
map.getCanvas().style.cursor = ''
})
})
</script>
</body>

</html>