• MapV地理数据可视化_API-初始化及初步使用


    目录

    1.mapv初始化及使用

    2.mapv的使用

    2.1 添加点图层

    2.2 添加点轨迹

    2.3 添加热力图层

    2.4 添加Three.js图层

    2.5 炫光特效与发光特效


    MapVGL,是一款基于WebGL的地理信息可视化库,可以用来展示大量基于3D的地理信息点线面数据。设计初衷主要是为了解决大数据量的三维地理数据展示问题及一些炫酷的三维效果。

    百度地图-信息可视化平台百度地图信息可视化平台,基于百度地图jsapi与地理数据可视化工具库mapvgl,结合行业需求与热点呈现地理可视化作品。https://lbsyun.baidu.com/visualize/home

    1.mapv初始化及使用

    NPM:

    $ npm i mapvgl

     

    CDN:

    npm的cdn地址

    1. <script src="https://unpkg.com/mapvgl/dist/mapvgl.min.js">script>
    2. <script src="https://unpkg.com/mapvgl/dist/mapvgl.threelayers.min.js">script>

     

    备用百度cdn地址

    1. <script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.154/dist/mapvgl.min.js">script>
    2. <script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.154/dist/mapvgl.threelayers.min.js">script>

     Hello World:

    1. // 1. 创建地图实例
    2. var bmapgl = new BMapGL.Map('map_container');
    3. var point = new BMapGL.Point(116.403748, 39.915055);
    4. bmapgl.centerAndZoom(point, 17);
    5. // 2. 创建MapVGL图层管理器
    6. var view = new mapvgl.View({
    7. map: bmapgl
    8. });
    9. // 3. 创建可视化图层,并添加到图层管理器中
    10. var layer = new mapvgl.PointLayer({
    11. color: 'rgba(50, 50, 200, 1)',
    12. blend: 'lighter',
    13. size: 2
    14. });
    15. view.addLayer(layer);
    16. // 4. 准备好规范化坐标数据
    17. var data = [{
    18. geometry: {
    19. type: 'Point',
    20. coordinates: [116.403748, 39.915055]
    21. }
    22. }];
    23. // 5. 关联图层与数据,享受震撼的可视化效果
    24. layer.setData(data);

    2.mapv的使用

    可参考如下文档进行mapv的使用:

    MapV开发文档https://lbsyun.baidu.com/solutions/mapvdata

    2.1 添加点图层

    1. // 创建mapvgl图层管理器
    2. var view = new mapvgl.View({
    3. map: map,
    4. });
    5. // 创建点图层
    6. var pointLayer = new mapvgl.PointLayer({
    7. color: "rgba(55,55,255,1)",
    8. blend: "lighter",
    9. size: 40,
    10. });
    11. // 将点图层添加到图层管理器
    12. view.addLayer(pointLayer);
    13. // 设置点数据
    14. var data = [
    15. {
    16. geometry: {
    17. type: "Point",
    18. coordinates: [116.404 + Math.random(), 39.915 + Math.random()],
    19. },
    20. },
    21. {
    22. geometry: {
    23. type: "Point",
    24. coordinates: [116.404 + Math.random(), 39.915 + Math.random()],
    25. },
    26. },
    27. {
    28. geometry: {
    29. type: "Point",
    30. coordinates: [116.404 + Math.random(), 39.915 + Math.random()],
    31. },
    32. },
    33. {
    34. geometry: {
    35. type: "Point",
    36. coordinates: [116.404, 39.915],
    37. },
    38. },
    39. ];
    40. //将数据设置在点图层里
    41. pointLayer.setData(data);

    实现效果:

    2.2 添加点轨迹

    1. // 创建点图层
    2. let pointLayer = new mapvgl.PointTripLayer({
    3. color: "rgba(50, 50, 200, 1)",
    4. step: 0.01,
    5. trailLength: 20,
    6. startTime: 0,
    7. endTime: 1000,
    8. size: 20,
    9. });
    10. // 将点图层添加到图层管理器
    11. view.addLayer(pointLayer);
    12. // 设置点数据
    13. var data = [
    14. {
    15. geometry: {
    16. type: "Point",
    17. coordinates: [116.404, 39.915],
    18. },
    19. properties: {
    20. name: "点1",
    21. },
    22. },
    23. {
    24. geometry: {
    25. type: "Point",
    26. coordinates: [
    27. 116.404 + Math.random() * 0.001,
    28. 39.915 + Math.random() * 0.001,
    29. ],
    30. },
    31. properties: {
    32. name: "点2",
    33. },
    34. },
    35. {
    36. geometry: {
    37. type: "Point",
    38. coordinates: [
    39. 116.404 + Math.random() * 0.001,
    40. 39.915 + Math.random() * 0.001,
    41. ],
    42. },
    43. properties: {
    44. name: "点2",
    45. },
    46. },
    47. {
    48. geometry: {
    49. type: "Point",
    50. coordinates: [
    51. 116.404 + Math.random() * 0.001,
    52. 39.915 + Math.random() * 0.001,
    53. ],
    54. },
    55. properties: {
    56. name: "点2",
    57. },
    58. },
    59. {
    60. geometry: {
    61. type: "Point",
    62. coordinates: [
    63. 116.404 + Math.random() * 0.001,
    64. 39.915 + Math.random() * 0.001,
    65. ],
    66. },
    67. properties: {
    68. name: "点2",
    69. },
    70. },
    71. ];
    72. //将数据设置在点图层里
    73. pointLayer.setData(data);

    实现效果:

    2.3 添加热力图

    1. // 创建图层
    2. let layer = new mapvgl.HeatmapLayer({
    3. gradient: {
    4. 0: "rgb(50,50,255)",
    5. 1: "rgb(255,50,50)",
    6. },
    7. max: 100,
    8. min: 0,
    9. });
    10. // 将点图层添加到图层管理器
    11. view.addLayer(layer);
    12. // 设置点数据
    13. var data = [
    14. {
    15. geometry: {
    16. type: "Point",
    17. coordinates: [116.404 + Math.random(), 39.915 + Math.random()],
    18. },
    19. properties: {
    20. name: "点1",
    21. },
    22. },
    23. ];
    24. for (let i = 0; i < 1000; i++) {
    25. data.push({
    26. geometry: {
    27. type: "Point",
    28. coordinates: [116.404 + Math.random(), 39.915 + Math.random()],
    29. },
    30. properties: {
    31. count: Math.random() * 100,
    32. },
    33. });
    34. }
    35. //将数据设置在点图层里
    36. layer.setData(data);

    实现效果:

    2.4 添加Three.js图层

    使用Three.js相关功能时,除在之前引用的百度地图资源和mapv资源外,还需引入Three相关依赖:

    1. <script src="https://code.bdstatic.com/npm/mapvgl@1.0.0-beta.140/dist/mapvgl.threelayers.min.js">script>

    使用Threejs

    MapVGL中内置了Threejs,在引入mapvgl.threelayers之后,您不必在项目中再次引入Three.js,可以通过如下方法拿到THREE对象

    var THREE = mapvgl.THREE;

    例如使用mapv+Three+ThreeGLTFLoader()实现三维模型加载:

    1. // 创建图层
    2. let layer = new mapvgl.ThreeLayer();
    3. // 将图层添加到管理器
    4. view.addLayer(layer);
    5. //坐标转换
    6. var tPoint = mapvgl.MercatorProjection.convertLL2MC(point);
    7. //初始化Three
    8. var THREE = mapvgl.THREE;
    9. //加载模型
    10. var loader = new THREE.GLTFLoader();
    11. loader.load("./assets/model/rocket.glb", (gltf) => {
    12. console.log(gltf);
    13. var model = gltf.scene;
    14. model.position.set(tPoint.lng, tPoint.lat, 0);
    15. model.scale.set(10, 10, 10);
    16. layer.add(model);
    17. // 添加平行光
    18. var light = new THREE.DirectionalLight(0xffffff, 1);
    19. light.position.set(0, 0, 1);
    20. layer.add(light);
    21. var light1 = new THREE.DirectionalLight(0xffffff, 1);
    22. light.position.set(1, 1, 1);
    23. layer.add(light1);
    24. });

    实现效果:

     2.5 炫光特效与发光特效

    1.bloomEffect炫光效果

    1. // 创建炫光处理通道
    2. var bloomEffect = new mapvgl.BloomEffect({
    3. threshold: 0.2,
    4. blurSize: 2.0
    5. });
    6. // 在图层管理器View中,通过传入effects参数使用
    7. var view = new mapvgl.View({
    8. effects: [bloomEffect],
    9. map: bmapgl
    10. });

    实现效果:

     2.BrightEffect发光特效

    1. // 创建炫光处理通道
    2. var bright = new mapvgl.BrightEffect({
    3. threshold: 0.2,
    4. blurSize: 2.0,
    5. clarity: 0.8
    6. });
    7. // 在图层管理器View中,通过传入effects参数使用
    8. var view = new mapvgl.View({
    9. effects: [bright],
    10. map: bmapgl
    11. });

    实现效果:

     

  • 相关阅读:
    使用共享内存进行进程间通信
    图像特征Vol.1:计算机视觉特征度量|第一弹:【纹理区域特征】
    动态内存管理
    【Rust日报】2022-08-14 Actix Web 的可扩展速率限制中间件
    PHP深入
    Zstack一面面经
    【C++】你想要的——印刷模板儿
    基于智能数采网关的商铺能耗在线监测方案
    css鼠标横向滚动并且不展示滚动条几种方法
    从零开始配置 vim(5)——本地设置与全局设置
  • 原文地址:https://blog.csdn.net/damadashen/article/details/126267199