manage deck.gl,antV-L7,THREE datavis layers for mapbox
npm install @gooin/yzt-datavis-mapbox
主要功能:
- 适配 mapbox 原生、deck.gl、antV-L7、THREE 不同可视化图层加载,最终返回一个 MapBox 的 Layer ,用于添加到地图中
- 额外扩展可视化图层
mapbox 原生、deck.gl、antV-L7 不同图层加载mapbox 原生 deck.gl antV-L7 因为图层加载在其内建的Scene对象中,需要额外处理 THREE 以 mapbox 的 custom-layer 方式GeoJSON数据,但是个别的图层所需数据格式不尽相同,需要统一数据入口的数据结构,内部做转换以适配不同的库
``shell`
yarn add git地址...
`javascript
import { ArcLayer,GeoJsonLayer } from 'fantasy-datavis-mapbox';
import mapboxgl from 'mapbox-gl';
mapboxgl.accessToken = 'pk.eyJ1IjoiZ29vaW4iLCJhIjoiY2ppY3RjcGd5MDRqcjNrbWFlanEyazk2OCJ9.-v6OvStrPvVwu2-Tx9Uogg';
const AIR_PORTS =
'https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_10m_airports.geojson';
let map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v9',
center: [0.45,51.47],
zoom: 4,
pitch: 30,
bearing:0
});
const myArcLayer = ArcLayer({
id: 'arcs1',
data: AIR_PORTS,
dataTransform: d =>
d.features.filter(f =>
f.properties.scalerank < 4),
// // Styles
getSourcePosition: f =>
[-0.4531566, 51.4709959], // London
getTargetPosition: f =>
f.geometry.coordinates,
getSourceColor: [0, 128, 200, 100],
getTargetColor: [200, 0, 80, 150],
getWidth: 2
});
const myJsonLayer = GeoJsonLayer({
id: "geojson",
data: AIR_PORTS,
onClick: info =>
// eslint-disable-next-line
info.object && alert(extra fun=> ${info.object.properties.name} (${info.object.properties.abbrev}))
});
map.addLayer(myArcLayer);
map.addLayer(myJsonLayer);
``