leaflet - 在折线上创建缓冲区 - 传单
问题描述
我正在尝试在我的地图上实现类似于Leaflet.buffer的缓冲区。然而,Leaflet.buffer 似乎只适用于 Leaflet.Draw。
我正在使用Leaflet Editable来绘制我的图层,并且我有一条要添加缓冲区的折线。但是,我找不到任何可以完成这项工作的插件。
我知道我可以使用Turf @buffer 创建一个缓冲区:
let lineString = turf.lineString(coordArr);
let bufferedLine = turf.buffer(lineString, 0.5, {units: 'miles'});
但我希望它类似于Leaflet.buffer以便您可以在地图上滑动缓冲区。(更人性化)
有没有办法通过将Turf.js与Leaflet.Editable一起使用来实现这一点?
解决方案
你可以使用 Turf.js 的缓冲模块来做到这一点。您在折线周围创建一个缓冲区,并在传单地图上绘制生成的 geojson。这是一个工作示例。
var center = [37.78791180770003, -122.40962505340575];
var map = L.map('map').setView(center, 14);;
L.tileLayer(
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 18
}).addTo(map);
var line = {
"type": "Feature",
"properties": {
"color": "blue"
},
"geometry": {
"type": "LineString",
"coordinates": [
[-122.40447521209718,
37.79367718768535
],
[-122.40803718566895,
37.79171022624846
],
[-122.40769386291502,
37.79096412372944
],
[-122.40662097930908,
37.789641468930114
],
[-122.40941047668457,
37.789675383451495
],
[-122.40992546081543,
37.78875968591083
],
[-122.40962505340575,
37.78791180770003
]
]
}
};
L.geoJSON(line, {
style: function(feature) {
return {
color: feature.properties.color
};
}
}).addTo(map);
var polygon = turf.buffer(line, 0.5, {
units: 'miles'
});
L.geoJSON(polygon, {
style: function(feature) {
return {
color: feature.properties.color
};
}
}).addTo(map);
#map {
height: 300px;
}
<script src="https://npmcdn.com/@turf/turf/turf.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.js"></script>
<div id="map"></div>
推荐阅读
- mysql - MySql中的数据库设计用于用户的股票市场表现
- python - 如何将字符串传递给类并在类中评估格式化变量
- groff - 不对称 Groff 输出
- xcode - Xcode SwiftUI UITableView 分隔颜色表单“部分”文本
- python - 三角蟒的面积/类型
- c - 用现代 gcc 编译抛出错误(乘法定义)的旧 C 代码(在 Linux 上)?
- javascript - 在本地 html 视频之上添加视频控件
- php - 在laravel中将变量设为字符串
- apache-spark-sql - 如果 B 是广播数据集,火花广播哈希连接是否可以执行 A 右连接 B?
- algorithm - 需要有关千鸟模式形成算法的建议