如何使用 JavaScript 在 mapbox 中监听不同的点击事件?以下是使用地图框显示地图的代码。
有人可以建议如何收听区分土地和水体的点击事件吗?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Display a map on a webpage</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
<link href="https://api.mapbox.com/mapbox-gl-js/v2.2.0/mapbox-gl.css" rel="stylesheet">
<script src="https://api.mapbox.com/mapbox-gl-js/v2.2.0/mapbox-gl.js"></script>
<style>
body { margin: 0; padding: 0; }
#map { position: absolute; top: 0; bottom: 0; width: 100%; }
</style>
</head>
<body>
<div id="map"></div>
<script>
mapboxgl.accessToken = 'pk.eyJ1IjoiZGphZWJvIiwiYSI6ImNrbzJoYjhodTAxeDUyb211eTF2anZ0bmQifQ.62m9LNQhEPZNCwqxEW9pPQ';
var map = new mapboxgl.Map({
container: 'map', // container id
style: 'mapbox://styles/mapbox/streets-v11', // style URL
center: [-74.5, 40], // starting position [lng, lat]
zoom: 9 // starting zoom
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码收听点击事件:
map.on('click', (e) => {
console.log(e.lngLat)
})
Run Code Online (Sandbox Code Playgroud)
但是有没有办法区分坐标陆地和水体?
小智 5
如果你试试这个:
map.on('load', function () {
let style = map.getStyle();
})
Run Code Online (Sandbox Code Playgroud)
然后您可以看到有关样式的所有详细信息,例如来源、图层、字形等。另外为了监听不同层上的点击事件,你可以使用:
map.on('click', 'land', function (e) {
// some code
});
Run Code Online (Sandbox Code Playgroud)
或者您可以通过以下代码查询多个图层中的渲染特征:
map.on('click', function (e) {
let featureSelected = map.queryRenderedFeatures(e.point, {layers: ['land', 'water']
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |