Constructor
new SpatialOperator(type, extent, param1, param2)
공간연산 객체를 생성한다.
Example
// Tracker를 설정한다.
tracker = new Tracker(map);
tracker.setStyle([255, 173, 58, 1.0], 3, [128, 128, 128, 0.2]);
// 사각형 영역으로 Tracker를 설정하고 영역을 반환 받는다.
tracker.select('rectangle', true, function (extent, param1, param2) {
//현재 지도 해상도를 얻는다.
var resolution = window.map.getView().getResolution();
//영역 검색을 위해 10px 버퍼를 준다.
var bufferExtend = [extent[0] - resolution * 10, extent[1] - resolution * 10, extent[2] + resolution * 10, extent[3] + resolution * 10];
//버퍼 영역을 기준으로 OL 객체를 검색한다.
var selectFeature = [], extentFeature = olSource.getFeaturesInExtent(bufferExtend);
//객체 표시상태가 true인 객체만 필터링한다.
selectFeature = extentFeature.filter(feature => feature.get('visible') == true);
//트래커 속성정보를 기준으로 공간연산 객체를 생성한다.
var spatialOperator = new SpatialOperator(type, extent, param1, param2);
if (selectFeature.length > 0) {
var center = selectFeature[0].getGeometry().getCoordinates();
var width = resolution * iconScale * iconSize[0];
var height = resolution * iconScale * iconSize[1];
var iconExtend = [center[0] - width, center[1] - width, center[0] + height, center[1] + height];
//iconExtend 내에 Intersects 여부를 조사한다.
if (spatialOperator.intersects('rectangle', iconExtend)) {
console.log(selectFeature[i].get('properties')['SIDC']);
}
//OLFeature에 대한 intersects 여부를 조사한다.
else if (spatialOperator.intersectsOLFeature(selectFeature[i])) {
console.log(selectFeature[i].get('properties')['SIDC']);
}
}
}
Parameters:
Name | Type | Description |
---|---|---|
type |
number | point, line, rectangle, circle, polygon 문자열로 설정 |
extent |
array | [minx, miny, maxx, maxy] 배열형식으로 영역값 설정 |
param1 |
object | type에 따라 좌표열 설정 |
param2 |
number | type이 circle일 경우 반지름 설정 |
Methods
intersects(type, extent, param1, param2) → {bool}
각 타입별 정보로 기반으로 intersects 여부를 조사한다.
Example
if (spatialOperator.intersects('rectangle', iconExtend)) {
console.log(selectFeature[i]);
}
Parameters:
Name | Type | Description |
---|---|---|
type |
number | point, line, rectangle, circle, polygon 문자열로 설정 |
extent |
array | [minx, miny, maxx, maxy] 배열형식으로 영역값 설정 |
param1 |
object | type에 따라 좌표열 설정 |
param2 |
number | type이 circle일 경우 반지름 설정 |
Returns:
intersects 여부 반환
- Type
- bool
intersectsOLFeature(olFeature) → {bool}
OLFeature에 대한 intersects 여부를 조사한다.
Example
spatialOperator.intersectsOLFeature(selectFeature[i]);
Parameters:
Name | Type | Description |
---|---|---|
olFeature |
object |
Returns:
intersects 여부 반환
- Type
- bool