mapbox gl开箱即用的地图引擎库

 更新时间:2022年07月07日 09:47:36   作者:摸鱼的春哥  
这篇文章主要为大家介绍了一款mapbox gl开箱即用的地图引擎库,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、地图、地图、还是地图

你总是需要地图,因为它过于直观。

Ned 是一个前端开发,就职于一家 To C 业务的公司,这天产品经理提出了一个需求:

“来一张地图吧,把我们所有的客户放在上面,让我们一眼就能看出来是谁在用我们的APP!”

从未做过地图的 Ned 茫然点了点头,开始进行技术筛选,然后他才发现,小小一张地图,居然有这么多门道!

瓦片地图服务商有:天地图、百度地图、高德地图 等...

而地图引擎又有 openlayerscesium 等...

如果要在地图上加载三维模型,可能他还得了解 three.js 等技术...

那么,有没有什么方案不仅开箱即用,而且拥有可观的 拓展性 呢?

当然有,比如: mapbox-gl

二、什么是 mapbox-gl?

谈到这个问题之前,得先弄清楚什么是 mapbox

首先,这是一家企业,它提供地图服务和解决方案,你几乎可以把它看做 “百度地图”,提供。

同时,它提供了一个基于 WebGL 的开源地图引擎:mapbox-gl

mapbox-gl npmjs: www.npmjs.com/package/map…

mapbox-gl githubgithub.com/mapbox/mapb…

通过 mapbox-gl,你可以像使用 openlayers 那样加载各种源的地图,包括 mapbox 本身提供的瓦片源、百度地图等瓦片源。

同时,它也是 mapbox GL 生态的重要一环。

三、如何安装

yarn add mapbox-gl

四、基础使用:渲染地图

此处以 mapbox 本身的瓦片源为例

首先,在 mapbox 官网注册账号,获得 accessToken。(为避嫌,此处不细赘述)

如果你在 vue3 项目中,可以通过如下代码渲染: index.vue

<template>
  <div id="map"></div>
</template>
<script setup> 
import { onMounted, reactive, ref } from 'vue';
import mapboxgl from 'mapbox-gl';

onMounted(() => {
  mapboxgl.accessToken = `你的accessToken`
  const map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/mapbox/streets-v11',
    center: [0, 0],
    zoom: 0.6,
    projection: 'naturalEarth' // starting projection
  });
})
</script>

一个简单的世界地图就这样简单而清晰的世界地图便展现出来:

五、在地图上渲染区域

众所周知,用来描绘地图上区域的格式叫 geojson,它的本质是通过多个点的合集,来描述一个多边形。

现在,我通过各种人工手段获取了一个湖泊的多边形图案,要将它在地图上绘制出来,应该怎么做呢?

很简单:增加以下代码:

  map.on('load', function () {
    rotateCamera(0);
    map.addLayer({
      'id': 'maine',
      'type': 'fill',
      'source': {
        'type': 'geojson',
        'data': lakeGeoJson // 湖面的geojson
      },
      'layout': {},
      'paint': {
        'fill-color': '#17b1ee',
        'fill-opacity': 0.8,
      }
  });

(当然,别忘了把地图圆心也选为 geojson 中的某个点)

效果如下:

途中蔚蓝色的多边形,便是通过 geojson 画出的湖泊。

六、倾斜视角

90 度垂直俯瞰的视角太过死板,但提供多角度的渲染,正是 mapbox-gl 的拿手好戏。

只需要一行代码:

const map = new mapboxgl.Map({
    // ... 其他配置不变
    pitch: 60, // 增加此行
  });

整个画面顿时有了质的提升!

七、旋转、跳跃、以及 Rap

沉寂的画面是单调的,以及没有逼格的——甲方也这么认为。

因此,甲方经常会提出 “让地图动起来” 的合理需求。

这在 mapbox-gl 中非常容易。

增加以下代码:

function rotateCamera(timestamp) {
  map.rotateTo((timestamp / 360) % 360, { duration: 0 });
  requestAnimationFrame(rotateCamera);
}

map.on('load', function () {
  rotateCamera(0);
})

画面轻松动了起来!

以上就是mapbox gl开箱即用的地图引擎库的详细内容,更多关于mapbox gl地图引擎库的资料请关注脚本之家其它相关文章!

相关文章

  • vue实现树形结构样式和功能的实例代码

    vue实现树形结构样式和功能的实例代码

    这篇文章主要介绍了vue树形结构样式和功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • 详解vue中使用transition和animation的实例代码

    详解vue中使用transition和animation的实例代码

    这篇文章主要介绍了详解vue中使用transition和animation的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 在Vue中实现对文件的压缩和解压缩功能

    在Vue中实现对文件的压缩和解压缩功能

    在前端开发中,文件的压缩和解压缩是经常需要用到的功能,尤其是在需要上传和下载文件的场景下,文件压缩可以减小文件大小,加快文件传输速度,提高用户体验,本文将介绍在Vue项目中如何进行文件的压缩和解压缩,需要的朋友可以参考下
    2023-11-11
  • vue v-model的详细讲解(推荐!)

    vue v-model的详细讲解(推荐!)

    vue中经常使用到和这类表单元素,vue对于这些元素的数据绑定和我们以前经常用的jQuery有些区别,下面这篇文章主要给大家介绍了关于vue v-model的相关资料,需要的朋友可以参考下
    2022-04-04
  • vue2.0 实现页面导航提示引导的方法

    vue2.0 实现页面导航提示引导的方法

    下面小编就为大家分享一篇vue2.0 实现页面导航提示引导的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Vue Echarts实现多功能图表绘制的示例详解

    Vue Echarts实现多功能图表绘制的示例详解

    作为前端人员,日常图表、报表、地图的接触可谓相当频繁,今天小编隆重退出前端框架之VUE结合百度echart实现中国地图+各种图表的展示与使用;作为“你值得拥有”专栏阶段性末篇,值得一看
    2023-02-02
  • vue实现树状表格效果

    vue实现树状表格效果

    这篇文章主要为大家详细介绍了vue实现树状表格效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • vue关于接口请求数据过大导致浏览器崩溃的问题

    vue关于接口请求数据过大导致浏览器崩溃的问题

    这篇文章主要介绍了vue关于接口请求数据过大导致浏览器崩溃的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Vue3 封装回到顶部组件的实现示例

    Vue3 封装回到顶部组件的实现示例

    回到顶部在很多网页中都可以见到,本文主要介绍了Vue3 封装回到顶部组件的实现示例,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Vue3 组件库的环境配置搭建过程

    Vue3 组件库的环境配置搭建过程

    这篇文章主要介绍了Vue3 组件库的环境配置搭建过程,使用 Vite+Ts 开发的是 Vue3 组件库,所以我们需要安装 typescript、vue3,同时项目将采用 Less 进行组件库样式的管理,需要的朋友可以参考下
    2023-03-03

最新评论