2020-01-17 11:48:31 +08:00
|
|
|
|
---
|
|
|
|
|
title: Marker 图层
|
|
|
|
|
order: 3
|
|
|
|
|
---
|
|
|
|
|
|
2020-01-30 23:43:27 +08:00
|
|
|
|
MarkerLayer 是 Marker 的升级版,Marker 是独立的地图标注,MarkerLayer 则是统一管理大量的 Marker 数据。
|
2020-01-17 11:48:31 +08:00
|
|
|
|
|
|
|
|
|
**技术差异**
|
|
|
|
|
|
2020-01-30 23:43:27 +08:00
|
|
|
|
- Marker Dom 绘制一个地图元素
|
|
|
|
|
- MarkerLayer 统一管理多个 DomMarker
|
2020-01-17 11:48:31 +08:00
|
|
|
|
- PointLayer 通过 WebGL 绘制元素。
|
|
|
|
|
|
|
|
|
|
**功能差异**
|
|
|
|
|
|
2020-01-30 23:43:27 +08:00
|
|
|
|
- MarkerLayer 元素的自定义性比较强,任何 HTML+ CSS 的组合都可以绘制在地图上。
|
|
|
|
|
- PointLayer 自定义性比较弱,实现成本比较高,优势可以绘制大量的数据,性能比较好。
|
2020-01-17 11:48:31 +08:00
|
|
|
|
|
|
|
|
|
## 使用
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
import { Marker, MarkerLayer } from '@antv/l7';
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 构造函数
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
const markerLayer = new MarkerLayer(option);
|
|
|
|
|
|
|
|
|
|
// 调用 addMarker方法 将多个Marker添加到Layer
|
|
|
|
|
|
|
|
|
|
scene.addMarkerLayer(markerLayer);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### option
|
|
|
|
|
|
2020-01-20 18:06:02 +08:00
|
|
|
|
- cluster 聚合 `boolean` 默认 `false`
|
2020-01-17 11:48:31 +08:00
|
|
|
|
|
|
|
|
|
- clusterOption 聚合配置
|
2020-01-27 11:27:29 +08:00
|
|
|
|
|
|
|
|
|
- field `string` 聚合统计字段
|
|
|
|
|
- method `sum| max| min| mean`
|
2020-01-20 18:06:02 +08:00
|
|
|
|
- element `function` 通过回调函数设置聚合 Marker 的样式,返回 dom 元素
|
2020-01-27 17:10:29 +08:00
|
|
|
|
|
2020-01-28 21:53:15 +08:00
|
|
|
|
参数:feature
|
2020-01-27 17:10:29 +08:00
|
|
|
|
|
2020-01-28 21:53:15 +08:00
|
|
|
|
- point_count 默认 聚合元素个数
|
|
|
|
|
- clusterData `Array` 聚合节点的原始数据
|
|
|
|
|
- point_sum 聚合求和 根据 field 和 method 计算
|
|
|
|
|
- point_max 聚合最大值 根据 field 和 method 计算
|
|
|
|
|
- point_min 聚合最小值 根据 field 和 method 计算
|
|
|
|
|
- point_mean 聚合平均值 根据 field 和 method 计算
|
2020-01-17 11:48:31 +08:00
|
|
|
|
|
|
|
|
|
### 方法
|
|
|
|
|
|
|
|
|
|
#### addMarker
|
|
|
|
|
|
|
|
|
|
参数
|
|
|
|
|
|
2020-01-20 18:06:02 +08:00
|
|
|
|
- marker `IMarker` 需要添加的 Marker
|
2020-01-17 11:48:31 +08:00
|
|
|
|
|
|
|
|
|
添加 Marker
|
|
|
|
|
|
|
|
|
|
通过 Marker 对象实例化一个 Marker
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
const marker = new Marker().setLnglat(); // 添加进Marker必须设置经纬度才能添加
|
|
|
|
|
markerLayer.addMarker(marker);
|
|
|
|
|
```
|
|
|
|
|
|
2020-01-27 11:27:29 +08:00
|
|
|
|
为 Marker 添加属性信息,
|
|
|
|
|
|
|
|
|
|
如果聚合参数设置统计配置项 `field| method`需要为 Marker 添加属性信息
|
|
|
|
|
|
|
|
|
|
通过 Marker 的 extData[配置项](./marker#option)设置 Marker 属性信息
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
const marker = new Marker({
|
|
|
|
|
extData: nodes.features[i].properties,
|
|
|
|
|
}).setLnglat({
|
|
|
|
|
lng: coordinates[0],
|
|
|
|
|
lat: coordinates[1],
|
|
|
|
|
});
|
|
|
|
|
```
|
|
|
|
|
|
2020-01-17 11:48:31 +08:00
|
|
|
|
#### removeMarker
|
|
|
|
|
|
|
|
|
|
从 MarkerLayer 移除 Marker
|
|
|
|
|
|
|
|
|
|
#### getMarkers
|
|
|
|
|
|
|
|
|
|
获取 MarkerLayer 中的所有 Marker
|
|
|
|
|
|
|
|
|
|
#### clear
|
|
|
|
|
|
|
|
|
|
清除掉所有的 Marker
|
|
|
|
|
|
|
|
|
|
####
|
|
|
|
|
|
|
|
|
|
### Scene
|
|
|
|
|
|
|
|
|
|
#### addMarkerLayer
|
|
|
|
|
|
|
|
|
|
添加 MarkerLayer
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
scene.addMarkerLayer(layer);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### removeMarkerLayer
|
|
|
|
|
|
|
|
|
|
移除 MarkerLayer
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
scene.removeMarkerLayer(layer);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### demo 地址
|
|
|
|
|
|
|
|
|
|
[markerLayer ](../../../examples/point/marker#markerlayer)
|
|
|
|
|
|
|
|
|
|
[markerLayer 聚合](../../../examples/point/marker#clustermarker)
|