场景 Scene

简介

Scene

  1. // Module 引用
  2. import { Scene } from '@antv/l7';
  3. import { GaodeMap } from '@antv/l7-maps';
  4. const scene = new Scene({
  5. id: 'map',
  6. map: new GaodeMap({
  7. style: 'dark',
  8. center: [110.770672, 34.159869],
  9. pitch: 45,
  10. }),
  11. });
  12. // CDN 使用方法
  13. const scene = new L7.Scene({
  14. id: 'map',
  15. map: new L7.GaodeMap({
  16. style: 'dark',
  17. center: [110.770672, 34.159869],
  18. pitch: 45,
  19. }),
  20. });

Map

L7 地理可视化侧重于地理数据的可视化表达,地图层需要依赖第三方地图,第三方地图通过 Scene 统一创建,创建管理只需要通过 Scene 传入地图配置项即可。

目前 L7 支持两种地图底图

  • 高德地图 国内业务场景 合规中国地图
  • MapBox 国际业务,或者内网离线部署场景

map

可以通过 scene map 属性获取 map 实例

  1. const map = scene.map;

为了统一不同底图之前的接口差异 L7 在 scene 层对 map 的方法做了统一,因此一些地图的操作方法可以通过 scene 调用这样,切换不同底图时保证表现一致。

示例代码

  1. const scene = new L7.Scene({
  2. id: 'map',
  3. map: new L7.GaodeMap({
  4. style: 'dark',
  5. center: [110.770672, 34.159869],
  6. pitch: 45,
  7. }),
  8. });

构造函数

Scene

配置项

地图配置项

id

需传入 dom 容器或者容器 id {domObject || string} [必选]

zoom

地图初始显示级别 {number} (0-22)

center

地图初始中心经纬度 {Lnglat}

pitch

地图初始俯仰角度 {number} default 0

style

简化地图样式设置,L7 内置了三种主题默认样式 高德,mapbox 都可以使用

  • dark
  • light
  • normal
  • blank 无底图

除了内置的样式,你也可以传入自定义的其他属性。

比如高德地图

  1. {
  2. style: 'amap://styles/2a09079c3daac9420ee53b67307a8006?isPublic=true'; // 设置方法和高德地图一致
  3. }

minZoom

地图最小缩放等级 {number} default 0 (0-22)

maxZoom

地图最大缩放等级 {number} default 22 (0-22)

rotateEnable

地图是否可旋转 {Boolean} default true

方法

getZoom

获取当前缩放等级

  1. scene.getZoom();

return {float} 当前缩放等级

getLayers()

获取所有的地图图层

  1. scene.getLayers();

return 图层数组 {Array}

getCenter()

获取地图中心点

  1. scene.getCenter();

return {Lnglat} :地图中心点

getSize()

获取地图容器大小

  1. scene.getSize();

return { Object } 地图容器的 width,height

getPitch()

获取地图俯仰角

  1. scene.getPitch();

return {number} pitch

setMapStyle

参数:style {string} 地图样式 具体样式格式和各底图设置方法一致

L7 内置了三种地图样式,AMAP 和 MapBox 都适用

  • light
  • dark
  • normal

设置地图底图样式的方法

  1. // 快捷名称设置
  2. scene.setMapStyle('light');
  3. // mapbox 主题设置
  4. scene.setMapStyle('mapbox://styles/mapbox/streets-v11');
  5. // AMap
  6. scene.setMapStyle(
  7. 'amap://styles/2a09079c3daac9420ee53b67307a8006?isPublic=true',
  8. );

setCenter()

设置地图中心点坐标

  1. scene.setCenter([lng, lat]);

参数:center {LngLat} 地图中心点

setZoomAndCenter

设置地图等级和中心

  1. scene.setZoomAndCenter(zoom, center);

参数:

  • zoom {number}
  • center {LngLat}

setRotation

设置地图顺时针旋转角度,旋转原点为地图容器中心点,取值范围 [0-360]

  1. scene.setRotation(rotation);

参数: rotation {number}

zoomIn

地图放大一级

  1. scene.zoomIn();

zoomOut

地图缩小一级

  1. scene.ZoomOUt();

panTo

地图平移到指定的位置

  1. scene.panTo(LngLat);

参数:

  • center LngLat 中心位置坐标

panBy

以像素为单位沿 X 方向和 Y 方向移动地图

  1. scene.panBy(x, y);

参数:

  • x {number} 水平方向移动像素 向右为正方向
  • y {number} 垂直方向移动像素 向下为正方向

setPitch

设置地图仰俯角度

  1. scene.setPitch(pitch);

参数 :

  • pitch {number}

fitBounds

地图缩放到某个范围内

参数 :

  • extent { array} 经纬度范围 [minlng,minlat,maxlng,maxlat]
  1. scene.fitBounds([112, 32, 114, 35]);

removeLayer

移除 layer

  1. scene.removeLayer(layer);

参数

  • layer {Layer}

事件

on

事件监听

参数

eventName {string} 事件名hander {function } 事件回调函数

off

移除事件监听eventName {string} 事件名hander {function } 事件回调函数

地图事件

  1. scene.on('loaded', () => {}); //地图加载完成触发
  2. scene.on('mapmove', () => {}); // 地图平移时触发事件
  3. scene.on('movestart', () => {}); // 地图平移开始时触发
  4. scene.on('moveend', () => {}); // 地图移动结束后触发,包括平移,以及中心点变化的缩放。如地图有拖拽缓动效果,则在缓动结束后触发
  5. scene.on('zoomchange', () => {}); // 地图缩放级别更改后触发
  6. scene.on('zoomstart', () => {}); // 缩放开始时触发
  7. scene.on('zoomend', () => {}); // 缩放停止时触发

鼠标事件

  1. scene.on('click', ev => {}); // 鼠标左键点击事件
  2. scene.on('dblclick', ev => {}); // 鼠标左键双击事件
  3. scene.on('mousemove', ev => {}); // 鼠标在地图上移动时触发
  4. scene.on('mousewheel', ev => {}); // 鼠标滚轮开始缩放地图时触发
  5. scene.on('mouseover', ev => {}); // 鼠标移入地图容器内时触发
  6. scene.on('mouseout', ev => {}); // 鼠标移出地图容器时触发
  7. scene.on('mouseup', ev => {}); // 鼠标在地图上单击抬起时触发
  8. scene.on('mousedown', ev => {}); // 鼠标在地图上单击按下时触发
  9. scene.on('rightclick', ev => {}); // 鼠标右键单击事件
  10. scene.on('dragstart', ev => {}); //开始拖拽地图时触发
  11. scene.on('dragging', ev => {}); // 拖拽地图过程中触发
  12. scene.on('dragend', ev => {}); //停止拖拽地图时触发。如地图有拖拽缓动效果,则在拽停止,缓动开始前触发

其它事件

  1. scene.on('resize', () => {}); // 地图容器大小改变事件