mapbox - 如何从 Mapbox 国家边界获取一组国家边界
问题描述
https://codepen.io/m12n/pen/XWNRZMg?editors=0010
mapboxgl.accessToken =
"pk.eyJ1IjoiaW50ZWxsaWdlbmNlZnVzaW9uIiwiYSI6ImNrM2l2cnk1NzBibGIzbm5yaHNycXltZmYifQ.tPEnnW5NAPmInCJDYVfJxA";
var map = new mapboxgl.Map({
container: "map",
style: "mapbox://styles/mapbox/dark-v10",
zoom: 8,
center: [-71.4935, 41.5852]
});
map.on("load", function () {
map.addSource("countries-no-simplification", {
type: "vector",
url: "mapbox://mapbox.country-boundaries-v1"
});
map.addLayer({
id: "countries-simplification-data",
type: "fill",
source: "countries-no-simplification",
"source-layer": "country_boundaries",
paint: {
"fill-color": "#ff69b4",
"fill-opacity": 0.3
}
});
});
上面的代码和笔显示了 MapBox 县边界的用法,我用颜色和低不透明度填充图层。
因为来源有多种世界观,我会同时显示有争议的国家的两个边界,因此得到显示的效果(更强的着色)。
最终,我实际上想根据特定数据点应用颜色,但现在我很高兴能够只渲染一组边界(单一世界视图?)。
我似乎无法弄清楚如何从源头只获得一组这样的边界。
解决方案
您可以应用过滤器来保留特定世界观(美国、中国、印度等)的边界并删除有争议的边界。例子:
map.addLayer({
id: "countries-simplification-data",
type: "fill",
source: "countries-no-simplification",
"source-layer": "country_boundaries",
filter: [
'all',
['match', ['get', 'worldview'], ['all', 'US'], true, false],
["!=", "true", ["get", "disputed"]],
],
paint: {
"fill-color": "#ff69b4",
"fill-opacity": 0.3
}
});
推荐阅读
- java - 将变量分配给相同类型的对象时出现类型不匹配错误
- javascript - 使用 mocha 和 selenium-webdriver js 获得有意义的堆栈跟踪
- c - 如何在 yacc 文件中查找移位/减少冲突
- python - 如何在 SelectMultipleFields 之间传递数据?
- python - SciPy 中的概率密度函数的行为与预期不同
- scala - Scala 中的结构类型扁平化
- spring-mvc - Spring MVC 表单验证未验证
- javascript - 迭代对象 - 无法读取未定义的属性
- html - 获取相对于主体的内部 div 宽度
- assembly - 不能在 MIPS 上添加两个 32 位数字