mapbox draw 修改点线面样式
时间: 2023-12-06 15:26:33 浏览: 279
mapobjects的点线编辑程序
3星 · 编辑精心推荐
Mapbox Draw 是一个用于在 Mapbox 地图上绘制图形的 JavaScript 库。要修改绘制的点、线和面的样式,需要编辑 Mapbox Draw 的样式表。
以下是一个简单的示例,演示如何使用 Mapbox Draw 绘制一个点、一条线和一个多边形,并修改其样式:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title>Mapbox Draw Style</title>
<meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' />
<script src='https://api.mapbox.com/mapbox-gl-js/v2.2.0/mapbox-gl.js'></script>
<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/plugins/mapbox-gl-draw/v1.3.0/mapbox-gl-draw.js'></script>
<link rel='stylesheet' href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.3.0/mapbox-gl-draw.css' type='text/css' />
<style>
#map {
height: 500px;
}
</style>
</head>
<body>
<div id='map'></div>
<script>
mapboxgl.accessToken = 'YOUR_ACCESS_TOKEN_HERE';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11',
center: [-122.4194, 37.7749],
zoom: 13
});
var draw = new MapboxDraw({
displayControlsDefault: false,
controls: {
point: true,
line_string: true,
polygon: true,
trash: true
},
styles: [
// 修改点的样式
{
id: 'custom-point',
type: 'circle',
paint: {
'circle-radius': 8,
'circle-color': '#ff0000'
},
filter: ['in', '$type', 'Point']
},
// 修改线的样式
{
id: 'custom-line',
type: 'line',
paint: {
'line-color': '#00ff00',
'line-width': 4
},
filter: ['in', '$type', 'LineString']
},
// 修改面的样式
{
id: 'custom-polygon',
type: 'fill',
paint: {
'fill-color': '#0000ff',
'fill-opacity': 0.5
},
filter: ['in', '$type', 'Polygon']
}
]
});
map.addControl(draw);
map.on('draw.create', function(e) {
console.log(e.features);
});
</script>
</body>
</html>
```
在上面的示例中,我们定义了三个不同类型的样式:`custom-point`、`custom-line` 和 `custom-polygon`。通过修改这些样式的 paint 属性,我们可以改变它们的外观。在这个例子中,我们将点的颜色修改为红色,将线的颜色修改为绿色,将面的颜色修改为蓝色,并调整了它们的大小和透明度。
注意,我们还需要在 Mapbox 地图中添加 `mapbox-gl-draw` 控件,以便用户可以在地图上绘制图形。在上面的代码中,我们通过 `map.addControl(draw)` 将 `MapboxDraw` 实例添加到地图上。
当用户在地图上绘制点、线或多边形时,`draw.create` 事件将被触发,并将新绘制的要素作为参数传递给回调函数。在这个例子中,我们简单地将要素打印到控制台上,以便您可以看到它们的结构。
阅读全文