ol/Feature.js
父类
ol/Object-BaseObject
主要功能
矢量要素,有geometry和其他的属性。
可以用setStyle设置样式,或者使用layer的样式。
所有的属性会被设置为基础属性,可以被get/set到。
feature都有一个单独的geometry,可以用setGeometry和getGeometry,或者用geometry参数指定。
如果想要使用另外一个geometry渲染,使用setGeometryName改变默认渲染的geometry名。
参数:Feature({})
参数 | 类型 | 说明 |
---|---|---|
geometryOrProperties | Geometry Object.<string, *> |
geometry或者其他属性 |
方法
函数名 | 参数 | 源码 | 返回值类型 | 功能 |
---|---|---|---|---|
getGeometry() | 无 | Feature.js, line 174 | {Geometry | undefined} |
/**
* @module ol/Feature
*/
import BaseObject from './Object.js';
import EventType from './events/EventType.js';
import {
assert} from './asserts.js';
import {
listen, unlistenByKey} from './events.js';
/**
* @typedef {typeof Feature|typeof import("./render/Feature.js").default} FeatureClass
*/
/**
* @typedef {Feature<import("./geom/Geometry.js").default>|import("./render/Feature.js").default} FeatureLike
*/
/***
* @template Return
* @typedef {import("./Observable").OnSignature<import("./Observable").EventTypes, import("./events/Event.js").default, Return> &
* import("./Observable").OnSignature<import("./ObjectEventType").Types|'change:geometry', import("./Object").ObjectEvent, Return> &
* import("./Observable").CombinedOnSignature<import("./Observable").EventTypes|import("./ObjectEventType").Types
* |'change:geometry', Return>} FeatureOnSignature
*/
/***
* @template Geometry
* @typedef {Object<string, *> & { geometry?: Geometry }} ObjectWithGeometry
*/
/**
* @classdesc
* A vector object for geographic features with a geometry and other
* attribute properties, similar to the features in vector file formats like
* GeoJSON.
*
* Features can be styled individually with `setStyle`; otherwise they use the
* style of their vector layer.
*
* Note that attribute properties are set as {@link module:ol/Object} properties on
* the feature object, so they are observable, and have get/set accessors.
*
* Typically, a feature has a single geometry property. You can set the
* geometry using the `setGeometry` method and get it with `getGeometry`.
* It is possible to store more than one geometry on a feature using attribute
* properties. By default, the geometry used for rendering is identified by
* the property name `geometry`. If you want to use another geometry property
* for rendering, use the `setGeometryName` method to change the attribute
* property associated with the geometry for the feature. For example:
*
* ```js
*
* import Feature from 'ol/Feature';
* import Polygon from 'ol/geom/Polygon';
* import Point from 'ol/geom/Point';
*
* var feature = new Feature({
* geometry: new Polygon(polyCoords),
* labelPoint: new Point(labelCoords),
* name: 'My Polygon'
* });
*
* // get the polygon geometry
* var poly = feature.getGeometry();
*
* // Render the feature as a point using the coordinates from labelPoint
* feature.setGeometryName('labelPoint');
*
* // get the point geometry
* var point = feature.getGeometry();
* ```
*
* @api
* @template {import("./geom/Geometry.js").default} Geometry
*/
class Feature extends BaseObject {
/**
* @param {Geometry|ObjectWithGeometry<Geometry>} [opt_geometryOrProperties]
* You may pass a Geometry object directly, or an object literal containing
* properties. If you pass an object literal, you may include a Geometry
* associated with a `geometry` key.
*/
constructor(opt_geometryOrProperties) {
super();
/***
* @type {FeatureOnSignature<import("./Observable.js").OnReturn>}
*/
this.on;
/***
* @type {FeatureOnSignature<import("./Observable.js").OnReturn>}
*/
this.once