antv-l7/docs/api/scene.en.md

439 lines
7.4 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Scene
order: 2
---
# 简介
## Scene
```javascript
// Module 引用
import { Scene } from '@antv/l7';
import { GaodeMap } from '@antv/l7-maps';
const scene = new Scene({
id: 'map',
map: new GaodeMap({
style: 'dark',
center: [110.770672, 34.159869],
pitch: 45,
}),
});
// CDN 使用方法
const scene = new L7.Scene({
id: 'map',
map: new L7.GaodeMap({
style: 'dark',
center: [110.770672, 34.159869],
pitch: 45,
}),
});
```
## Map
L7 地理可视化侧重于地理数据的可视化表达,地图层需要依赖第三方地图,第三方地图通过 Scene 统一创建,创建管理
只需要通过 Scene 传入地图配置项即可。
目前 L7 支持两种地图底图
- 高德地图 国内业务场景 合规中国地图
- MapBox 国际业务,或者内网离线部署场景
### map
可以通过 scene map 属性获取 map 实例
```javascript
const map = scene.map;
```
为了统一不同底图之前的接口差异 L7 在 scene 层对 map 的方法做了统一,因此一些地图的操作方法可以通过 scene 调用这样,切换不同底图时保证表现一致。
示例代码
```javascript
const scene = new L7.Scene({
id: 'map',
map: new L7.GaodeMap({
style: 'dark',
center: [110.770672, 34.159869],
pitch: 45,
}),
});
```
### 构造函数
**Scene**
## 配置项
### 地图配置项
### id
需传入 dom 容器或者容器 id  {domObject || string} [必选]
### logoPosition
L7 Logo 的显示位置 默认左下角
- bottomright
- topright
- bottomleft,
- topleft`
### logoVisible
是否显示 L7 的 Logo {boolean} true
### zoom
地图初始显示级别 {number} 0-22
### center
地图初始中心经纬度 {Lnglat}
### pitch
地图初始俯仰角度 {number}  default 0
### style
简化地图样式设置L7 内置了三种主题默认样式 高德mapbox 都可以使用
- dark
- light
- normal
- blank 无底图
除了内置的样式,你也可以传入自定义的其他属性。
比如高德地图
```javascript
{
style: 'amap://styles/2a09079c3daac9420ee53b67307a8006?isPublic=true'; // 设置方法和高德地图一致
}
```
### minZoom
地图最小缩放等级 {number}  default 0 (0-22)
### maxZoom
地图最大缩放等级 {number}  default 22 (0-22)
### rotateEnable
地图是否可旋转 {Boolean} default true
## 方法
### getZoom
获取当前缩放等级
```javascript
scene.getZoom();
```
return {float}   当前缩放等级
### getLayers()
获取所有的地图图层
```javascript
scene.getLayers();
```
### getLayerByName(name)
根据图层名称获取图层
参数
-name {string}
layer 初始化可配置图层 name
```javascript
scene.getLayerByName(name);
```
return Layer 图层对象
### getCenter()
获取地图中心点
```javascript
scene.getCenter();
```
return {Lnglat} :地图中心点
### getSize()
获取地图容器大小
```javascript
scene.getSize();
```
return { Object } 地图容器的 width,height
### getPitch()
获取地图俯仰角
```javascript
scene.getPitch();
```
return {number} pitch
### setMapStyle
参数:`style` {string} 地图样式 具体样式格式和各底图设置方法一致
L7 内置了三种地图样式AMAP 和 MapBox 都适用
- light
- dark
- normal
设置地图底图样式的方法
```javascript
// 快捷名称设置
scene.setMapStyle('light');
// mapbox 主题设置
scene.setMapStyle('mapbox://styles/mapbox/streets-v11');
// AMap
scene.setMapStyle(
'amap://styles/2a09079c3daac9420ee53b67307a8006?isPublic=true',
);
```
### setCenter()
设置地图中心点坐标
```javascript
scene.setCenter([lng, lat]);
```
参数:`center` {LngLat} 地图中心点
### setZoomAndCenter
设置地图等级和中心
```javascript
scene.setZoomAndCenter(zoom, center);
```
参数:
- zoom {number}
- center {LngLat}
### setMapStatus
参数 :
```javascript
IStatusOptions {
showIndoorMap: boolean;
resizeEnable: boolean;
dragEnable: boolean;
keyboardEnable: boolean;
doubleClickZoom: boolean;
zoomEnable: boolean;
rotateEnable: boolean;
```
```javascript
scene.setMapStatus({ dragEnable: false });
```
### setRotation
设置地图顺时针旋转角度,旋转原点为地图容器中心点,取值范围 [0-360]
```javascript
scene.setRotation(rotation);
```
参数: `rotation` {number}
### zoomIn
地图放大一级
```javascript
scene.zoomIn();
```
### zoomOut
地图缩小一级
```javascript
scene.ZoomOUt();
```
### panTo
地图平移到指定的位置
```javascript
scene.panTo(LngLat);
```
参数:
- `center` LngLat 中心位置坐标
### panBy
以像素为单位沿 X 方向和 Y 方向移动地图
```javascript
scene.panBy(x, y);
```
参数:
- `x` {number} 水平方向移动像素 向右为正方向
- `y` {number} 垂直方向移动像素 向下为正方向
### setPitch
设置地图仰俯角度
```javascript
scene.setPitch(pitch);
```
参数 :
- `pitch` {number}
### fitBounds
地图缩放到某个范围内
参数 :
- `extent` { array} 经纬度范围 [[minlng,minlat],[maxlng,maxlat]]
```javascript
scene.fitBounds([
[112, 32],
[114, 35],
]);
```
### getContainer
获取地图容器 return htmlElement
```javascript
scene.getContainer();
```
### removeLayer
移除 layer
```javascript
scene.removeLayer(layer);
```
参数
- `layer` {Layer}
### exportMap
导出地图,目前仅支持导出可视化层,不支持底图导出
- 参数 type `png|jpg` 默认 png
scene.exportMap('png')
## 事件
### on
事件监听
#### 参数
`eventName` {string} 事件名
`handler` {function } 事件回调函数
### off
移除事件监听
`eventName` {string} 事件名
`handler` {function } 事件回调函数
### 场景事件
#### loaded
scene 初始化完成事件scene 初始化完成添加 Layer
```javascript
scene.on('loaded', () => {});
```
#### resize
地图容器变化事件
```javascript
scene.on('resize', () => {}); // 地图容器大小改变事件
```
### 地图事件
```javascript
scene.on('loaded', () => {}); //地图加载完成触发
scene.on('mapmove', () => {}); // 地图平移时触发事件
scene.on('movestart', () => {}); // 地图平移开始时触发
scene.on('moveend', () => {}); // 地图移动结束后触发,包括平移,以及中心点变化的缩放。如地图有拖拽缓动效果,则在缓动结束后触发
scene.on('zoomchange', () => {}); // 地图缩放级别更改后触发
scene.on('zoomstart', () => {}); // 缩放开始时触发
scene.on('zoomend', () => {}); // 缩放停止时触发
```
### 鼠标事件
```javascript
scene.on('click', (ev) => {}); // 鼠标左键点击事件
scene.on('dblclick', (ev) => {}); // 鼠标左键双击事件
scene.on('mousemove', (ev) => {}); // 鼠标在地图上移动时触发
scene.on('mousewheel', (ev) => {}); // 鼠标滚轮开始缩放地图时触发
scene.on('mouseover', (ev) => {}); // 鼠标移入地图容器内时触发
scene.on('mouseout', (ev) => {}); // 鼠标移出地图容器时触发
scene.on('mouseup', (ev) => {}); // 鼠标在地图上单击抬起时触发
scene.on('mousedown', (ev) => {}); // 鼠标在地图上单击按下时触发
scene.on('contextmenu', (ev) => {}); // 鼠标右键单击事件
scene.on('dragstart', (ev) => {}); //开始拖拽地图时触发
scene.on('dragging', (ev) => {}); // 拖拽地图过程中触发
scene.on('dragend', (ev) => {}); //停止拖拽地图时触发。如地图有拖拽缓动效果,则在拽停止,缓动开始前触发
```