Mapbox GL基础(十三):多个地图视角同步

上一期利用mapbox-gl-compare插件,实现了卷帘对比功能。但是也会经常遇到要实现多个地图同步移动,展示不同数据内容的需求。主要利用@mapbox/mapbox-gl-sync-move插件来实现,下面将实现的过程进行说明。

安装

主要利用@mapbox/mapbox-gl-sync-move插件就行开发,所以安装该插件:
npm install @mapbox/mapbox-gl-sync-move --save

不同容器位置设置

设置容器位置来承载每个地图,此处需要自己根据需求进行地图位置的设定:

<template>
  <div id="map1"></div>
  <div id="map2"></div>
  <div id="map3"></div>
</template>

#map1 {
  position: absolute;
  width: 30%;
  height: 100%;
  border: 2px solid red;
}
#map2 {
  position: absolute;
  width: 30%;
  left:33%;
  height: 100%;
  border: 2px solid green;
}
#map3 {
  position: absolute;
  width: 30%;
  left:66%;
  height: 100%;
  border: 2px solid orange;
}

初始化地图

在地图容器中将三个地图中分别初始化,设置不同的style加入不同的图层服务,如下代码:

let mapBoxMap = new mapboxgl.Map({
    container: "map1",
    style: myStyle1,
    minZoom: mapParams.minZoom,
    maxZoom: mapParams.maxZoom,
    zoom: mapParams.zoom,
    center: mapParams.center,
  });
  let mapBoxMap2 = new mapboxgl.Map({
    container: "map2",
    style: myStyle2,
    minZoom: mapParams.minZoom,
    maxZoom: mapParams.maxZoom,
    zoom: mapParams.zoom,
    center: mapParams.center,
  });

  let mapBoxMap3 = new mapboxgl.Map({
    container: "map3",
    style: myStyle3,
    minZoom: mapParams.minZoom,
    maxZoom: mapParams.maxZoom,
    zoom: mapParams.zoom,
    center: mapParams.center,
  });

多地图视角同步

最后利用syncMove将三个地图中的视角同步,如下代码:

import syncMove from '@mapbox/mapbox-gl-sync-move';

let maps = []
maps.push(mapBoxMap)
maps.push(mapBoxMap2)
maps.push(mapBoxMap3)
syncMove(...maps)

最终展示效果如下:
请添加图片描述

总结

本文针对多个地图视角同步的实现进行了说明,以后如果遇到新的功能再进行补充,接下来的章节将继续探索Mapbox。
欢迎关注星林社区,文章将同步更新在星林社区中!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值