Feature 类型
在 OpenLayers 中,Feature(要素)是表示地图上地理实体的核心对象,它结合了几何形状(Geometry)和属性数据(Attributes),是地图上可视化和交互的基本单元。下面详细介绍 OpenLayers 中的 Feature 类型。
OpenLayers 支持多种几何类型,常用的有:
- 
Point:点 - 
LineString:线 - 
Polygon:面 - 
MultiPoint:多点 - 
MultiLineString:多线 - 
MultiPolygon:多面 - 
Circle:圆 - 
GeometryCollection:几何集合 
Feature 的常见方法:
| 方法 | 描述 | 
|---|---|
getId() | 获取要素的唯一标识符 | 
setId(id) | 设置要素的唯一标识符 | 
get(key) | 获取指定键的属性值 | 
set(key, value) | 设置属性值 | 
setProperties(props) | 批量设置属性 | 
getGeometry() | 获取要素的几何对象 | 
setGeometry(geom) | 设置要素的几何对象 | 
getStyle() | 获取要素的样式(或样式函数) | 
setStyle(style) | 设置要素的样式(可以是样式对象或返回样式的函数) | 
on(event, listener) | 监听要素事件(如 change、propertychange) | 
创建 Feature 对象
创建点要素(Point)
import Feature from 'ol/Feature';
import Point from 'ol/geom/Point';
const pointFeature = new Feature({
    geometry: new Point([116.39, 39.9]), // 坐标:[经度, 纬度]
    name: '北京市',
    population: 21540000
});
创建线要素(LineString)
import LineString from 'ol/geom/LineString';
const lineFeature = new Feature({
    geometry: new LineString([
        [116.39, 39.9],
        [121.47, 31.23],
        [113.27, 23.13]
    ]),
    name: '主要城市连接线'
});
创建面要素(Polygon)
import Polygon from 'ol/geom/Polygon';
const polygonFeature = new Feature({
    geometry: new Polygon([[
        [116.39, 39.9],
        [121.47, 31.23],
        [113.27, 23.13],
        [116.39, 39.9] // 闭合环
    ]]),
    name: '三角形区域',
    area: 10000 // 面积(示例属性)
});
Feature 的属性操作
获取和设置属性
// 获取属性
const name = pointFeature.get('name'); // "北京市"
// 设置属性
pointFeature.set('population', 22000000);
pointFeature.setProperties({
    population: 22000000,
    capital: true
});
获取几何形状
const geometry = pointFeature.getGeometry(); // 返回 Point 对象
const type = geometry.getType(); // 返回 "Point"
const coordinates = geometry.getCoordinates(); // 返回 [116.39, 39.9]
const features = source.getFeatures(); // 获取所有要素
const featureAtCoordinate = source.getFeaturesAtCoordinate([116.39, 39.9]);