地图引擎(WebGIS)之MapBox的基础使用
创始人
2024-11-28 01:37:13
0次

目录

一、MapBox

1.1、js显示(高德地图)

1.2、l7&mapbox

1.3、案例

1.3.1、加载深圳市数据

1.3.2、漫游(flyTo)效果

1.3.3、底层(layer-style)切换

1.3.4、地形数据加载

1.3.5、事件控制地球自转与暂停

1.3.6、沙盘的白天黑夜切换

1.3.7、地图控件

1.3.8、geojson加载数据

1.3.9、addSource

1.3.10、设置鼠标形状

1.4、vue3中引入并应用

1.4.1、安装配置

1.4.2、代码应用

一、MapBox

官网: Mapbox Docs

JS语法模块: Mapbox GL JS | Mapbox

Openlayer、Leaflet相关应用:4、leaflet · 语雀  

1.1、js显示(高德地图)

效果展示:

跟随鼠标操作可以放大缩小、俯仰角观看,左右摇摆式观看

代码分析:

                           

1.2、l7&mapbox

L7(地理数据可视化)官网: 快速上手 | AntV L7 地理空间数据可视化引擎

科普:7代表7大洲

                    

1.3、案例

1.3.1、加载深圳市数据

https://gw.alipayobjects.com/os/basement_prod/972566c5-a2b9-4a7e-8da1-bae9d0eb0117.json

效果展示:

核心代码:

 // L7.PolyonLayer         scene.on('loaded', () => {             fetch('https://gw.alipayobjects.com/os/basement_prod/972566c5-a2b9-4a7e-8da1-bae9d0eb0117.json')                 .then(res => res.json())                 .then(data => {                     console.log(data);                     const layer = new L7.PolyonLayer({});//实例化(区域)图层                     layer.source(data)//加载数据                         .shape('extrude')//视图区域层有高度                         .size('h20')//可以直接获取geojson中properties里的属性值                         .active(true)                     scene.addLayer(layer)                 })         })

1.3.2、漫游(flyTo)效果

              

1.3.3、底层(layer-style)切换

设置不同样式:Styles API | API Docs | Mapbox

              

1.3.4、地形数据加载

相当于地图中的山脉形状也清晰可见了。

1.3.5、事件控制地球自转与暂停

地球自转本质:每间隔一段时间经度累加,通过easeTo()开始旋转,通过stop()停止旋转;

//===========================模仿原理==================== map.on('click', () => {             setInterval(() => {                 let center = map.getCenter();                 center.lng += 10;//地球自转:经度累加                 map.setCenter(center)             }, 50) }) //===========================官方api实现====================         let isUserInterface = false;         map.on('click', () => {             isUserInterface = !isUserInterface;             if (isUserInterface) {                 map.stop();//停止旋转             } else {                 rotateMap();             }         })         map.on('moveend', () => {             rotateMap();//当地球停止旋转时,触发旋转事件         })         function rotateMap() {             const zoom = map.getZoom()             if (zoom < 5 && !isUserInterface) {                 let center = map.getCenter();                 center.lng += 10;//地球自转:经度累加                 map.easeTo({//easeTo相当于setInterval                     center,                     duration: 1000,//间隔时长                     easing: n => n                 })             }         }         rotateMap();

1.3.6、沙盘的白天黑夜切换

其实就是设置不同的setFog;

        map.on('moveend', () => {             rotateMap();//当地球停止旋转时,触发旋转事件         })         function rotateMap() {             let bearing = map.getBearing();             bearing += 10;             if (bearing < 0) {                 map.setFog({                     range: [-1, 2],                     'horizon-blend': 0.3,                     color: "#242B4B",//黑夜                     "high-color": '#161B36',                     "space-color": '#0B1026',                     'star-intensity': 0.8                 })             } else {                 map.setFog({                     range: [-1, 2],                     'horizon-blend': 0.3,                     color: "white",//白天                     "high-color": '#add8e6',                     "space-color": '#d8f2ff',                     'star-intensity': 0.0                 })             }             map.easeTo({//easeTo相当于setInterval                 bearing: bearing,                 duration: 1000,//间隔时长                 easing: n => n             })         }

1.3.7、地图控件

               

1.3.8、geojson加载数据

获取湖北省的地图数据:DataV.GeoAtlas地理小工具系列

                

1.3.9、addSource

addLayer可以单独使用,也可以结合addSource一起使用;

     // http请求后的图层已经加载到map的style属性中了                 map.addSource("hubei", {                     type: 'geojson',                     data: res                 })                 map.addLayer({                     id: 'hubei-layer',                     type: 'fill',                     source: "hubei",                     // 绘制地图样式                     paint: {                         'fill-color': '#ff2d51',                         'fill-opacity': .5                     }                 })

1.3.10、设置鼠标形状

map.on("load", function () {             map.on('mouseenter', 'Point', () => {                 map.getCanvas().style.cursor = 'pointer';             });             map.on('mouseleave', 'Point', () => {                 map.getCanvas().style.cursor = 'default';             });         })

1.4、vue3中引入并应用

1.4.1、安装配置

(1)、npm i mapbox-gl

(2)、设置.env,这里的token 是临时的,可以去官网注册一个新的

VITE_TOKEN ='pk.eyJ1IjoiY2hlbmdiZW5jaGFvIiwiYSI6ImNsODU3aGRiODA0Y2UzcHBzZmFlcmdqZ2sifQ.8k59W_pB_Riwe6o-MneRlA'

(3)、配置main.js

1.4.2、代码应用

(1)、初始化地图

   

(2)、将地图挂载到全局

BoxMap.vue代码:

   

BoxGeoJSON.vue代码:geojson加载-点击事件漫游

   

注意:这些只是基础使用,其他的属性和方法自行查找官网,慢慢研究。

相关内容

热门资讯

实测交流透视挂!宝玛大厅ai智... 实测交流透视挂!宝玛大厅ai智能透视挂教程,宝玛大厅破解软件经验(本来有挂辅助)1、每一步都需要思考...
总算了解辅助器!朱雀吴江三缺一... 总算了解辅助器!朱雀吴江三缺一ai智能透视辅助挂技巧,朱雀吴江三缺一好像是有挂(有辅助挂细节)朱雀吴...
今日公布透视!九五至尊大厅ai... 今日公布透视!九五至尊大厅ai智能透视插件,九五至尊大厅有没有透视挂窍门(切实有挂技术)1、在九五至...
玩家必看科普开挂!聚闲麻将ai... 玩家必看科普开挂!聚闲麻将ai智能透视辅助挂软件,聚闲麻将总是真的有挂(有辅助挂方式)聚闲麻将能透视...
据报道开挂!旅游娱乐ai智能开... 据报道开挂!旅游娱乐ai智能开挂工具,旅游娱乐辅助工具演示(一直有挂教学)1、全新机制【旅游娱乐ai...
一分钟揭秘开挂!决胜朋来麻将a... 一分钟揭秘开挂!决胜朋来麻将ai智能透视辅助挂教程,决胜朋来麻将真是真的是有挂(有辅助挂总结)1、首...
如何分辨真伪透视!红牛ai智能... 如何分辨真伪透视!红牛ai智能透视攻略,红牛是不是有挂经验(真是有挂技术)1、操作简单,无需红牛手机...
2分钟细说辅助器!江湖大庆麻将... 2分钟细说辅助器!江湖大庆麻将ai智能透视辅助挂攻略,江湖大庆麻将竟然是真的有挂(有辅助挂头条)1、...
总算清楚透视挂!老夫子厅ai智... 总算清楚透视挂!老夫子厅ai智能透视挂技巧,老夫子厅怎么开挂课程(好像发现有挂)老夫子厅破解侠是真的...
解密关于辅助!菜鸟麻将ai智能... 解密关于辅助!菜鸟麻将ai智能透视辅助挂脚本,菜鸟麻将总是存在有挂(有辅助挂存在)1、用户打开应用后...